ユーザープロファイルAPI

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

一意のプロファイルIDのリストを使用してユーザープロファイルを取得します。

リクエスト

GET /_security/profile/<uid>

前提条件

このAPIを使用するには、少なくともread_security クラスター権限(またはmanage_user_profilemanage_securityなどのより高い権限)が必要です。

説明

get user profile APIは、指定されたuidに一致するユーザープロファイルドキュメントを返します。これは、ユーザープロファイルを有効化するときに生成されます。

パスパラメータ

  • uid
  • (必須、文字列)ユーザープロファイルの一意の識別子。カンマ区切りのリストとして複数のIDを指定できます。

クエリパラメータ

  • data
  • (オプション、文字列)プロファイルドキュメントのdataフィールドのフィルターのカンマ区切りリスト。すべてのコンテンツを返すにはdata=*を使用します。コンテンツのサブセットを返すには、指定された<key>の下にネストされたコンテンツを取得するためにdata=<key>を使用します。デフォルトでは、コンテンツは返されません。

レスポンスボディ

成功した呼び出しは、ユーザープロファイルのJSON表現とその内部バージョン番号を返します。提供されたuidに対してプロファイルドキュメントが見つからない場合、APIは空のオブジェクトを返します。dataフィールドの内容は、潜在的に大きなペイロードのデシリアライズを避けるためにデフォルトでは返されません。

Python

  1. resp = client.security.get_user_profile(
  2. uid="u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  3. )
  4. print(resp)

Js

  1. const response = await client.security.getUserProfile({
  2. uid: "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  3. });
  4. console.log(response);

コンソール

  1. GET /_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0

APIは、uidu_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0に一致する場合、次のレスポンスを返します:

コンソール-結果

  1. {
  2. "profiles": [
  3. {
  4. "uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  5. "enabled": true,
  6. "last_synchronized": 1642650651037,
  7. "user": {
  8. "username": "jacknich",
  9. "roles": [
  10. "admin", "other_role1"
  11. ],
  12. "realm_name": "native",
  13. "full_name": "Jack Nicholson",
  14. "email": "[email protected]"
  15. },
  16. "labels": {
  17. "direction": "north"
  18. },
  19. "data": {},
  20. "_doc": {
  21. "_primary_term": 88,
  22. "_seq_no": 66
  23. }
  24. }
  25. ]
  26. }
デフォルトではdataフィールドにコンテンツは返されません。

次のリクエストは、ユーザープロファイルとともに、キーapp1の下にネストされたdataのサブセットを取得します:

Python

  1. resp = client.security.get_user_profile(
  2. uid="u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  3. data="app1.key1",
  4. )
  5. print(resp)

Js

  1. const response = await client.security.getUserProfile({
  2. uid: "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  3. data: "app1.key1",
  4. });
  5. console.log(response);

コンソール

  1. GET /_security/profile/u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0?data=app1.key1

コンソール-結果

  1. {
  2. "profiles": [
  3. {
  4. "uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  5. "enabled": true,
  6. "last_synchronized": 1642650651037,
  7. "user": {
  8. "username": "jacknich",
  9. "roles": [
  10. "admin", "other_role1"
  11. ],
  12. "realm_name": "native",
  13. "full_name": "Jack Nicholson",
  14. "email": "[email protected]"
  15. },
  16. "labels": {
  17. "direction": "north"
  18. },
  19. "data": {
  20. "app1": {
  21. "key1": "value1"
  22. }
  23. },
  24. "_doc": {
  25. "_primary_term": 88,
  26. "_seq_no": 66
  27. }
  28. }
  29. ]
  30. }

ユーザープロファイルの取得中にエラーが発生した場合、それらはerrorsフィールドに返されます:

Js

  1. {
  2. "profiles": [],
  3. "errors": {
  4. "count": 1,
  5. "details": {
  6. "u_FmxQt3gr1BBH5wpnz9HkouPj3Q710XkOgg1PWkwLPBW_5": {
  7. "type": "resource_not_found_exception",
  8. "reason": "profile document not found"
  9. }
  10. }
  11. }
  12. }