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_securitymanage_api_key、またはそれ以上の権限(manage_securityを含む)を持っている場合、このAPIは所有権に関係なくすべてのAPIキーを返します。

説明

APIキー作成によって作成されたAPIキーの情報は、このAPIを使用して取得できます。

パスパラメータ

次のパラメータは、GETリクエストのクエリパラメータに指定でき、APIキーの取得に関連しています:

  • id
  • (オプション、文字列)APIキーID。このパラメータは、namerealm_name、またはusernameのいずれかと一緒に使用することはできません。
  • name
  • (オプション、文字列)APIキー名。このパラメータは、idrealm_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キーは、無効化されておらず、クエリ時に期限切れでない場合、アクティブと見なされます。ownernameなどの他のパラメータと一緒に指定できます。active_onlyfalseの場合、レスポンスにはアクティブおよび非アクティブ(期限切れまたは無効化された)キーの両方が含まれます。デフォルトはfalseです。

「id」、「name」、「username」、「realm_name」のいずれのパラメータも指定されず、「owner」がfalseに設定されている場合、ユーザーが認可されている場合はすべてのAPIキーを取得します。ユーザーが他のユーザーのAPIキーを取得する権限がない場合、エラーが返されます。

次のようにAPIキーを作成した場合:

Python

  1. resp = client.security.create_api_key(
  2. name="my-api-key",
  3. role_descriptors={},
  4. metadata={
  5. "application": "myapp"
  6. },
  7. )
  8. print(resp)

Js

  1. const response = await client.security.createApiKey({
  2. name: "my-api-key",
  3. role_descriptors: {},
  4. metadata: {
  5. application: "myapp",
  6. },
  7. });
  8. console.log(response);

コンソール

  1. POST /_security/api_key
  2. {
  3. "name": "my-api-key",
  4. "role_descriptors": {},
  5. "metadata": {
  6. "application": "myapp"
  7. }
  8. }

成功した呼び出しは、APIキー情報を提供するJSON構造を返します。例えば:

コンソール-結果

  1. {
  2. "id":"VuaCfGcBCdbkQm-e5aOx",
  3. "name":"my-api-key",
  4. "api_key":"ui2lp2axTNmsyakw9tvNnw",
  5. "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
  6. }

次の例を使用して、IDによってAPIキーを取得できます:

Python

  1. resp = client.security.get_api_key(
  2. id="VuaCfGcBCdbkQm-e5aOx",
  3. with_limited_by=True,
  4. )
  5. print(resp)

Js

  1. const response = await client.security.getApiKey({
  2. id: "VuaCfGcBCdbkQm-e5aOx",
  3. with_limited_by: "true",
  4. });
  5. console.log(response);

コンソール

  1. GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&with_limited_by=true

成功した呼び出しは、APIキーの情報を含むJSON構造を返します:

Js

  1. {
  2. "api_keys": [
  3. {
  4. "id": "VuaCfGcBCdbkQm-e5aOx",
  5. "name": "my-api-key",
  6. "creation": 1548550550158,
  7. "expiration": 1548551550158,
  8. "invalidated": false,
  9. "username": "myuser",
  10. "realm": "native1",
  11. "realm_type": "native",
  12. "metadata": {
  13. "application": "myapp"
  14. },
  15. "role_descriptors": { },
  16. "limited_by": [
  17. {
  18. "role-power-user": {
  19. "cluster": [
  20. "monitor"
  21. ],
  22. "indices": [
  23. {
  24. "names": [
  25. "*"
  26. ],
  27. "privileges": [
  28. "read"
  29. ],
  30. "allow_restricted_indices": false
  31. }
  32. ],
  33. "applications": [ ],
  34. "run_as": [ ],
  35. "metadata": { },
  36. "transient_metadata": {
  37. "enabled": true
  38. }
  39. }
  40. }
  41. ]
  42. }
  43. ]
  44. }
このリクエストのために取得されたAPIキーのリスト。
APIキーのID
APIキーの名前
APIキーの作成時間(ミリ秒)
APIキーのオプションの有効期限(ミリ秒)
APIキーの無効化状態。キーが無効化されている場合、trueの値を持ち、invalidationの時間(ミリ秒)を持つ追加フィールドがあります。そうでない場合はfalseです。
このAPIキーが作成されたプリンシパル
このAPIキーが作成されたプリンシパルのレルム名
APIキーのメタデータ
作成時または最後の更新時にこのAPIキーに割り当てられたロール記述子。空のロール記述子は、APIキーが所有者ユーザーの権限を継承することを意味します。
APIキーに関連付けられた所有者ユーザーの権限。これは作成時にキャプチャされた時点のスナップショットであり、その後の更新時にキャプチャされます。APIキーの有効な権限は、その割り当てられた権限と所有者ユーザーの権限の交差です。

Python

  1. resp = client.security.get_api_key(
  2. name="my-api-key",
  3. )
  4. print(resp)

Js

  1. const response = await client.security.getApiKey({
  2. name: "my-api-key",
  3. });
  4. console.log(response);

コンソール

  1. GET /_security/api_key?name=my-api-key

