Solrのセキュリティ保護

管理UIを含むSolr APIは、信頼できない関係者に公開されるようには設計されていません。信頼できるコンピューターと人だけがアクセスを許可されるようにファイアウォールを調整してください。このため、プロジェクトでは、例えば、管理UIのXSSの問題をセキュリティ脆弱性とは見なしません。ただし、このような問題をJIRAで報告していただくようにお願いします。

Solrをセキュリティ保護する方法を計画する際には、利用可能な機能やアプローチのうち、どれが自分に最適かを検討する必要があります。

TLS(SSL)証明書による暗号化

Solrとの間、およびSolrノード間のトラフィックを暗号化することで、ネットワーク上で機密データが漏洩するのを防ぎます。TLSは、認証を使用する際にクレデンシャルスニッフィングを防ぐための要件でもあります。

詳細については、「SSLの有効化」のセクションを参照してください。

認証と承認

管理UIの「セキュリティUI」画面を使用して、ユーザー、役割、権限を管理します。

security.jsonファイルの操作方法については、「認証と承認の設定」のセクションを参照してください。

認証プラグイン

認証により、ユーザーのIDを確実に把握できます。Solrに付属する認証プラグインは次のとおりです。

基本認証プラグイン

Kerberos認証プラグイン

JWT認証プラグイン

証明書認証プラグイン

Hadoop認証プラグイン

承認プラグイン

承認により、必要な役割/権限を持つユーザーのみが特定のリソースにアクセスできるようになります。Solrに付属する承認プラグインは次のとおりです。

ルールベース承認プラグイン

外部役割ルールベース承認プラグイン

監査ログ

監査ログは、管理APIへのアクセスを拒否されたユーザーなど、クラスタへの着信リクエストの監査証跡を記録します。監査ログの詳細、および監査ロガープラグインの実装方法については、「監査ログ」のセクションを参照してください。

IPアクセス制御

環境変数またはsolr.in.sh/solr.in.cmdSOLR_IP_ALLOWLIST/SOLR_IP_DENYLISTを設定することにより、特定のホストへのネットワークアクセスを制限します。

# Allow IPv4/IPv6 localhost, the 192.168.0.x IPv4 network, and 2000:123:4:5:: IPv6 network.
SOLR_IP_ALLOWLIST="127.0.0.1, [::1], 192.168.0.0/24, [2000:123:4:5::]/64"
# Explicitly deny access to two problematic hosts.
SOLR_IP_DENYLIST="192.168.0.3, 192.168.0.4"

ZooKeeperトラフィックの保護

ZooKeeperはSolrCloudクラスタの中核となる重要な部分であり、そのコンテンツを保護する方法については、「ZooKeeperアクセス制御」のセクションで説明します。

ネットワーク構成

管理者は、本番環境への移行における重要なステップとして、セキュリティ設定を慎重に検討する必要があります。Solrは、ユーザーのセキュリティニーズを満たすために、すぐに使用できる多くの機能を提供します。認証と承認は、さまざまなセキュリティプラグインを使用して設定でき、プライバシーはSSL/TLSを有効にすることで強化でき、(SolrCloudでは)ZooKeeperデータは、不正な読み取りと書き込みを防ぐためにACLルールで保護できます。

これらの対策や他の対策を講じた場合でも、Solrは常にファイアウォールで保護することを強くお勧めします。Solrは、オープンなインターネットに公開されるようには設計されていません。

Solrは、厳密に必要なネットワークインターフェースのみをリッスンするように強く推奨されます。管理者が意図せずにSolrを広範囲に公開することを防ぐため、Solrはデフォルトでループバックインターフェース("127.0.0.1")のみをリッスンします。ほとんどのデプロイメントでは、他のボックスから到達できるように、この値を制限の少ないものに変更する必要があります。これは、環境の「includeスクリプト」(solr.in.shまたはsolr.in.cmd)でSOLR_JETTY_HOST値を設定することで実行できます。

 ----
 SOLR_JETTY_HOST="0.0.0.0"
 ----

同じ設定は、-Dsolr.jetty.hostシステムプロパティとしても利用可能です。

Solrとともに実行される場合、組み込みZookeeperについても同様です。デフォルトでは、組み込みZookeeperはループバックインターフェース("127.0.0.1")のみをリッスンします。バインドホストは、環境の「includeスクリプト」(solr.in.shまたはsolr.in.cmd)のSOLR_ZK_EMBEDDED_HOST値を介して制御されます。

 ----
 SOLR_ZK_EMBEDDED_HOST="0.0.0.0"
 ----

同じ設定は、-Dsolr.zk.embedded.hostシステムプロパティとしても利用可能です。