Hadoop身份驗證插件

2018-12-19 14:30 更新

Hadoop身份驗證插件使Solr能夠使用Hadoop身份驗證庫來保護Solr節(jié)點。

此身份驗證插件是一個精簡的包裝,它將所有功能委派給 Hadoop 身份驗證庫。庫的所有配置參數都通過插件傳遞。

這個插件在利用Hadoop身份驗證庫中的一組擴展功能或新近可用的功能方面特別有用。

請注意,Solr使用的Hadoop庫版本是定期升級的。雖然Solr將確保插件配置結構(即插件的參數名稱)的穩(wěn)定性和向后兼容性,但這些參數的值可能會根據Hadoop庫的版本而改變。有關更多詳細信息,請查看您的Solr安裝所使用的版本的Hadoop文檔。

對于一些身份驗證方案(例如Kerberos),Solr提供了身份驗證插件的本地實現。如果您需要更穩(wěn)定的設置,在配置、執(zhí)行滾動升級的能力、向后兼容性等方面,您應該考慮使用這樣的插件。請查看“身份驗證和授權插件”一節(jié),了解有關 Solr 的身份驗證插件選項概述。

有兩個插件類:

  • HadoopAuthPlugin:這可以與獨立的Solr以及具有PKI身份驗證的 Solrcloud一起用于節(jié)點間通信。
  • ConfigurableInternodeAuthHadoopPlugin:這是HadoopAuthPlugin的擴展,它允許您配置節(jié)點間通信的身份驗證方案。

提示:對于大多數 SolrCloud 或獨立的 Solr 設置,HadoopAuthPlugin 應該足夠了。

插件配置

  • class

    應該是solr.HadoopAuthPlugin或者solr.ConfigurableInternodeAuthHadoopPlugin。該參數是必需的。

  • type

    要配置的認證方案的類型。請參閱配置選項。該參數是必需的。

  • sysPropPrefix

    用于定義配置認證機制的Java系統(tǒng)屬性的前綴。此屬性是必需的。

    Java系統(tǒng)屬性的名稱是通過將配置參數名稱附加到此前綴值來定義的。例如,如果前綴是solr那么Java系統(tǒng)屬性solr.kerberos.principal定義了配置參數的值kerberos.principal

  • authConfigs

    由type屬性定義的認證方案所需的配置參數。此屬性是必需的。有關更多詳細信息,請參閱Hadoop配置選項。

  • defaultConfigs

    authConfigs屬性指定了配置參數的默認值。默認值被指定為鍵值對(即,"property-name": "default_value")的集合。

  • enableDelegationToken

    如果為true,代表令牌功能將被啟用。

  • initKerberosZk

    在連接到ZooKeeper之前啟用kerberos的初始化(如果適用)。

  • proxyUserConfigs

    為代理用戶配置基礎Hadoop認證機制。該配置表示為鍵值對(即,"property-name": "default_value")的集合。

  • clientBuilderFactory

    NO| HttpClientBuilderFactory用于Solr的內部通信的實現。只適用于ConfigurableInternodeAuthHadoopPlugin。

示例配置

使用Hadoop身份驗證插件的Kerberos身份驗證

這個例子允許您將 Solr 配置為使用 kerberos 身份驗證,類似于使用 kerberos 身份驗證插件的方式。

在查閱Hadoop認證庫的文檔后,您可以使用solr.*前綴來提供每個主機配置參數。例如,Hadoop認證庫需要一個參數kerberos.principal,它可以在啟動 solr 節(jié)點時作為一個名為 solr.kerberos.principal 的系統(tǒng)屬性提供。有關其他典型配置參數,請參閱“Kerberos身份驗證插件”部分。

請注意,這個例子使用ConfigurableInternodeAuthHadoopPlugin,因此您必須提供clientBuilderFactory實現。因此,所有的節(jié)點間通信都將使用Kerberos機制,而不是PKI身份驗證。

要設置此插件,請在security.json文件中使用以下內容。

{
    "authentication": {
        "class": "solr.ConfigurableInternodeAuthHadoopPlugin",
        "sysPropPrefix": "solr.",
        "type": "kerberos",
        "clientBuilderFactory": "org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder",
        "initKerberosZk": "true",
        "authConfigs": [
            "kerberos.principal",
            "kerberos.keytab",
            "kerberos.name.rules"
        ],
        "defaultConfigs": {
        }
    }
}

使用委托令牌的簡單身份驗證

與前面的示例類似,這是設置使用委托令牌的Solr群集的示例。請參考Hadoop認證庫文檔中的參數,或者參考Kerberos認證插件了解更多細節(jié)。請注意,此示例不使用Kerberos,并且對Solr發(fā)出的請求必須包含有效的委托令牌。

要設置此插件,請在security.json文件中使用以下內容。

{
    "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"
        }
    }
}
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號