ユーザープロファイルAPIの提案

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

指定された検索条件に一致するユーザープロファイルの提案を取得します。

リクエスト

GET /_security/profile/_suggest

POST /_security/profile/_suggest

前提条件

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

クエリパラメータ

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

リクエストボディ

  • name
  • (オプション、文字列)ユーザープロファイルドキュメントの名前関連フィールドに一致するために使用されるクエリ文字列。名前関連フィールドは、ユーザーのusernamefull_name、およびemailです。
  • size
  • (オプション、整数)返すプロファイルの数。デフォルトは10です。
  • data
  • (オプション、文字列)プロファイルドキュメントのdataフィールドに対するフィルターのカンマ区切りリスト。これは、dataクエリパラメータと同じように機能します。
  1. - `````hint
  • (オプション、オブジェクト)提案結果の関連性を向上させるための追加の検索条件。指定されたヒントに一致するプロファイルは、応答でより高くランク付けされます。ただし、ヒントに一致しない場合でも、nameフィールドクエリに一致する限り、プロファイルは応答から除外されません。
    1. - `````uids
    • (オプション、文字列のリスト)一致させるためのプロファイルUIDのリスト。
    • labels
    • (オプション、オブジェクト)プロファイルのlabelsセクションに対して一致させるための単一のキーと値のペア。キーは文字列でなければならず、値は文字列または文字列のリストでなければなりません。プロファイルは、少なくとも1つの文字列に一致する場合、一致すると見なされます。

レスポンスボディ

  • total
  • (オブジェクト)一致するプロファイルの数に関するメタデータ。
  • took
  • (整数)リクエストを実行するのにかかったミリ秒。
  • profiles
  • (オブジェクトの配列)検索条件に一致するプロファイルドキュメントのリスト、関連性に基づいて順序付けされています。

以下のリクエストは、jackに一致する名前関連フィールドを持つプロファイルドキュメントの提案を取得します。関連性を高めるために、uidslabelsの両方のヒントを指定しています:

Python

  1. resp = client.security.suggest_user_profiles(
  2. name="jack",
  3. hint={
  4. "uids": [
  5. "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
  6. "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
  7. ],
  8. "labels": {
  9. "direction": [
  10. "north",
  11. "east"
  12. ]
  13. }
  14. },
  15. )
  16. print(resp)

Js

  1. const response = await client.security.suggestUserProfiles({
  2. name: "jack",
  3. hint: {
  4. uids: [
  5. "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
  6. "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  7. ],
  8. labels: {
  9. direction: ["north", "east"],
  10. },
  11. },
  12. });
  13. console.log(response);

コンソール

  1. POST /_security/profile/_suggest
  2. {
  3. "name": "jack",
  4. "hint": {
  5. "uids": [
  6. "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
  7. "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
  8. ],
  9. "labels": {
  10. "direction": ["north", "east"]
  11. }
  12. }
  13. }
プロファイルの名前関連フィールドは、応答に含まれるためにjackと一致する必要があります。
uidsヒントには、ユーザーjackspaおよびjacknichの両方のプロファイルUIDが含まれています。
labelsヒントは、directionラベルがnorthまたはeastのいずれかと一致する場合、プロファイルをより高くランク付けします。

APIは次のように返します:

コンソール-結果

  1. {
  2. "took": 30,
  3. "total": {
  4. "value": 3,
  5. "relation": "eq"
  6. },
  7. "profiles": [
  8. {
  9. "uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
  10. "user": {
  11. "username": "jacknich",
  12. "roles": [ "admin", "other_role1" ],
  13. "realm_name": "native",
  14. "email" : "[email protected]",
  15. "full_name": "Jack Nicholson"
  16. },
  17. "labels": {
  18. "direction": "north"
  19. },
  20. "data": {}
  21. },
  22. {
  23. "uid": "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
  24. "user": {
  25. "username": "jackspa",
  26. "roles": [ "user" ],
  27. "realm_name": "native",
  28. "email" : "[email protected]",
  29. "full_name": "Jack Sparrow"
  30. },
  31. "labels": {
  32. "direction": "south"
  33. },
  34. "data": {}
  35. },
  36. {
  37. "uid": "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
  38. "user": {
  39. "username": "jackrea",
  40. "roles": [ "admin" ],
  41. "realm_name": "native",
  42. "email" : "[email protected]",
  43. "full_name": "Jack Reacher"
  44. },
  45. "labels": {
  46. "direction": "west"
  47. },
  48. "data": {}
  49. }
  50. ]
  51. }
ユーザーjacknichは、プロファイルがuidsおよびlabelsヒントの両方に一致するため、最も高くランク付けされています。
ユーザーjackspaは、プロファイルがuidsヒントのみに一致するため、2番目にランク付けされています。
ユーザーjackreaは、プロファイルがヒントに一致しないため、最も低くランク付けされています。ただし、nameクエリに一致するため、応答から除外されることはありません。