権限を持つユーザープロファイルAPI

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

指定されたuser profile IDに関連付けられたユーザーが、要求されたすべての権限を持っているかどうかを判断します。

リクエスト

GET /_security/profile/_has_privileges

POST /_security/profile/_has_privileges

前提条件

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

説明

このAPIは、Activate user profileによって返されるプロファイルIDを使用して、権限を確認するユーザーを特定します。これはHas privileges APIに似ていますが、呼び出しているユーザーの権限ではなく、他のユーザーの権限を確認します。

このAPIで指定できる権限のリストについてはSecurity privilegesを参照してください。

成功した呼び出しは、要求されたすべての権限を持つプロファイルIDのサブセットリストを返します。

リクエストボディ

  • uids
  • (リスト) プロファイルIDのリスト。権限はプロファイルに関連付けられたユーザーに対して確認されます。
  • privileges
  • 確認するすべての権限を含むオブジェクト。
    • cluster
    • (リスト) 確認したいクラスタ権限のリスト。
    • index
      • names
      • (リスト) インデックスのリスト。
      • allow_restricted_indices
      • (Boolean) 制限されたインデックスをカバーするパターンにワイルドカードや正規表現を使用する場合は、trueに設定する必要があります(デフォルトはfalse)。暗黙的に、制限されたインデックスはインデックスパターンに一致しません。なぜなら、制限されたインデックスは通常、権限が制限されており、それらをパターンテストに含めると、ほとんどのテストがfalseになるからです。制限されたインデックスがnamesリストに明示的に含まれている場合、allow_restricted_indicesの値に関係なく、それらに対して権限が確認されます。
      • privileges
      • (リスト) 指定されたインデックスに対して確認したい権限のリスト。
    • application
      • application
      • (文字列) アプリケーションの名前。
      • privileges
      • (リスト) 指定されたリソースに対して確認したい権限のリスト。アプリケーション権限名またはそれらの権限によって付与されるアクションの名前のいずれかである可能性があります。
      • resources
      • (リスト) 権限を確認すべきリソース名のリスト。

上記のprivilegesセクションは、他のHas Privileges APIのリクエストボディと同一であることに注意してください。

レスポンスボディ

成功した権限を持つユーザープロファイルAPI呼び出しは、2つのフィールドを含むJSON構造を返します:

  • has_privilege_uids
  • (リスト) 要求されたすべての権限を持つユーザーのプロファイルIDのサブセット。
  • errors
  • (オブジェクト) リクエストを満たす際に発生したエラー。このフィールドはエラーがない場合は存在しません。要求されたすべての権限を持たないユーザーのプロファイルIDは含まれません。
    1. - `````count
    • (数値) エラーの総数
    • details
    • (オブジェクト) プロファイルIDがキー、正確なエラーが値である詳細なエラーレポート。

以下の例は、指定されたプロファイルに関連付けられた2人のユーザーが要求されたクラスタ、インデックス、およびアプリケーション権限のすべてを持っているかどうかを確認します。

Python

  1. resp = client.security.has_privileges_user_profile(
  2. uids=[
  3. "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
  4. "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
  5. "u_does-not-exist_0"
  6. ],
  7. privileges={
  8. "cluster": [
  9. "monitor",
  10. "create_snapshot",
  11. "manage_ml"
  12. ],
  13. "index": [
  14. {
  15. "names": [
  16. "suppliers",
  17. "products"
  18. ],
  19. "privileges": [
  20. "create_doc"
  21. ]
  22. },
  23. {
  24. "names": [
  25. "inventory"
  26. ],
  27. "privileges": [
  28. "read",
  29. "write"
  30. ]
  31. }
  32. ],
  33. "application": [
  34. {
  35. "application": "inventory_manager",
  36. "privileges": [
  37. "read",
  38. "data:write/inventory"
  39. ],
  40. "resources": [
  41. "product/1852563"
  42. ]
  43. }
  44. ]
  45. },
  46. )
  47. print(resp)

Js

  1. const response = await client.security.hasPrivilegesUserProfile({
  2. uids: [
  3. "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
  4. "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
  5. "u_does-not-exist_0",
  6. ],
  7. privileges: {
  8. cluster: ["monitor", "create_snapshot", "manage_ml"],
  9. index: [
  10. {
  11. names: ["suppliers", "products"],
  12. privileges: ["create_doc"],
  13. },
  14. {
  15. names: ["inventory"],
  16. privileges: ["read", "write"],
  17. },
  18. ],
  19. application: [
  20. {
  21. application: "inventory_manager",
  22. privileges: ["read", "data:write/inventory"],
  23. resources: ["product/1852563"],
  24. },
  25. ],
  26. },
  27. });
  28. console.log(response);

コンソール

  1. POST /_security/profile/_has_privileges
  2. {
  3. "uids": [
  4. "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
  5. "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
  6. "u_does-not-exist_0"
  7. ],
  8. "privileges": {
  9. "cluster": [ "monitor", "create_snapshot", "manage_ml" ],
  10. "index" : [
  11. {
  12. "names": [ "suppliers", "products" ],
  13. "privileges": [ "create_doc"]
  14. },
  15. {
  16. "names": [ "inventory" ],
  17. "privileges" : [ "read", "write" ]
  18. }
  19. ],
  20. "application": [
  21. {
  22. "application": "inventory_manager",
  23. "privileges" : [ "read", "data:write/inventory" ],
  24. "resources" : [ "product/1852563" ]
  25. }
  26. ]
  27. }
  28. }

以下の例の出力は、3人のユーザーのうち1人だけがすべての権限を持っており、1人は見つからないことを示しています。

Js

  1. {
  2. "has_privilege_uids": ["u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1"],
  3. "errors": {
  4. "count": 1,
  5. "details": {
  6. "u_does-not-exist_0": {
  7. "type": "resource_not_found_exception",
  8. "reason": "profile document not found"
  9. }
  10. }
  11. }
  12. }