アプリケーション権限の作成または更新API
アプリケーション権限を追加または更新します。
リクエスト
POST /_security/privilege
PUT /_security/privilege
前提条件
このAPIを使用するには、次のいずれかを持っている必要があります:
manage_security
クラスター権限(またはall
のようなより大きな権限);または- リクエストで参照されているアプリケーションの「アプリケーション権限の管理」グローバル権限
説明
このAPIは権限を作成または更新します。権限を削除するには、アプリケーション権限削除APIを使用してください。
詳細については、アプリケーション権限を参照してください。
ユーザーのアプリケーション権限を確認するには、権限確認APIを使用してください。
リクエストボディ
ボディはJSONオブジェクトで、フィールドの名前はアプリケーション名であり、各フィールドの値はオブジェクトです。この内部オブジェクトのフィールドは権限の名前であり、各値は次のフィールドを含むJSONオブジェクトです:
actions
- (文字列の配列)この権限によって付与されるアクション名のリスト。このフィールドは存在しなければならず、空の配列であってはなりません。
metadata
- (オブジェクト)オプションのメタデータ。
metadata
オブジェクト内では、_
で始まるキーはシステム使用のために予約されています。
検証
- アプリケーション名
- アプリケーション名はプレフィックスから構成され、次のルールに従うオプションのサフィックスを持つことができます:
- プレフィックスは小文字のASCII文字で始まる必要があります
- プレフィックスはASCII文字または数字のみを含む必要があります
- プレフィックスは少なくとも3文字以上である必要があります
- サフィックスが存在する場合、
-
または_
のいずれかで始まる必要があります - サフィックスには次の文字を含めることはできません:
\
,/
,*
,?
,"
,<
,>
,|
,,
,*
- 名前のどの部分にも空白を含めることはできません。
- 権限名
- 権限名は小文字のASCII文字で始まり、ASCII文字と数字、および
_
,-
,.
の文字のみを含む必要があります - アクション名
- アクション名は任意の数の印刷可能なASCII文字を含むことができ、次のいずれかの文字を少なくとも1つ含む必要があります:
/
*
,:
レスポンスボディ
成功した呼び出しは、権限が作成または更新されたかどうかを示すJSON構造を返します。
例
単一の権限を追加するには、/_security/privilege/
エンドポイントにPUTまたはPOSTリクエストを送信します。例えば:
Python
resp = client.security.put_privileges(
privileges={
"myapp": {
"read": {
"actions": [
"data:read/*",
"action:login"
],
"metadata": {
"description": "Read access to myapp"
}
}
}
},
)
print(resp)
Js
const response = await client.security.putPrivileges({
privileges: {
myapp: {
read: {
actions: ["data:read/*", "action:login"],
metadata: {
description: "Read access to myapp",
},
},
},
},
});
console.log(response);
コンソール
PUT /_security/privilege
{
"myapp": {
"read": {
"actions": [
"data:read/*" ,
"action:login" ],
"metadata": {
"description": "Read access to myapp"
}
}
}
}
これらの文字列は「myapp」アプリケーション内で重要です。Elasticsearchはこれらに意味を割り当てません。 | |
ここでのワイルドカードの使用(* )は、この権限がdata:read/ で始まるすべてのアクションへのアクセスを付与することを意味します。Elasticsearchはこれらのアクションに意味を割り当てません。ただし、リクエストにdata:read/users やdata:read/settings のようなアプリケーション権限が含まれている場合、権限確認APIはワイルドカードの使用を尊重し、true を返します。 |
|
メタデータオブジェクトはオプションです。 |
コンソール-結果
{
"myapp": {
"read": {
"created": true
}
}
}
既存の権限が更新されると、created はfalseに設定されます。 |
複数の権限を追加するには、/_security/privilege/
エンドポイントにPOSTリクエストを送信します。例えば:
Python
resp = client.security.put_privileges(
privileges={
"app01": {
"read": {
"actions": [
"action:login",
"data:read/*"
]
},
"write": {
"actions": [
"action:login",
"data:write/*"
]
}
},
"app02": {
"all": {
"actions": [
"*"
]
}
}
},
)
print(resp)
Js
const response = await client.security.putPrivileges({
privileges: {
app01: {
read: {
actions: ["action:login", "data:read/*"],
},
write: {
actions: ["action:login", "data:write/*"],
},
},
app02: {
all: {
actions: ["*"],
},
},
},
});
console.log(response);
コンソール
PUT /_security/privilege
{
"app01": {
"read": {
"actions": [ "action:login", "data:read/*" ]
},
"write": {
"actions": [ "action:login", "data:write/*" ]
}
},
"app02": {
"all": {
"actions": [ "*" ]
}
}
}
成功した呼び出しは、権限が作成または更新されたかどうかを示すJSON構造を返します。
コンソール-結果
{
"app02": {
"all": {
"created": true
}
},
"app01": {
"read": {
"created": true
},
"write": {
"created": true
}
}
}