Hadoop 驗證外掛程式
Hadoop 驗證外掛程式使 Solr 能夠使用 Hadoop 驗證程式庫來保護 Solr 節點。
此驗證外掛程式是一個簡單的包裝函式,會將所有功能委派給 Hadoop 驗證程式庫。程式庫的所有設定參數都會透過外掛程式傳遞。
此外掛程式在利用 Hadoop 驗證程式庫中擴充的功能或新推出的功能時特別有用。
請注意,Solr 使用的 Hadoop 程式庫版本會定期升級。雖然 Solr 會確保外掛程式設定的結構 (即此外掛程式的參數名稱) 的穩定性和回溯相容性,但這些參數的值可能會根據 Hadoop 程式庫的版本而變更。請檢閱此 Solr 版本使用的 v3.3.6 Hadoop 文件。
對於某些驗證方案 (例如 Kerberos),Solr 提供驗證外掛程式的原生實作。如果您在設定、執行滾動升級、回溯相容性等方面的要求更穩定,則應考慮使用其中一個外掛程式。請檢閱「設定驗證和授權」章節,以瞭解 Solr 中驗證外掛程式選項的概觀。
有兩個外掛程式類別
-
HadoopAuthPlugin
:這可以用於 SolrCloud、使用者管理和單節點安裝,以及使用 PKI 驗證進行節點間通訊的 SolrCloud。 -
ConfigurableInternodeAuthHadoopPlugin
:這是HadoopAuthPlugin
的延伸,可讓您設定節點間通訊的驗證方案。
對於大多數安裝, |
外掛程式設定
類別
-
必要
預設:無
外掛程式類別名稱。它應該是
solr.HadoopAuthPlugin
或solr.ConfigurableInternodeAuthHadoopPlugin
。 類型
-
必要
預設:無
要設定的驗證方案類型。請參閱 Hadoop 設定選項。
sysPropPrefix
-
必要
預設:無
用來定義 Java 系統屬性以設定驗證機制的字首。
Java 系統屬性的名稱是將組態參數名稱附加到此字首值來定義的。例如,如果字首是
solr
,則 Java 系統屬性solr.kerberos.principal
會定義組態參數kerberos.principal
的值。 authConfigs
-
必要
預設:無
由 type 屬性定義的驗證方案所需的組態參數。如需更多詳細資訊,請參閱 Hadoop 的組態選項。
defaultConfigs
-
選填
預設:無
由
authConfigs
屬性指定的組態參數的預設值。預設值指定為鍵值對的集合 (即"property-name": "default_value"
)。 enableDelegationToken
-
選填
預設:無
如果為
true
,將啟用委派令牌功能。有關範例,請參閱使用委派令牌的簡單驗證章節。 initKerberosZk
-
選填
預設:無
如果為
true
,將在連線到 ZooKeeper 之前初始化 Kerberos (如果適用)。 proxyUserConfigs
-
選填
預設:無
為底層 Hadoop 驗證機制設定代理使用者。此設定表示為鍵值對的集合 (即
"property-name": "default_value"
)。 clientBuilderFactory
-
選填
預設:無
用於 Solr 內部通訊的
HttpClientBuilderFactory
實作。僅適用於ConfigurableInternodeAuthHadoopPlugin
。
組態範例
使用 Hadoop 驗證外掛程式的 Kerberos 驗證
此範例讓您設定 Solr 使用 Kerberos 驗證,類似於您使用Kerberos 驗證外掛程式的方式。
在參考 Hadoop 驗證函式庫的文件後,您可以使用 solr.*
字首來提供每個主機的組態參數。
例如,Hadoop 驗證函式庫預期一個參數 kerberos.principal
,它可以在啟動 Solr 節點時作為名為 solr.kerberos.principal
的系統屬性提供。如需其他典型的組態參數,請參閱Kerberos 驗證外掛程式章節。
以下範例使用 ConfigurableInternodeAuthHadoopPlugin
,因此您必須提供 clientBuilderFactory
實作。因此,所有節點間通訊都將使用 Kerberos 機制,而不是 PKI 驗證。
此設定假設您的伺服器使用 solr
主體,並且將允許模擬來自任何其他主機的請求的任何其他使用者。為了提高安全性,請考慮設定主機清單以符合您的叢集節點。Hadoop 的代理使用者文件包含有關可用組態選項的更多詳細資訊。
{
"authentication": {
"class": "solr.ConfigurableInternodeAuthHadoopPlugin",
"sysPropPrefix": "solr.",
"type": "kerberos",
"clientBuilderFactory": "org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder",
"initKerberosZk": "true",
"enableDelegationToken": "true",
"authConfigs": [
"kerberos.principal",
"kerberos.keytab",
"kerberos.name.rules"
],
"defaultConfigs": {
},
"proxyUserConfigs": {
"proxyuser.solr.hosts": "*",
"proxyuser.solr.groups": "*"
}
}
}
對於 ConfigurableInternodeAuthHadoopPlugin ,使用者憑證代理依賴於委派令牌支援。如果沒有它,轉發的請求將使用 Solr 伺服器憑證而不是真實使用者憑證進行驗證,並且可能允許經過驗證但未經授權的使用者查詢和索引文件到您的集合中。 |
使用委派令牌的簡單驗證
與前面的範例類似,這是一個設定使用委派令牌的 Solr 叢集的範例。
如需更多詳細資訊,請參閱 Hadoop 驗證函式庫的文件中的參數,或參閱Kerberos 驗證外掛程式章節。
請注意,此範例不使用 Kerberos,並且向 Solr 發出的請求必須包含有效的委派令牌。
{
"authentication": {
"class": "solr.HadoopAuthPlugin",
"sysPropPrefix": "solr.",
"type": "simple",
"enableDelegationToken":"true",
"authConfigs": [
"delegation-token.token-kind",
"delegation-token.update-interval.sec",
"delegation-token.max-lifetime.sec",
"delegation-token.renewal-interval.sec",
"delegation-token.removal-scan-interval.sec",
"cookie.domain",
"signer.secret.provider",
"zk-dt-secret-manager.enable",
"zk-dt-secret-manager.znodeWorkingPath",
"signer.secret.provider.zookeeper.path"
],
"defaultConfigs": {
"delegation-token.token-kind": "solr-dt",
"signer.secret.provider": "zookeeper",
"zk-dt-secret-manager.enable": "true",
"token.validity": "36000",
"zk-dt-secret-manager.znodeWorkingPath": "solr/security/zkdtsm",
"signer.secret.provider.zookeeper.path": "/token",
"cookie.domain": "127.0.0.1"
}
}
}