W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Solr包括一些隨時(shí)可用的插件,并且可以使用下面描述的認(rèn)證和授權(quán)框架來(lái)開發(fā)額外的插件。
無(wú)論是在 SolrCloud 模式下還是在獨(dú)立模式下運(yùn)行, 所有的身份驗(yàn)證和授權(quán)插件都可以與 Solr 一起使用。所有身份驗(yàn)證和授權(quán)配置(包括用戶和權(quán)限規(guī)則)都存儲(chǔ)在名為“security.json”的文件中。在獨(dú)立模式下使用Solr時(shí),該文件必須位于$SOLR_HOME目錄(通常為server/solr)中。當(dāng)使用SolrCloud時(shí),這個(gè)文件必須位于ZooKeeper中。
以下部分描述如何啟用security.json插件并將其放置在適合您的操作模式的位置。
初始化任何類型的安全性插件所需的所有信息都存儲(chǔ)在一個(gè)security.json文件中。該文件包含2個(gè)部分,其中每個(gè)部分用于身份驗(yàn)證和授權(quán)。
示例security.json
{
"authentication" : {
"class": "class.that.implements.authentication"
},
"authorization": {
"class": "class.that.implements.authorization"
}
}
在Solr實(shí)例出現(xiàn)之前,該/security.json文件需要位于適當(dāng)?shù)奈恢?,所以Solr在啟用安全插件的情況下啟動(dòng)。有關(guān)如何執(zhí)行此操作的信息,請(qǐng)參閱下面的 "使用Solr中的security.json" 一節(jié)。
根據(jù)所使用的插件,其他信息將被存儲(chǔ)在security.json,例如用戶信息或創(chuàng)建角色和權(quán)限的規(guī)則。這些信息是通過(guò)Solr提供的每個(gè)插件的API添加的,或者在自定義插件的情況下,由您設(shè)計(jì)的方法添加。
這是一個(gè)更詳細(xì)的security.json例子。在這里,啟用了基本身份驗(yàn)證和基于規(guī)則的授權(quán)插件,并添加了一些數(shù)據(jù):
{
"authentication":{
"class":"solr.BasicAuthPlugin",
"credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}
},
"authorization":{
"class":"solr.RuleBasedAuthorizationPlugin",
"permissions":[{"name":"security-edit",
"role":"admin"}],
"user-role":{"solr":"admin"}
}}
在配置 Solr 使用身份驗(yàn)證或授權(quán)插件時(shí),您需要將security.json文件上傳到ZooKeeper。以下的命令會(huì)在上傳文件時(shí)寫入文件 - 您也可以上傳已經(jīng)在本地創(chuàng)建的文件。
>server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd put /security.json
'{"authentication": {"class": "org.apache.solr.security.KerberosPlugin"}}'
請(qǐng)注意,這個(gè)例子定義了用于身份驗(yàn)證的 KerberosPlugin。您將需要根據(jù)您所使用的插件修改本部分。
這個(gè)例子還定義了命令行上的security.json,但是您也可以在本地定義一個(gè)文件并把它上傳到ZooKeeper。
注意:根據(jù)您使用的身份驗(yàn)證和授權(quán)插件,您可能有存儲(chǔ)在security.json
中的用戶信息。如果是這樣,我們強(qiáng)烈建議您在ZooKeeper節(jié)點(diǎn)中實(shí)施訪問(wèn)控制。有關(guān)如何啟用此功能的信息, 可在 "ZooKeeper訪問(wèn)控制" 一節(jié)中獲得。
一旦security.json上傳到ZooKeeper,您應(yīng)該使用適當(dāng)?shù)腁PI來(lái)更新您使用的插件。您可以手動(dòng)對(duì)其進(jìn)行編輯,但必須注意刪除任何版本數(shù)據(jù),以便在所有ZooKeeper節(jié)點(diǎn)上正確更新。版本數(shù)據(jù)位于security.json文件的末尾,并以字母“v”后面跟著一個(gè)數(shù)字,例如:{"v":138}。
在獨(dú)立模式下運(yùn)行Solr時(shí),您需要?jiǎng)?chuàng)建security.json文件并將其放在您安裝的 $SOLR_HOME 目錄中(這與您通常所在的solr.xml的位置相同并且通常為server/solr)。
如果您正在使用Legacy Scaling 和 Distribution,則需要在集群的每個(gè)節(jié)點(diǎn)上放置security.json。
您可以使用身份驗(yàn)證和授權(quán)API,但是如果您使用舊版縮放模型,則需要分別在每個(gè)節(jié)點(diǎn)上創(chuàng)建相同的API請(qǐng)求。如果您愿意,也可以手動(dòng)編輯security.json。
身份驗(yàn)證插件通過(guò)認(rèn)證傳入的請(qǐng)求進(jìn)行身份驗(yàn)證來(lái)幫助保護(hù) Solr 的端點(diǎn)。自定義插件可以通過(guò)擴(kuò)展AuthenticationPlugin類來(lái)實(shí)現(xiàn)。
身份驗(yàn)證插件由兩部分組成:
{
"authentication": {
"class": "class.that.implements.authentication",
"other_data" : "..."}
}
Solr具有以下驗(yàn)證插件的實(shí)現(xiàn):
通過(guò)擴(kuò)展AuthorizationPlugin接口,可以為Solr編寫授權(quán)插件。
{
"authorization": {
"class": "org.apache.solr.security.MockAuthorizationPlugin",
"other_data" : "..."}
}
security.json中的authorization塊中的所有內(nèi)容將在初始化期間作為映射傳遞給插件。
注意:授權(quán)插件僅在SolrCloud模式下受支持。另外,重新加載插件還不受支持,需要重啟 Solr 安裝 (也就是說(shuō),應(yīng)該重新啟動(dòng) JVM,而不是簡(jiǎn)單地重新加載內(nèi)核)。
有很多來(lái)自Solr節(jié)點(diǎn)本身的請(qǐng)求。例如,監(jiān)督節(jié)點(diǎn)、恢復(fù)線程等的請(qǐng)求。每個(gè)Authentication(身份驗(yàn)證)插件聲明它是否能夠保證節(jié)點(diǎn)間的請(qǐng)求。如果沒(méi)有,Solr將回退到使用特殊的節(jié)點(diǎn)間身份驗(yàn)證機(jī)制,其中每個(gè)Solr節(jié)點(diǎn)是超級(jí)用戶,并被其他Solr節(jié)點(diǎn)完全信任,如下所述。
當(dāng)在兩個(gè)Solr節(jié)點(diǎn)之間發(fā)生任何請(qǐng)求時(shí),使用PKIAuthenticationPlugin,并且配置的Authentication插件不希望處理節(jié)點(diǎn)間安全性。
對(duì)于每個(gè)傳出的請(qǐng)求,PKIAuthenticationPlugin添加一個(gè)特殊的標(biāo)題'SolrAuth',其中包含使用該節(jié)點(diǎn)的私鑰加密的時(shí)間戳和主體。公鑰通過(guò)API公開,任何節(jié)點(diǎn)只要需要就可以讀取。任何獲取該頭部請(qǐng)求的節(jié)點(diǎn)都會(huì)從發(fā)送方獲取公鑰并解密信息。如果它能夠解密數(shù)據(jù),則請(qǐng)求受信任。如果時(shí)間戳超過(guò)5秒,則它無(wú)效。這假定群集中不同節(jié)點(diǎn)的時(shí)鐘是同步的。
超時(shí)時(shí)間可通過(guò)稱為 pkiauth.ttl 的系統(tǒng)屬性進(jìn)行配置。例如,如果您希望將生存時(shí)間提高到10秒(10000毫秒),請(qǐng)使用屬性'-Dpkiauth.ttl=10000'啟動(dòng)每個(gè)節(jié)點(diǎn)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: