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