APIキー情報取得API
1つまたは複数のAPIキーに関する情報を取得します。
リクエスト
GET /_security/api_key
前提条件
- このAPIを使用するには、少なくとも
manage_own_api_key
またはread_security
クラスター権限を持っている必要があります。manage_own_api_key
権限のみを持っている場合、このAPIは所有しているAPIキーのみを返します。manage_own_api_key
権限を持つAPIキーで認証しても、認証されたユーザー自身のキーを取得することはできません。代わりに、基本的な資格情報でユーザーを認証してください。read_security
、manage_api_key
、またはそれ以上の権限(manage_security
を含む)を持っている場合、このAPIは所有権に関係なくすべてのAPIキーを返します。
説明
APIキー作成によって作成されたAPIキーの情報は、このAPIを使用して取得できます。
パスパラメータ
次のパラメータは、GETリクエストのクエリパラメータに指定でき、APIキーの取得に関連しています:
id
- (オプション、文字列)APIキーID。このパラメータは、
name
、realm_name
、またはusername
のいずれかと一緒に使用することはできません。 name
- (オプション、文字列)APIキー名。このパラメータは、
id
、realm_name
、またはusername
のいずれかと一緒に使用することはできません。ワイルドカードを使用したプレフィックス検索をサポートしています。 realm_name
- (オプション、文字列)認証レルムの名前。このパラメータは、
id
またはname
のいずれかと一緒に使用することはできません。また、owner
フラグがtrue
に設定されている場合にも使用できません。 username
- (オプション、文字列)ユーザーのユーザー名。このパラメータは、
id
またはname
のいずれかと一緒に使用することはできません。また、owner
フラグがtrue
に設定されている場合にも使用できません。 owner
- (オプション、ブール値)現在認証されているユーザーが所有するAPIキーをクエリするために使用できるブールフラグ。デフォルトはfalseです。このパラメータがtrueに設定されている場合、realm_nameまたはusernameパラメータは指定できません。これらは現在認証されているものと見なされます。
with_limited_by
- (オプション、ブール値)APIキーに関連付けられた所有者ユーザーのロール記述子のスナップショットを返すためのブールフラグ。APIキーの実際の権限は、その割り当てられたロール記述子と所有者ユーザーのロール記述子の交差です(実質的にそれによって制限されます)。APIキーは、任意のAPIキーの制限されたロール記述子を取得するために
manage_api_key
以上の権限を持っている必要があります。 with_profile_uid
- (オプション、ブール値)APIキー所有者ユーザーのuser profile
uid
も取得するかどうかを決定します。存在する場合、プロファイルUIDは各APIキーのprofile_uid
レスポンスフィールドの下に返されます。デフォルトはfalse
です。 active_only
- (オプション、ブール値)現在アクティブなAPIキーをクエリするために使用できるブールフラグ。APIキーは、無効化されておらず、クエリ時に期限切れでない場合、アクティブと見なされます。
owner
やname
などの他のパラメータと一緒に指定できます。active_only
がfalse
の場合、レスポンスにはアクティブおよび非アクティブ(期限切れまたは無効化された)キーの両方が含まれます。デフォルトはfalse
です。
「id」、「name」、「username」、「realm_name」のいずれのパラメータも指定されず、「owner」がfalseに設定されている場合、ユーザーが認可されている場合はすべてのAPIキーを取得します。ユーザーが他のユーザーのAPIキーを取得する権限がない場合、エラーが返されます。
例
次のようにAPIキーを作成した場合:
Python
resp = client.security.create_api_key(
name="my-api-key",
role_descriptors={},
metadata={
"application": "myapp"
},
)
print(resp)
Js
const response = await client.security.createApiKey({
name: "my-api-key",
role_descriptors: {},
metadata: {
application: "myapp",
},
});
console.log(response);
コンソール
POST /_security/api_key
{
"name": "my-api-key",
"role_descriptors": {},
"metadata": {
"application": "myapp"
}
}
成功した呼び出しは、APIキー情報を提供するJSON構造を返します。例えば:
コンソール-結果
{
"id":"VuaCfGcBCdbkQm-e5aOx",
"name":"my-api-key",
"api_key":"ui2lp2axTNmsyakw9tvNnw",
"encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
}
次の例を使用して、IDによってAPIキーを取得できます:
Python
resp = client.security.get_api_key(
id="VuaCfGcBCdbkQm-e5aOx",
with_limited_by=True,
)
print(resp)
Js
const response = await client.security.getApiKey({
id: "VuaCfGcBCdbkQm-e5aOx",
with_limited_by: "true",
});
console.log(response);
コンソール
GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&with_limited_by=true
成功した呼び出しは、APIキーの情報を含むJSON構造を返します:
Js
{
"api_keys": [
{
"id": "VuaCfGcBCdbkQm-e5aOx",
"name": "my-api-key",
"creation": 1548550550158,
"expiration": 1548551550158,
"invalidated": false,
"username": "myuser",
"realm": "native1",
"realm_type": "native",
"metadata": {
"application": "myapp"
},
"role_descriptors": { },
"limited_by": [
{
"role-power-user": {
"cluster": [
"monitor"
],
"indices": [
{
"names": [
"*"
],
"privileges": [
"read"
],
"allow_restricted_indices": false
}
],
"applications": [ ],
"run_as": [ ],
"metadata": { },
"transient_metadata": {
"enabled": true
}
}
}
]
}
]
}
このリクエストのために取得されたAPIキーのリスト。 | |
APIキーのID | |
APIキーの名前 | |
APIキーの作成時間(ミリ秒) | |
APIキーのオプションの有効期限(ミリ秒) | |
APIキーの無効化状態。キーが無効化されている場合、true の値を持ち、invalidation の時間(ミリ秒)を持つ追加フィールドがあります。そうでない場合はfalse です。 |
|
このAPIキーが作成されたプリンシパル | |
このAPIキーが作成されたプリンシパルのレルム名 | |
APIキーのメタデータ | |
作成時または最後の更新時にこのAPIキーに割り当てられたロール記述子。空のロール記述子は、APIキーが所有者ユーザーの権限を継承することを意味します。 | |
APIキーに関連付けられた所有者ユーザーの権限。これは作成時にキャプチャされた時点のスナップショットであり、その後の更新時にキャプチャされます。APIキーの有効な権限は、その割り当てられた権限と所有者ユーザーの権限の交差です。 |
Python
resp = client.security.get_api_key(
name="my-api-key",
)
print(resp)
Js
const response = await client.security.getApiKey({
name: "my-api-key",
});
console.log(response);
コンソール
GET /_security/api_key?name=my-api-key
APIキー名はワイルドカードを使用してプレフィックス検索をサポートしています:
Python
resp = client.security.get_api_key(
name="my-*",
)
print(resp)
Js
const response = await client.security.getApiKey({
name: "my-*",
});
console.log(response);
コンソール
GET /_security/api_key?name=my-*
次の例は、native1
レルムのすべてのAPIキーを取得します:
Python
resp = client.security.get_api_key(
realm_name="native1",
)
print(resp)
Js
const response = await client.security.getApiKey({
realm_name: "native1",
});
console.log(response);
コンソール
GET /_security/api_key?realm_name=native1
次の例は、すべてのレルムでユーザーmyuser
のすべてのAPIキーを取得します:
Python
resp = client.security.get_api_key(
username="myuser",
)
print(resp)
Js
const response = await client.security.getApiKey({
username: "myuser",
});
console.log(response);
コンソール
GET /_security/api_key?username=myuser
次の例は、現在認証されているユーザーが所有するすべてのAPIキーを取得します:
Python
resp = client.security.get_api_key(
owner=True,
)
print(resp)
Js
const response = await client.security.getApiKey({
owner: "true",
});
console.log(response);
コンソール
GET /_security/api_key?owner=true
次の例は、ユーザーが認可されている場合にすべてのAPIキーを取得します:
Python
resp = client.security.get_api_key()
print(resp)
Js
const response = await client.security.getApiKey();
console.log(response);
コンソール
GET /_security/api_key
次の例は、ユーザーが認可されている場合にすべてのアクティブなAPIキーを取得します:
Python
resp = client.security.get_api_key(
active_only=True,
)
print(resp)
Js
const response = await client.security.getApiKey({
active_only: "true",
});
console.log(response);
コンソール
GET /_security/api_key?active_only=true
次に、APIキーを作成します
Python
resp = client.security.create_api_key(
name="my-api-key-1",
metadata={
"application": "my-application"
},
)
print(resp)
Js
const response = await client.security.createApiKey({
name: "my-api-key-1",
metadata: {
application: "my-application",
},
});
console.log(response);
コンソール
POST /_security/api_key
{
"name": "my-api-key-1",
"metadata": {
"application": "my-application"
}
}
次の例は、現在認証されているユーザーが所有する場合に指定されたid
によって識別されるAPIキーを取得します:
Python
resp = client.security.get_api_key(
id="VuaCfGcBCdbkQm-e5aOx",
owner=True,
)
print(resp)
Js
const response = await client.security.getApiKey({
id: "VuaCfGcBCdbkQm-e5aOx",
owner: "true",
});
console.log(response);
コンソール
GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&owner=true
最後に、次の例は、native1
レルムのユーザーmyuser
のすべてのAPIキーを即座に取得します:
Python
resp = client.security.get_api_key(
username="myuser",
realm_name="native1",
)
print(resp)
Js
const response = await client.security.getApiKey({
username: "myuser",
realm_name: "native1",
});
console.log(response);
コンソール
GET /_security/api_key?username=myuser&realm_name=native1
成功した呼び出しは、取得された1つまたは複数のAPIキーの情報を含むJSON構造を返します。
Js
{
"api_keys": [
{
"id": "0GF5GXsBCXxz2eDxWwFN",
"name": "hadoop_myuser_key",
"creation": 1548550550158,
"expiration": 1548551550158,
"invalidated": false,
"username": "myuser",
"realm": "native1",
"realm_type": "native",
"metadata": {
"application": "myapp"
},
"role_descriptors": {
"role-a": {
"cluster": [
"monitor"
],
"indices": [
{
"names": [
"index-a"
],
"privileges": [
"read"
],
"allow_restricted_indices": false
}
],
"applications": [ ],
"run_as": [ ],
"metadata": { },
"transient_metadata": {
"enabled": true
}
}
}
},
{
"id": "6wHJmcQpReKBa42EHV5SBw",
"name": "api-key-name-2",
"creation": 1548550550158,
"invalidated": false,
"username": "user-y",
"realm": "realm-2",
"metadata": {},
"role_descriptors": { }
}
]
}