権限API

ログインしているユーザーが指定された権限のリストを持っているかどうかを判断します。

リクエスト

GET /_security/user/_has_privileges

POST /_security/user/_has_privileges

前提条件

  • すべてのユーザーはこのAPIを使用できますが、自分の権限を確認するためだけです。他のユーザーの権限を確認するには、実行者としての機能を使用する必要があります。詳細については、他のユーザーの代理でリクエストを送信するを参照してください。

説明

このAPIで指定できる権限のリストについては、セキュリティ権限を参照してください。

成功した呼び出しは、指定された各権限がユーザーに割り当てられているかどうかを示すJSON構造を返します。

リクエストボディ

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

次の例は、現在のユーザーが特定のクラスター、インデックス、およびアプリケーション権限を持っているかどうかを確認します:

Python

  1. resp = client.security.has_privileges(
  2. cluster=[
  3. "monitor",
  4. "manage"
  5. ],
  6. index=[
  7. {
  8. "names": [
  9. "suppliers",
  10. "products"
  11. ],
  12. "privileges": [
  13. "read"
  14. ]
  15. },
  16. {
  17. "names": [
  18. "inventory"
  19. ],
  20. "privileges": [
  21. "read",
  22. "write"
  23. ]
  24. }
  25. ],
  26. application=[
  27. {
  28. "application": "inventory_manager",
  29. "privileges": [
  30. "read",
  31. "data:write/inventory"
  32. ],
  33. "resources": [
  34. "product/1852563"
  35. ]
  36. }
  37. ],
  38. )
  39. print(resp)

Js

  1. const response = await client.security.hasPrivileges({
  2. cluster: ["monitor", "manage"],
  3. index: [
  4. {
  5. names: ["suppliers", "products"],
  6. privileges: ["read"],
  7. },
  8. {
  9. names: ["inventory"],
  10. privileges: ["read", "write"],
  11. },
  12. ],
  13. application: [
  14. {
  15. application: "inventory_manager",
  16. privileges: ["read", "data:write/inventory"],
  17. resources: ["product/1852563"],
  18. },
  19. ],
  20. });
  21. console.log(response);

コンソール

  1. GET /_security/user/_has_privileges
  2. {
  3. "cluster": [ "monitor", "manage" ],
  4. "index" : [
  5. {
  6. "names": [ "suppliers", "products" ],
  7. "privileges": [ "read" ]
  8. },
  9. {
  10. "names": [ "inventory" ],
  11. "privileges" : [ "read", "write" ]
  12. }
  13. ],
  14. "application": [
  15. {
  16. "application": "inventory_manager",
  17. "privileges" : [ "read", "data:write/inventory" ],
  18. "resources" : [ "product/1852563" ]
  19. }
  20. ]
  21. }

次の例の出力は、ユーザー「rdeniro」が持っている権限を示しています:

コンソール-結果

  1. {
  2. "username": "rdeniro",
  3. "has_all_requested" : false,
  4. "cluster" : {
  5. "monitor" : true,
  6. "manage" : false
  7. },
  8. "index" : {
  9. "suppliers" : {
  10. "read" : true
  11. },
  12. "products" : {
  13. "read" : true
  14. },
  15. "inventory" : {
  16. "read" : true,
  17. "write" : false
  18. }
  19. },
  20. "application" : {
  21. "inventory_manager" : {
  22. "product/1852563" : {
  23. "read": false,
  24. "data:write/inventory": false
  25. }
  26. }
  27. }
  28. }