ユーザープロファイルAPIの有効化

ユーザープロファイル機能は、KibanaおよびElasticのObservability、Enterprise Search、Elastic Securityソリューション専用に設計されています。個々のユーザーや外部アプリケーションは、このAPIを直接呼び出すべきではありません。Elasticは、事前通知なしに将来のリリースでこの機能を変更または削除する権利を留保します。

他のユーザーに代わってユーザープロファイルを作成または更新します。

リクエスト

POST /_security/profile/_activate

前提条件

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

説明

ユーザープロファイルを有効化するAPIは、ユーザーの認証オブジェクトから抽出された情報を含むエンドユーザーのプロファイルドキュメントを作成または更新します。これには、usernamefull_nameroles、および認証レルムが含まれます。たとえば、JWT access_tokenの場合、プロファイルユーザーのusernameは、トークンを認証したJWTレルムのclaims.principal設定が指すJWTトークンのクレームから抽出されます。

プロファイルドキュメントを更新する際、APIはドキュメントが無効であった場合にそれを有効にします。いかなる更新も、labelsまたはdataフィールドの既存の内容を変更しません。

このAPIは、エンドユーザーのプロファイルを作成または更新する必要があるアプリケーション(Kibanaなど)専用です。

呼び出しアプリケーションは、プロファイルドキュメントが対象とするユーザーに対して、access_token、またはusernamepasswordの組み合わせを持っている必要があります。

リクエストボディ

  • access_token
  • (必須*、文字列)ユーザーのElasticsearchアクセストークンまたはJWT。両方のアクセストークンおよびid JWTトークンタイプがサポートされており、基盤となるJWTレルムの構成に依存します。access_tokenグラントタイプを指定する場合、このパラメータは必須です。他のグラントタイプでは無効です。
  • client_authentication
  • (オプション、オブジェクト)access_tokenグラントタイプを使用し、JWTを提供する場合、これは必要なJWTのクライアント認証を指定します(通常、ES-Client-Authenticationリクエストヘッダーで指定されるもの)。
    • scheme
    • (必須、文字列)ES-Client-Authenticationリクエストヘッダーで提供されるスキーム(大文字と小文字を区別)。現在、サポートされている唯一の値はSharedSecretです。
    • value
    • (必須、文字列)ES-Client-Authenticationリクエストヘッダーで提供されるクライアント資格情報のスキームに続く値。たとえば、リクエストヘッダーがES-Client-Authentication: SharedSecret myShar3dS3cretであれば、クライアントがJWTで直接認証する場合、ここではvalueである必要があります。
  • grant_type
  • (必須*、文字列)ユーザーのパスワード。passwordグラントタイプを指定する場合、このパラメータは必須です。他のグラントタイプでは無効です。
  • username
  • (必須*、文字列)ユーザーを識別するユーザー名。passwordグラントタイプを指定する場合、このパラメータは必須です。他のグラントタイプでは無効です。

*設定が一部の状況で必須であることを示しますが、すべての状況ではありません。

レスポンスボディ

成功したユーザープロファイルAPI呼び出しは、プロファイルのユニークID、ユーザー情報、操作のタイムスタンプ、およびバージョン管理番号を含むJSON構造を返します。

Python

  1. resp = client.security.activate_user_profile(
  2. grant_type="password",
  3. username="jacknich",
  4. password="l0ng-r4nd0m-p@ssw0rd",
  5. )
  6. print(resp)

Js

  1. const response = await client.security.activateUserProfile({
  2. grant_type: "password",
  3. username: "jacknich",
  4. password: "l0ng-r4nd0m-p@ssw0rd",
  5. });
  6. console.log(response);

コンソール

  1. POST /_security/profile/_activate
  2. {
  3. "grant_type": "password",
  4. "username" : "jacknich",
  5. "password" : "l0ng-r4nd0m-p@ssw0rd"
  6. }

APIは次のレスポンスを返します:

コンソール-結果

  1. {
  2. "uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  3. "enabled": true,
  4. "last_synchronized": 1642650651037,
  5. "user": {
  6. "username": "jacknich",
  7. "roles": [
  8. "admin", "other_role1"
  9. ],
  10. "realm_name": "native",
  11. "full_name": "Jack Nicholson",
  12. "email": "[email protected]"
  13. },
  14. "labels": {},
  15. "data": {},
  16. "_doc": {
  17. "_primary_term": 88,
  18. "_seq_no": 66
  19. }
  20. }