保護 Solr

包括管理 UI 在內的任何 Solr API,都不適合暴露給不受信任的對象。請調整您的防火牆,只允許受信任的電腦和人員存取。因此,專案不會將例如管理 UI XSS 問題視為安全性漏洞。不過,我們仍然請您在 JIRA 中回報這類問題。

在規劃如何保護 Solr 時,您應該考慮哪些可用的功能或方法適合您

使用 TLS (SSL) 憑證加密

加密往返 Solr 以及 Solr 節點之間的流量,可防止敏感資料在網路上洩漏。TLS 通常也是使用身分驗證時防止憑證嗅探的要求。

詳細資訊請參閱啟用 SSL一節。

身份驗證和授權

使用管理 UI 中的安全性 UI畫面來管理使用者、角色和權限。

請參閱設定身份驗證和授權一節,以瞭解如何使用 security.json 檔案。

身份驗證外掛程式

身份驗證可確保您知道使用者的身分。Solr 隨附的身份驗證外掛程式包括

基本身份驗證外掛程式

Kerberos 身份驗證外掛程式

JWT 身份驗證外掛程式

憑證身份驗證外掛程式

Hadoop 身份驗證外掛程式

授權外掛程式

授權可確保只有具有必要角色/權限的使用者才能存取任何給定的資源。Solr 隨附的授權外掛程式包括

基於規則的授權外掛程式

外部角色基於規則的授權外掛程式

稽核記錄

稽核日誌會記錄傳入您叢集的請求稽核追蹤,例如使用者被拒絕存取管理 API。如需深入了解稽核日誌以及如何實作稽核日誌外掛程式,請參閱稽核日誌章節。

IP 存取控制

透過環境變數或在 solr.in.sh/solr.in.cmd 中設定 SOLR_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 中)可以使用 ACL 規則保護 ZooKeeper 資料,以防止未經授權的讀取和寫入。

即使採取了這些或其他措施,強烈建議始終使用防火牆保護 Solr。Solr 並非設計為暴露在開放網路上。

也強烈建議 Solr 僅監聽嚴格要求的網路介面。為了防止管理員無意中更廣泛地暴露 Solr,Solr 預設僅監聽迴路介面 ("127.0.0.1")。大多數部署需要將此值更改為限制較少的值,以便可以從其他伺服器存取。可以透過在環境的「包含腳本」(solr.in.shsolr.in.cmd) 中設定 SOLR_JETTY_HOST 值來完成此操作。

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

相同的設定也可用作 -Dsolr.jetty.host 系統屬性。

如果嵌入式 Zookeeper 與 Solr 一起執行,情況也是如此。預設情況下,嵌入式 Zookeeper 僅監聽迴路介面 ("127.0.0.1")。繫結主機是透過環境的「包含腳本」(solr.in.shsolr.in.cmd) 中的 SOLR_ZK_EMBEDDED_HOST 值控制的。

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

相同的設定也可用作 -Dsolr.zk.embedded.host 系統屬性。