Grant API key API
他のユーザーの代わりにAPIキーを作成します。
Request
POST /_security/api_key/grant
Prerequisites
- このAPIを使用するには、
grant_api_key
またはmanage_api_key
クラスターの権限が必要です。
Description
このAPIはCreate API keysに似ていますが、APIを実行するユーザーとは異なるユーザーのためにAPIキーを作成します。
呼び出し元は、APIキーが作成されるユーザーの認証情報を持っている必要があります。そのユーザーの認証情報なしにこのAPIを使用してAPIキーを作成することはできません。サポートされているユーザー認証情報の種類は次のとおりです: ユーザー名とパスワード Elasticsearchアクセス トークン * JWT
提供された認証情報のユーザーは、オプションで[\
Request body
POSTリクエストの本文に指定できるパラメータは次のとおりです:
access_token
- (必須*, 文字列) ユーザーのElasticsearchアクセス トークンまたはJWT。両方のアクセスおよびid JWTトークンタイプがサポートされており、基盤となるJWTレルムの構成に依存します。作成されたAPIキーは、このトークンで認証されたユーザーの権限の時点スナップショットを持ちます(またはさらに制限された権限、
role_descriptors
パラメータを参照)。access_token
グラントタイプを指定する場合、このパラメータは必須です。他のグラントタイプでは無効です。 api_key
- (必須、オブジェクト) APIキーを定義します。
expiration
- (オプション、文字列) APIキーの有効期限。デフォルトでは、APIキーは決して期限切れになりません。
name
- (必須、文字列) このAPIキーの名前を指定します。
role_descriptors
- (オプション、オブジェクト) このAPIキーのロール記述子。このパラメータはオプションです。指定されていない場合、または空の配列の場合、APIキーは指定されたユーザーまたはアクセス トークンの権限の時点スナップショットを持ちます。ロール記述子を提供すると、結果の権限はAPIキーの権限とユーザーまたはアクセス トークンの権限の交差になります。ロール記述子の構造は、create API keys APIのリクエストと同じです。
metadata
- (オプション、オブジェクト) APIキーに関連付けたい任意のメタデータ。ネストされたデータ構造をサポートします。
metadata
オブジェクト内では、_
で始まるキーはシステム使用のために予約されています。
client_authentication
- (オプション、オブジェクト)
access_token
グラントタイプを使用し、JWTを提供する場合、これは必要なJWTsのクライアント認証を指定します(つまり、通常はES-Client-Authentication
リクエストヘッダーで指定されるもの)。scheme
- (必須、文字列)
ES-Client-Authentication
リクエストヘッダーで提供されるスキーム(大文字と小文字を区別)。現在、サポートされている唯一の値はSharedSecret
です。 value
- (必須、文字列)
ES-Client-Authentication
リクエストヘッダーで提供されるクライアント資格情報のスキームに続く値。たとえば、リクエストヘッダーがES-Client-Authentication: SharedSecret myShar3dS3cret
で、クライアントがJWTで直接認証する場合、ここではvalue
がmyShar3dS3cret
である必要があります。
grant_type
- (必須、文字列) グラントのタイプ。サポートされているグラントタイプは:
access_token
、password
です。access_token
- このタイプのグラントでは、Elasticsearchトークンサービスによって作成されたアクセストークン(Get tokenおよびEncrypt HTTP client communications for Elasticsearchを参照)またはJWT(JWT
access_token
またはJWTid_token
のいずれか)を提供する必要があります。 password
- このタイプのグラントでは、APIキーを作成するために必要なユーザーIDとパスワードを提供する必要があります。
password
- (必須*、文字列) ユーザーのパスワード。
password
グラントタイプを指定する場合、このパラメータは必須です。他のグラントタイプでは無効です。 username
- (必須*、文字列) ユーザーを識別するユーザー名。
password
グラントタイプを指定する場合、このパラメータは必須です。他のグラントタイプでは無効です。 run_as
- (オプション、文字列) なりすましされるユーザーの名前。
*この設定は、すべての状況で必須ではないことを示します。
Examples
Python
resp = client.security.grant_api_key(
grant_type="password",
username="test_admin",
password="x-pack-test-password",
api_key={
"name": "my-api-key",
"expiration": "1d",
"role_descriptors": {
"role-a": {
"cluster": [
"all"
],
"indices": [
{
"names": [
"index-a*"
],
"privileges": [
"read"
]
}
]
},
"role-b": {
"cluster": [
"all"
],
"indices": [
{
"names": [
"index-b*"
],
"privileges": [
"all"
]
}
]
}
},
"metadata": {
"application": "my-application",
"environment": {
"level": 1,
"trusted": True,
"tags": [
"dev",
"staging"
]
}
}
},
)
print(resp)
Js
const response = await client.security.grantApiKey({
grant_type: "password",
username: "test_admin",
password: "x-pack-test-password",
api_key: {
name: "my-api-key",
expiration: "1d",
role_descriptors: {
"role-a": {
cluster: ["all"],
indices: [
{
names: ["index-a*"],
privileges: ["read"],
},
],
},
"role-b": {
cluster: ["all"],
indices: [
{
names: ["index-b*"],
privileges: ["all"],
},
],
},
},
metadata: {
application: "my-application",
environment: {
level: 1,
trusted: true,
tags: ["dev", "staging"],
},
},
},
});
console.log(response);
Console
POST /_security/api_key/grant
{
"grant_type": "password",
"username" : "test_admin",
"password" : "x-pack-test-password",
"api_key" : {
"name": "my-api-key",
"expiration": "1d",
"role_descriptors": {
"role-a": {
"cluster": ["all"],
"indices": [
{
"names": ["index-a*"],
"privileges": ["read"]
}
]
},
"role-b": {
"cluster": ["all"],
"indices": [
{
"names": ["index-b*"],
"privileges": ["all"]
}
]
}
},
"metadata": {
"application": "my-application",
"environment": {
"level": 1,
"trusted": true,
"tags": ["dev", "staging"]
}
}
}
}
提供された資格情報のユーザー(test_admin
)は、別のユーザー(test_user
)として「実行」できます。APIキーはなりすまされたユーザー(test_user
)に付与されます。
Python
resp = client.security.grant_api_key(
grant_type="password",
username="test_admin",
password="x-pack-test-password",
run_as="test_user",
api_key={
"name": "another-api-key"
},
)
print(resp)
Js
const response = await client.security.grantApiKey({
grant_type: "password",
username: "test_admin",
password: "x-pack-test-password",
run_as: "test_user",
api_key: {
name: "another-api-key",
},
});
console.log(response);
Console
POST /_security/api_key/grant
{
"grant_type": "password",
"username" : "test_admin",
"password" : "x-pack-test-password",
"run_as": "test_user",
"api_key" : {
"name": "another-api-key"
}
}
資格情報が提供され、”run as”を実行するユーザー。 | |
上記のユーザーの資格情報 | |
APIキーが作成されるなりすまされたユーザー。 |