ユーザープロファイルAPIの提案
ユーザープロファイル機能は、KibanaおよびElasticのObservability、Enterprise Search、Elastic Securityソリューション専用に設計されています。個々のユーザーや外部アプリケーションは、このAPIを直接呼び出すべきではありません。Elasticは、事前通知なしに将来のリリースでこの機能を変更または削除する権利を留保します。
指定された検索条件に一致するユーザープロファイルの提案を取得します。
リクエスト
GET /_security/profile/_suggest
POST /_security/profile/_suggest
前提条件
このAPIを使用するには、少なくともread_security
クラスター権限(またはmanage_user_profile
やmanage_security
などのより高い権限)が必要です。
クエリパラメータ
data
- (オプション、文字列)プロファイルドキュメントの
data
フィールドに対するフィルターのカンマ区切りリスト。すべてのコンテンツを返すには、data=*
を使用します。コンテンツのサブセットを返すには、data=<key>
を使用して指定された<key>
の下にネストされたコンテンツを取得します。デフォルトでは、コンテンツは返されません。
リクエストボディ
name
- (オプション、文字列)ユーザープロファイルドキュメントの名前関連フィールドに一致するために使用されるクエリ文字列。名前関連フィールドは、ユーザーの
username
、full_name
、およびemail
です。 size
- (オプション、整数)返すプロファイルの数。デフォルトは
10
です。 data
- (オプション、文字列)プロファイルドキュメントの
data
フィールドに対するフィルターのカンマ区切りリスト。これは、data
クエリパラメータと同じように機能します。
- `````hint
- (オプション、オブジェクト)提案結果の関連性を向上させるための追加の検索条件。指定されたヒントに一致するプロファイルは、応答でより高くランク付けされます。ただし、ヒントに一致しない場合でも、
name
フィールドクエリに一致する限り、プロファイルは応答から除外されません。- `````uids
- (オプション、文字列のリスト)一致させるためのプロファイルUIDのリスト。
labels
- (オプション、オブジェクト)プロファイルの
labels
セクションに対して一致させるための単一のキーと値のペア。キーは文字列でなければならず、値は文字列または文字列のリストでなければなりません。プロファイルは、少なくとも1つの文字列に一致する場合、一致すると見なされます。
レスポンスボディ
total
- (オブジェクト)一致するプロファイルの数に関するメタデータ。
took
- (整数)リクエストを実行するのにかかったミリ秒。
profiles
- (オブジェクトの配列)検索条件に一致するプロファイルドキュメントのリスト、関連性に基づいて順序付けされています。
例
以下のリクエストは、jack
に一致する名前関連フィールドを持つプロファイルドキュメントの提案を取得します。関連性を高めるために、uids
とlabels
の両方のヒントを指定しています:
Python
resp = client.security.suggest_user_profiles(
name="jack",
hint={
"uids": [
"u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
"u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
],
"labels": {
"direction": [
"north",
"east"
]
}
},
)
print(resp)
Js
const response = await client.security.suggestUserProfiles({
name: "jack",
hint: {
uids: [
"u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
"u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
],
labels: {
direction: ["north", "east"],
},
},
});
console.log(response);
コンソール
POST /_security/profile/_suggest
{
"name": "jack",
"hint": {
"uids": [
"u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
"u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
],
"labels": {
"direction": ["north", "east"]
}
}
}
プロファイルの名前関連フィールドは、応答に含まれるためにjack と一致する必要があります。 |
|
uids ヒントには、ユーザーjackspa およびjacknich の両方のプロファイルUIDが含まれています。 |
|
labels ヒントは、direction ラベルがnorth またはeast のいずれかと一致する場合、プロファイルをより高くランク付けします。 |
コンソール-結果
{
"took": 30,
"total": {
"value": 3,
"relation": "eq"
},
"profiles": [
{
"uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
"user": {
"username": "jacknich",
"roles": [ "admin", "other_role1" ],
"realm_name": "native",
"email" : "[email protected]",
"full_name": "Jack Nicholson"
},
"labels": {
"direction": "north"
},
"data": {}
},
{
"uid": "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
"user": {
"username": "jackspa",
"roles": [ "user" ],
"realm_name": "native",
"email" : "[email protected]",
"full_name": "Jack Sparrow"
},
"labels": {
"direction": "south"
},
"data": {}
},
{
"uid": "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
"user": {
"username": "jackrea",
"roles": [ "admin" ],
"realm_name": "native",
"email" : "[email protected]",
"full_name": "Jack Reacher"
},
"labels": {
"direction": "west"
},
"data": {}
}
]
}
ユーザーjacknich は、プロファイルがuids およびlabels ヒントの両方に一致するため、最も高くランク付けされています。 |
|
ユーザーjackspa は、プロファイルがuids ヒントのみに一致するため、2番目にランク付けされています。 |
|
ユーザーjackrea は、プロファイルがヒントに一致しないため、最も低くランク付けされています。ただし、name クエリに一致するため、応答から除外されることはありません。 |