APIキー名はワイルドカードを使用してプレフィックス検索をサポートしています:

Python

  1. resp = client.security.get_api_key(
  2. name="my-*",
  3. )
  4. print(resp)

Js

  1. const response = await client.security.getApiKey({
  2. name: "my-*",
  3. });
  4. console.log(response);

コンソール

  1. GET /_security/api_key?name=my-*

次の例は、native1レルムのすべてのAPIキーを取得します:

Python

  1. resp = client.security.get_api_key(
  2. realm_name="native1",
  3. )
  4. print(resp)

Js

  1. const response = await client.security.getApiKey({
  2. realm_name: "native1",
  3. });
  4. console.log(response);

コンソール

  1. GET /_security/api_key?realm_name=native1

次の例は、すべてのレルムでユーザーmyuserのすべてのAPIキーを取得します:

Python

  1. resp = client.security.get_api_key(
  2. username="myuser",
  3. )
  4. print(resp)

Js

  1. const response = await client.security.getApiKey({
  2. username: "myuser",
  3. });
  4. console.log(response);

コンソール

  1. GET /_security/api_key?username=myuser

次の例は、現在認証されているユーザーが所有するすべてのAPIキーを取得します:

Python

  1. resp = client.security.get_api_key(
  2. owner=True,
  3. )
  4. print(resp)

Js

  1. const response = await client.security.getApiKey({
  2. owner: "true",
  3. });
  4. console.log(response);

コンソール

  1. GET /_security/api_key?owner=true

次の例は、ユーザーが認可されている場合にすべてのAPIキーを取得します:

Python

  1. resp = client.security.get_api_key()
  2. print(resp)

Js

  1. const response = await client.security.getApiKey();
  2. console.log(response);

コンソール

  1. GET /_security/api_key

次の例は、ユーザーが認可されている場合にすべてのアクティブなAPIキーを取得します:

Python

  1. resp = client.security.get_api_key(
  2. active_only=True,
  3. )
  4. print(resp)

Js

  1. const response = await client.security.getApiKey({
  2. active_only: "true",
  3. });
  4. console.log(response);

コンソール

  1. GET /_security/api_key?active_only=true

次に、APIキーを作成します

Python

  1. resp = client.security.create_api_key(
  2. name="my-api-key-1",
  3. metadata={
  4. "application": "my-application"
  5. },
  6. )
  7. print(resp)

Js

  1. const response = await client.security.createApiKey({
  2. name: "my-api-key-1",
  3. metadata: {
  4. application: "my-application",
  5. },
  6. });
  7. console.log(response);

コンソール

  1. POST /_security/api_key
  2. {
  3. "name": "my-api-key-1",
  4. "metadata": {
  5. "application": "my-application"
  6. }
  7. }

次の例は、現在認証されているユーザーが所有する場合に指定されたidによって識別されるAPIキーを取得します:

Python

  1. resp = client.security.get_api_key(
  2. id="VuaCfGcBCdbkQm-e5aOx",
  3. owner=True,
  4. )
  5. print(resp)

Js

  1. const response = await client.security.getApiKey({
  2. id: "VuaCfGcBCdbkQm-e5aOx",
  3. owner: "true",
  4. });
  5. console.log(response);

コンソール

  1. GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&owner=true

最後に、次の例は、native1レルムのユーザーmyuserのすべてのAPIキーを即座に取得します:

Python

  1. resp = client.security.get_api_key(
  2. username="myuser",
  3. realm_name="native1",
  4. )
  5. print(resp)

Js

  1. const response = await client.security.getApiKey({
  2. username: "myuser",
  3. realm_name: "native1",
  4. });
  5. console.log(response);

コンソール

  1. GET /_security/api_key?username=myuser&realm_name=native1

成功した呼び出しは、取得された1つまたは複数のAPIキーの情報を含むJSON構造を返します。

Js

  1. {
  2. "api_keys": [
  3. {
  4. "id": "0GF5GXsBCXxz2eDxWwFN",
  5. "name": "hadoop_myuser_key",
  6. "creation": 1548550550158,
  7. "expiration": 1548551550158,
  8. "invalidated": false,
  9. "username": "myuser",
  10. "realm": "native1",
  11. "realm_type": "native",
  12. "metadata": {
  13. "application": "myapp"
  14. },
  15. "role_descriptors": {
  16. "role-a": {
  17. "cluster": [
  18. "monitor"
  19. ],
  20. "indices": [
  21. {
  22. "names": [
  23. "index-a"
  24. ],
  25. "privileges": [
  26. "read"
  27. ],
  28. "allow_restricted_indices": false
  29. }
  30. ],
  31. "applications": [ ],
  32. "run_as": [ ],
  33. "metadata": { },
  34. "transient_metadata": {
  35. "enabled": true
  36. }
  37. }
  38. }
  39. },
  40. {
  41. "id": "6wHJmcQpReKBa42EHV5SBw",
  42. "name": "api-key-name-2",
  43. "creation": 1548550550158,
  44. "invalidated": false,
  45. "username": "user-y",
  46. "realm": "realm-2",
  47. "metadata": {},
  48. "role_descriptors": { }
  49. }
  50. ]
  51. }