クロスクラスターAPIキーAPIの作成

APIキーのcross_clusterタイプを作成し、APIキーに基づくリモートクラスターへのアクセスを提供します。cross_cluster APIキーは、RESTインターフェースを通じて認証に使用することはできません。逆に、REST APIキーはRESTインターフェースを通じて使用することを目的としており、APIキーに基づくリモートクラスターアクセスには使用できません。

リクエスト

POST /_security/cross_cluster/api_key

前提条件

  • このAPIを使用するには、少なくともmanage_securityクラスターの権限が必要です。

このリクエストを認証するには、APIキーではない資格情報を使用する必要があります。必要な権限を持つAPIキーを使用しても、APIはエラーを返します。

説明

クロスクラスターAPIキーは、Elasticsearch APIキーサービスによって作成され、自動的に有効になります。APIキーサービスを無効にする手順については、APIキーサービス設定を参照してください。

成功したリクエストは、APIキー、そのユニークID、およびその名前を含むJSON構造を返します。該当する場合、APIキーのミリ秒単位の有効期限情報も返されます。

デフォルトでは、APIキーは期限切れになりません。APIキーを作成する際に有効期限情報を指定できます。

APIキーサービスに関連する設定については、APIキーサービス設定を参照してください。

クロスクラスターAPIキーは、クロスクラスターAPIキーの更新APIを使用してのみ更新できます。REST APIキーの更新APIバルク更新REST APIキーAPIを使用して更新しようとするとエラーが発生します。これらは、APIキー取得APIAPIキークエリAPI、およびAPIキー無効化APIを使用して取得および無効化できます。

リクエストボディ

POSTリクエストのボディに指定できるパラメータは次のとおりです:

  • name
  • (必須、文字列) このAPIキーの名前を指定します。

  • access
  • (必須、オブジェクト) このAPIキーに付与されるアクセス権。アクセス権は、クロスクラスター検索およびクロスクラスターレプリケーションの権限で構成されます。少なくとも1つは指定する必要があります。
    • search
    • (オプション、リスト) クロスクラスター検索のためのインデックス権限エントリのリスト。
      • names
      • (必須、リスト) このエントリの権限が適用されるインデックスまたは名前パターンのリスト。
      • field_security
      • (オプション、オブジェクト) ロールの所有者が読み取りアクセスを持つドキュメントフィールド。replicationフィールドが定義されている場合は設定できません。詳細については、クロスクラスターAPIキーによるフィールドおよびドキュメントレベルのセキュリティを参照してください。
      • query
      • (オプション) ロールの所有者が読み取りアクセスを持つドキュメントを定義する検索クエリ。この指定されたインデックス内のドキュメントは、ロールの所有者がアクセスできるようにするためにこのクエリに一致する必要があります。replicationフィールドが定義されている場合は設定できません。詳細については、クロスクラスターAPIキーによるフィールドおよびドキュメントレベルのセキュリティを参照してください。
      • allow_restricted_indices
      • (オプション、ブール値) namesフィールドのパターンがシステムインデックスをカバーする必要がある場合は、trueに設定する必要があります(デフォルトはfalse)。
    • replication
    • (オプション、リスト) クロスクラスターレプリケーションのためのインデックス権限エントリのリスト。
      • names
      • (必須、リスト) このエントリの権限が適用されるインデックスまたは名前パターンのリスト。

検索またはレプリケーションアクセスのために明示的な権限を指定する必要はありません。作成プロセスは、access仕様をロール記述子に自動的に変換し、関連する権限が適切に割り当てられます。access値とその対応するrole_descriptorsは、APIキー取得APIおよびAPIキークエリAPIのレスポンスに返されます。

REST APIキーとは異なり、クロスクラスターAPIキーは認証されたユーザーの権限をキャプチャしません。APIキーの有効な権限は、accessパラメータで指定されたものと正確に一致します。

  • expiration
  • (オプション、文字列) APIキーの有効期限。デフォルトでは、APIキーは期限切れになりません。
  • metadata
  • (オプション、オブジェクト) APIキーに関連付けたい任意のメタデータ。ネストされたデータ構造をサポートします。metadataオブジェクト内では、_で始まるキーはシステム使用のために予約されています。

次の例は、クロスクラスターAPIキーを作成します:

Python

  1. resp = client.perform_request(
  2. "POST",
  3. "/_security/cross_cluster/api_key",
  4. headers={"Content-Type": "application/json"},
  5. body={
  6. "name": "my-cross-cluster-api-key",
  7. "expiration": "1d",
  8. "access": {
  9. "search": [
  10. {
  11. "names": [
  12. "logs*"
  13. ]
  14. }
  15. ],
  16. "replication": [
  17. {
  18. "names": [
  19. "archive*"
  20. ]
  21. }
  22. ]
  23. },
  24. "metadata": {
  25. "description": "phase one",
  26. "environment": {
  27. "level": 1,
  28. "trusted": True,
  29. "tags": [
  30. "dev",
  31. "staging"
  32. ]
  33. }
  34. }
  35. },
  36. )
  37. print(resp)

Js

  1. const response = await client.transport.request({
  2. method: "POST",
  3. path: "/_security/cross_cluster/api_key",
  4. body: {
  5. name: "my-cross-cluster-api-key",
  6. expiration: "1d",
  7. access: {
  8. search: [
  9. {
  10. names: ["logs*"],
  11. },
  12. ],
  13. replication: [
  14. {
  15. names: ["archive*"],
  16. },
  17. ],
  18. },
  19. metadata: {
  20. description: "phase one",
  21. environment: {
  22. level: 1,
  23. trusted: true,
  24. tags: ["dev", "staging"],
  25. },
  26. },
  27. },
  28. });
  29. console.log(response);

コンソール

  1. POST /_security/cross_cluster/api_key
  2. {
  3. "name": "my-cross-cluster-api-key",
  4. "expiration": "1d",
  5. "access": {
  6. "search": [
  7. {
  8. "names": ["logs*"]
  9. }
  10. ],
  11. "replication": [
  12. {
  13. "names": ["archive*"]
  14. }
  15. ]
  16. },
  17. "metadata": {
  18. "description": "phase one",
  19. "environment": {
  20. "level": 1,
  21. "trusted": true,
  22. "tags": ["dev", "staging"]
  23. }
  24. }
  25. }
生成されるAPIキーのオプションの有効期限。期限が指定されていない場合、APIキーは期限切れになりません。
APIキーに付与されるクロスクラスター検索アクセス。
APIキーに付与されるクロスクラスターレプリケーションアクセス。

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

コンソール-結果

  1. {
  2. "id": "VuaCfGcBCdbkQm-e5aOx",
  3. "name": "my-cross-cluster-api-key",
  4. "expiration": 1544068612110,
  5. "api_key": "ui2lp2axTNmsyakw9tvNnw",
  6. "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
  7. }
このAPIキーのユニークなid
このAPIキーのオプションの有効期限(ミリ秒)
生成されたAPIキーの秘密
APIキーの資格情報で、idapi_keyをコロン(:)で結合したUTF-8のBase64エンコーディングです。

APIキー情報は、APIキー取得APIを使用して取得できます。

Python

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

Js

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

コンソール

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

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

Js

  1. {
  2. "api_keys": [
  3. {
  4. "id": "VuaCfGcBCdbkQm-e5aOx",
  5. "name": "my-cross-cluster-api-key",
  6. "type": "cross_cluster",
  7. "creation": 1548550550158,
  8. "expiration": 1548551550158,
  9. "invalidated": false,
  10. "username": "myuser",
  11. "realm": "native1",
  12. "metadata": {
  13. "description": "phase one",
  14. "environment": {
  15. "level": 1,
  16. "trusted": true,
  17. "tags": ["dev", "staging"]
  18. }
  19. },
  20. "role_descriptors": {
  21. "cross_cluster": {
  22. "cluster": [
  23. "cross_cluster_search", "cross_cluster_replication"
  24. ],
  25. "indices": [
  26. {
  27. "names": [
  28. "logs*"
  29. ],
  30. "privileges": [
  31. "read", "read_cross_cluster", "view_index_metadata"
  32. ],
  33. "allow_restricted_indices": false
  34. },
  35. {
  36. "names": [
  37. "archive*"
  38. ],
  39. "privileges": [
  40. "cross_cluster_replication", "cross_cluster_replication_internal"
  41. ],
  42. "allow_restricted_indices": false
  43. }
  44. ],
  45. "applications": [ ],
  46. "run_as": [ ],
  47. "metadata": { },
  48. "transient_metadata": {
  49. "enabled": true
  50. }
  51. }
  52. },
  53. "access": {
  54. "search": [
  55. {
  56. "names": [
  57. "logs*"
  58. ],
  59. "allow_restricted_indices": false
  60. }
  61. ],
  62. "replication": [
  63. {
  64. "names": [
  65. "archive*"
  66. ],
  67. "allow_restricted_indices": false
  68. }
  69. ]
  70. }
  71. }
  72. ]
  73. }
APIキーのID
APIキーの名前
APIキーのタイプ
クロスクラスターAPIキーのために生成されたロール記述子。常にcross_clusterという名前のロール記述子が1つだけ含まれます。クロスクラスターAPIキーには、制限されたロール記述子はありません。
必要なクロスクラスターアクセスに必要なクラスター権限。検索のみが必要な場合、値はcross_cluster_searchです。クロスクラスターのレプリケーションのみが必要な場合、cross_cluster_replicationです。検索とレプリケーションの両方が必要な場合は、両方です。
必要なクロスクラスター検索アクセスに対応するインデックス権限。
必要なクロスクラスターレプリケーションアクセスに対応するインデックス権限。
accessはAPIキー作成時に指定された値に対応します。

生成されたAPIキーを使用するには、APIキーに基づくリモートクラスター構成の一部として、クラスター資格情報として構成します。