ユーザープロファイルデータAPIの更新
ユーザープロファイル機能は、KibanaおよびElasticのObservability、Enterprise Search、Elastic Securityソリューション専用に設計されています。個々のユーザーや外部アプリケーションは、このAPIを直接呼び出すべきではありません。Elasticは、事前通知なしに将来のリリースでこの機能を変更または削除する権利を留保します。
指定された一意のIDに関連付けられたユーザープロファイルの特定のデータを更新します。
リクエスト
POST /_security/profile/<uid>/_data
前提条件
このAPIを使用するには、次のいずれかの権限を持っている必要があります:
manage_user_profile
クラスター権限。- リクエストで参照される名前空間に対する
update_profile_data
グローバル権限。
説明
ユーザープロファイルの更新APIは、既存のユーザープロファイルドキュメントの labels
および data
フィールドをJSONオブジェクトで更新します。新しいキーとその値がプロファイルドキュメントに追加され、競合するキーはリクエストに含まれるデータによって置き換えられます。
labels
と data
の両方について、コンテンツはトップレベルフィールドによって名前空間化されます。 update_profile_data
グローバル権限は、許可された名前空間のみを更新するための権限を付与します。
パスパラメータ
uid
- (必須、文字列)ユーザープロファイルの一意の識別子。
クエリパラメータ
if_seq_no
- (オプション、整数)ドキュメントがこのシーケンス番号を持つ場合にのみ操作を実行します。詳細は楽観的同時制御を参照してください。
if_primary_term
- (オプション、整数)ドキュメントがこのプライマリタームを持つ場合にのみ操作を実行します。詳細は楽観的同時制御を参照してください。
refresh
- (オプション、列挙型)
true
の場合、Elasticsearchは影響を受けたシャードをリフレッシュしてこの操作を検索可能にします。wait_for
の場合は、リフレッシュを待ってこの操作を検索可能にします。false
の場合は、リフレッシュに対して何もしません。有効な値:true
、false
、wait_for
。デフォルト:false
。 uid
- (必須、文字列)ユーザープロファイルの一意の識別子。
リクエストボディ
labels
- (必須*、オブジェクト)ユーザープロファイルに関連付けたい検索可能なデータ。このフィールドはネストされたデータ構造をサポートします。
labels
オブジェクト内では、トップレベルキーはアンダースコア(_
)で始めることはできず、ピリオド(.
)を含むことはできません。 data
- (必須*、オブジェクト)ユーザープロファイルに関連付けたい非検索可能なデータ。このフィールドはネストされたデータ構造をサポートします。
data
オブジェクト内では、トップレベルキーはアンダースコア(_
)で始めることはできず、ピリオド(.
)を含むことはできません。data
オブジェクトは検索可能ではありませんが、ユーザープロファイル取得APIで取得できます。
*この設定は、すべての状況ではなく、一部の状況で必須であることを示します。
レスポンスボディ
成功したユーザープロファイルデータAPIの更新呼び出しは、リクエストが承認されたことを示すJSON構造を返します。
Js
{
"acknowledged": true
}
例
次のリクエストは、uid
に一致する u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0
のプロファイルドキュメントを更新します。
Python
resp = client.security.update_user_profile_data(
uid="u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
labels={
"direction": "east"
},
data={
"app1": {
"theme": "default"
}
},
)
print(resp)
Js
const response = await client.security.updateUserProfileData({
uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
labels: {
direction: "east",
},
data: {
app1: {
theme: "default",
},
},
});
console.log(response);
コンソール
POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data
{
"labels": {
"direction": "east"
},
"data": {
"app1": {
"theme": "default"
}
}
}
プロファイルデータを更新して、一部のキーを置き換え、新しいキーを追加できます。
Python
resp = client.security.update_user_profile_data(
uid="u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
labels={
"direction": "west"
},
data={
"app1": {
"font": "large"
}
},
)
print(resp)
Js
const response = await client.security.updateUserProfileData({
uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
labels: {
direction: "west",
},
data: {
app1: {
font: "large",
},
},
});
console.log(response);
コンソール
POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data
{
"labels": {
"direction": "west"
},
"data": {
"app1": {
"font": "large"
}
}
}
現在プロファイルを取得すると、統合されたプロファイルデータが返されます。
Python
resp = client.security.get_user_profile(
uid="u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
data="*",
)
print(resp)
Js
const response = await client.security.getUserProfile({
uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
data: "*",
});
console.log(response);
コンソール
GET /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0?data=*
コンソール-結果
{
"profiles": [
{
"uid": "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
"enabled": true,
"last_synchronized": 1642650651037,
"user": {
"username": "jackrea",
"roles": [
"admin"
],
"realm_name": "native",
"full_name": "Jack Reacher",
"email": "[email protected]"
},
"labels": {
"direction": "west"
},
"data": {
"app1": {
"theme": "default",
"font": "large"
}
},
"_doc": {
"_primary_term": 88,
"_seq_no": 66
}
}
]
}