権限API
ログインしているユーザーが指定された権限のリストを持っているかどうかを判断します。
リクエスト
GET /_security/user/_has_privileges
POST /_security/user/_has_privileges
前提条件
- すべてのユーザーはこのAPIを使用できますが、自分の権限を確認するためだけです。他のユーザーの権限を確認するには、実行者としての機能を使用する必要があります。詳細については、他のユーザーの代理でリクエストを送信するを参照してください。
説明
このAPIで指定できる権限のリストについては、セキュリティ権限を参照してください。
成功した呼び出しは、指定された各権限がユーザーに割り当てられているかどうかを示すJSON構造を返します。
リクエストボディ
cluster
- (リスト) 確認したいクラスター権限のリスト。
index
names
- (リスト) インデックスのリスト。
allow_restricted_indices
- (ブール値) 制限されたインデックスをカバーするパターンにワイルドカードまたは正規表現を使用する場合は、
true
に設定する必要があります(デフォルトはfalse
)。暗黙的に、制限されたインデックスはインデックスパターンに一致しません。なぜなら、制限されたインデックスは通常、権限が限られており、それらをパターンテストに含めると、ほとんどのテストがfalse
になるからです。制限されたインデックスがnames
リストに明示的に含まれている場合、allow_restricted_indices
の値に関係なく、権限がそれらに対してチェックされます。 privileges
- (リスト) 指定されたインデックスに対して確認したい権限のリスト。
application
application
- (文字列) アプリケーションの名前。
privileges
- (リスト) 指定されたリソースに対して確認したい権限のリスト。アプリケーション権限名またはそれらの権限によって付与されるアクションの名前のいずれかである可能性があります。
resources
- (リスト) 権限がチェックされるべきリソース名のリスト。
例
次の例は、現在のユーザーが特定のクラスター、インデックス、およびアプリケーション権限を持っているかどうかを確認します:
Python
resp = client.security.has_privileges(
cluster=[
"monitor",
"manage"
],
index=[
{
"names": [
"suppliers",
"products"
],
"privileges": [
"read"
]
},
{
"names": [
"inventory"
],
"privileges": [
"read",
"write"
]
}
],
application=[
{
"application": "inventory_manager",
"privileges": [
"read",
"data:write/inventory"
],
"resources": [
"product/1852563"
]
}
],
)
print(resp)
Js
const response = await client.security.hasPrivileges({
cluster: ["monitor", "manage"],
index: [
{
names: ["suppliers", "products"],
privileges: ["read"],
},
{
names: ["inventory"],
privileges: ["read", "write"],
},
],
application: [
{
application: "inventory_manager",
privileges: ["read", "data:write/inventory"],
resources: ["product/1852563"],
},
],
});
console.log(response);
コンソール
GET /_security/user/_has_privileges
{
"cluster": [ "monitor", "manage" ],
"index" : [
{
"names": [ "suppliers", "products" ],
"privileges": [ "read" ]
},
{
"names": [ "inventory" ],
"privileges" : [ "read", "write" ]
}
],
"application": [
{
"application": "inventory_manager",
"privileges" : [ "read", "data:write/inventory" ],
"resources" : [ "product/1852563" ]
}
]
}
次の例の出力は、ユーザー「rdeniro」が持っている権限を示しています:
コンソール-結果
{
"username": "rdeniro",
"has_all_requested" : false,
"cluster" : {
"monitor" : true,
"manage" : false
},
"index" : {
"suppliers" : {
"read" : true
},
"products" : {
"read" : true
},
"inventory" : {
"read" : true,
"write" : false
}
},
"application" : {
"inventory_manager" : {
"product/1852563" : {
"read": false,
"data:write/inventory": false
}
}
}
}