W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Solr允許配置角色來(lái)控制用戶(hù)對(duì)系統(tǒng)的訪問(wèn)。
這是通過(guò)分配給用戶(hù)的基于規(guī)則的權(quán)限定義來(lái)完成的。這些角色是完全可自定義的,并且提供了限制對(duì)特定集合、請(qǐng)求處理程序、請(qǐng)求參數(shù)和請(qǐng)求方法的訪問(wèn)的能力。
如果您創(chuàng)建了角色,則可以將這些角色用于任何身份驗(yàn)證插件或自定義身份驗(yàn)證插件。您只需確保使用您的身份驗(yàn)證系統(tǒng)提供的適當(dāng)用戶(hù) ID 來(lái)配置角色到用戶(hù)(role-to-user)的映射。
一旦通過(guò)API定義,角色就存儲(chǔ)在security.json中。
必須在 security.json 中啟用該插件。此文件以及將其放置到系統(tǒng)中的位置在“使用security.json啟用插件”一節(jié)中進(jìn)行了詳細(xì)介紹。
這個(gè)文件有兩個(gè)部分,即authentication(身份驗(yàn)證)部分和authorization(授權(quán))部分。該authentication部分存儲(chǔ)有關(guān)用于身份驗(yàn)證的類(lèi)的信息。
該authorization部分與基本身份驗(yàn)證無(wú)關(guān),但是是一個(gè)單獨(dú)的授權(quán)插件,旨在支持細(xì)粒度(fine-grained)的用戶(hù)訪問(wèn)控制。創(chuàng)建security.json時(shí),可以將權(quán)限添加到文件中,也可以使用下面描述的授權(quán)API在需要時(shí)添加它們。
此示例security.json顯示了基本身份驗(yàn)證插件如何與此授權(quán)插件配合使用:
{
"authentication":{
"class":"solr.BasicAuthPlugin", 【1】
"blockUnknown": true, 【2】
"credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="} 【3】
},
"authorization":{
"class":"solr.RuleBasedAuthorizationPlugin", 【4】
"permissions":[{"name":"security-edit",
"role":"admin"}], 【5】
"user-role":{"solr":"admin"} 【6】
}}
此示例中定義了以下幾項(xiàng)內(nèi)容(對(duì)于上述代碼中的數(shù)字):
'blockUnknown'
為false(或者完全刪除)如果您想讓未經(jīng)驗(yàn)證的請(qǐng)求通過(guò)。但是,如果一個(gè)特定的資源受到規(guī)則的保護(hù),它們將被拒絕,并且會(huì)有401錯(cuò)誤。每個(gè)角色由一個(gè)或多個(gè)權(quán)限組成,這些權(quán)限定義用戶(hù)被允許執(zhí)行的操作。每個(gè)權(quán)限都由幾個(gè)定義允許的活動(dòng)的屬性組成。有一些預(yù)定義的權(quán)限不能被修改。
查詢(xún)權(quán)限是為了在security.json顯示它們。匹配的第一個(gè)權(quán)限適用于每個(gè)用戶(hù),所以最嚴(yán)格的權(quán)限應(yīng)該在列表的頂部。權(quán)限順序可以通過(guò)授權(quán)API的參數(shù)進(jìn)行控制,如下所述。
有幾個(gè)預(yù)先定義的權(quán)限。它們具有固定的默認(rèn)值,不能修改,并且無(wú)法添加新屬性。要使用這些屬性,只需定義一個(gè)包含此權(quán)限的角色,然后將用戶(hù)分配給該角色。
預(yù)定義的權(quán)限是:
/admin/authorization:使用一組命令來(lái)創(chuàng)建權(quán)限,將權(quán)限映射到角色,并將角色映射到用戶(hù)。
三個(gè)命令控制管理權(quán)限:
如果權(quán)限不在上面的預(yù)定義權(quán)限列表中,則需要?jiǎng)?chuàng)建權(quán)限。
可以使用幾個(gè)屬性來(lái)定義您的自定義權(quán)限。
權(quán)限的名稱(chēng)。只有在預(yù)定義權(quán)限的情況下才需要。
權(quán)限將應(yīng)用到的集合。
當(dāng)允許的路徑是特定于集合的路徑時(shí)(例如設(shè)置權(quán)限以允許使用Schema API時(shí)),省略集合屬性將允許為所有集合定義的路徑或方法。但是,如果路徑是非集合特定的路徑(如Collections API),則集合值必須為null
。默認(rèn)值是*(所有集合)。
請(qǐng)求處理程序名稱(chēng),如/update
或者 /select
。支持通配符,以適應(yīng)所有路徑(如,/update/*
)。
允許此權(quán)限的HTTP方法。您可以只允許GET請(qǐng)求,或者有一個(gè)允許PUT和POST請(qǐng)求的角色。該屬性允許的方法值是GET,POST,PUT,DELETE和HEAD。
請(qǐng)求參數(shù)的名稱(chēng)和值。如果所有的請(qǐng)求參數(shù)都要匹配,那么這個(gè)屬性可以省略,但是如果定義的話(huà)只會(huì)限制訪問(wèn)提供的值。
例如,此屬性可用于限制角色允許使用Collections API執(zhí)行的操作。如果只允許角色執(zhí)行LIST或CLUSTERSTATUS請(qǐng)求,則可以按如下方式進(jìn)行定義:
{"params": {
"action": ["LIST", "CLUSTERSTATUS"]
}
}
參數(shù)的值可以是簡(jiǎn)單的字符串,也可以是正則表達(dá)式。使用前綴REGEX:
來(lái)使用正則表達(dá)式匹配而不是字符串標(biāo)識(shí)匹配
如果命令LIST和CLUSTERSTATUS不區(qū)分大小寫(xiě),上面的例子應(yīng)該如下:
{"params": {
"action": ["REGEX:(?i)LIST", "REGEX:(?i)CLUSTERSTATUS"]
}
}
該屬性允許排序權(quán)限。這個(gè)屬性的值是這個(gè)新權(quán)限應(yīng)該放在security.json
之前的權(quán)限的索引。該索引按照它們創(chuàng)建的順序自動(dòng)分配。
授予此權(quán)限的角色的名稱(chēng)。此名稱(chēng)將用于將用戶(hù)標(biāo)識(shí)映射到角色以授予這些權(quán)限。該值可以是通配符,如(*
),這意味著任何用戶(hù)都可以,但是沒(méi)有用戶(hù)是不可以的。
下面創(chuàng)建一個(gè)名為“collection-mgr”的新權(quán)限,允許創(chuàng)建和列出集合。權(quán)限將被放置在“讀取”權(quán)限之前。還要注意,我們已經(jīng)將“集合”定義為 null,這是因?yàn)閷?duì)集合API的請(qǐng)求從來(lái)都不是特定于集合的。
curl --user solr:SolrRocks -H 'Content-type:application/json' -d '{
"set-permission": {"collection": null,
"path":"/admin/collections",
"params":{"action":["LIST", "CREATE"]},
"before": 3,
"role": "admin"}
}' http://localhost:8983/solr/admin/authorization
將所有集合的更新權(quán)限應(yīng)用于稱(chēng)為dev的角色,dev并將權(quán)限讀取到名為guest的角色:
curl --user solr:SolrRocks -H 'Content-type:application/json' -d '{
"set-permission": {"name": "update", "role":"dev"},
"set-permission": {"name": "read", "role":"guest"}
}' http://localhost:8983/solr/admin/authorization
權(quán)限可以通過(guò)列表中的索引進(jìn)行訪問(wèn)。使用/admin/authorizationAPI查看現(xiàn)有權(quán)限及其索引。
以下示例更新'role'索引3處的權(quán)限屬性:
curl --user solr:SolrRocks -H 'Content-type:application/json' -d '{
"update-permission": {"index": 3,
"role": ["admin", "dev"]}
}' http://localhost:8983/solr/admin/authorization
以下示例刪除索引3處的權(quán)限:
curl --user solr:SolrRocks -H 'Content-type:application/json' -d '{
"delete-permission": 3
}' http://localhost:8983/solr/admin/authorization
單個(gè)命令允許將角色映射到用戶(hù):
要?jiǎng)h除用戶(hù)的權(quán)限,您應(yīng)該將角色設(shè)置為null。沒(méi)有命令來(lái)刪除用戶(hù)角色。
提供給命令的值只是一個(gè)用戶(hù)ID和一個(gè)或多個(gè)用戶(hù)應(yīng)具有的角色。
例如,以下內(nèi)容將“admin”和“dev”角色授予給用戶(hù)“solr”,并從用戶(hù)ID“harry”中刪除所有角色:
curl -u solr:SolrRocks -H 'Content-type:application/json' -d '{
"set-user-role" : {"solr": ["admin","dev"],
"harry": null}
}' http://localhost:8983/solr/admin/authorization
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: