サービスアカウントトークンAPIの作成

基本認証を必要とせずにアクセスするためのサービスアカウントトークンを作成します。

リクエスト

POST /_security/service/<namespace>/<service>/credential/token/<token_name>

PUT /_security/service/<namespace>/<service>/credential/token/<token_name>

POST /_security/service/<namespace>/<service>/credential/token

前提条件

  • このAPIを使用するには、少なくともmanage_service_account クラスター権限を持っている必要があります。

説明

サービスアカウントトークンAPIの呼び出しが成功すると、サービスアカウントトークン、その名前、およびシークレット値を含むJSON構造が返されます。

サービスアカウントトークンは決して期限切れになりません。不要になった場合は、積極的に削除する必要があります。

パスパラメータ

  • namespace
  • (必須、文字列) 名前空間の名前。
  • service
  • (必須、文字列) サービス名の名前。
  • token_name
  • (オプション、文字列) サービスアカウントトークンの名前。省略した場合は、ランダムな名前が生成されます。
    トークン名は1文字以上256文字以下でなければなりません。英数字(a-z, A-Z, 0-9)、ダッシュ(-)、およびアンダースコア(_)を含むことができますが、アンダースコアで始めることはできません。
    トークン名は、関連するサービスアカウントのコンテキスト内で一意でなければなりません。また、サービスアカウントのプリンシパルとトークン名で構成される完全修飾名に対してもグローバルに一意でなければなりません。例: <namespace>/<service>/<token-name>

以下のリクエストはサービスアカウントトークンを作成します:

Python

  1. resp = client.security.create_service_token(
  2. namespace="elastic",
  3. service="fleet-server",
  4. name="token1",
  5. )
  6. print(resp)

Js

  1. const response = await client.security.createServiceToken({
  2. namespace: "elastic",
  3. service: "fleet-server",
  4. name: "token1",
  5. });
  6. console.log(response);

コンソール

  1. POST /_security/service/elastic/fleet-server/credential/token/token1

レスポンスにはサービスアカウントトークン、その名前、およびシークレット値が含まれます:

コンソール-結果

  1. {
  2. "created": true,
  3. "token": {
  4. "name": "token1",
  5. "value": "AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ"
  6. }
  7. }
ベアラートークンとして使用するためのシークレット値

サービスアカウントトークンを使用するには、生成されたトークン値をAuthorization: Bearerヘッダーを持つリクエストに含めます:

シェル

  1. curl -H "Authorization: Bearer AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ" http://localhost:9200/_cluster/health

ノードにxpack.security.http.ssl.enabledtrueに設定されている場合、リクエストURLにhttpsを指定する必要があります。

以下のリクエストは、自動生成されたトークン名を持つサービストークンを作成します:

Python

  1. resp = client.security.create_service_token(
  2. namespace="elastic",
  3. service="fleet-server",
  4. )
  5. print(resp)

Js

  1. const response = await client.security.createServiceToken({
  2. namespace: "elastic",
  3. service: "fleet-server",
  4. });
  5. console.log(response);

コンソール

  1. POST /_security/service/elastic/fleet-server/credential/token

レスポンスにはサービスアカウントトークン、自動生成された名前、およびシークレット値が含まれます:

コンソール-結果

  1. {
  2. "created": true,
  3. "token": {
  4. "name": "Jk5J1HgBuyBK5TpDrdo4",
  5. "value": "AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ"
  6. }
  7. }