拥有权限 API

编辑

确定登录用户是否具有指定的权限列表。

请求

编辑

GET /_security/user/_has_privileges

POST /_security/user/_has_privileges

先决条件

编辑
  • 所有用户都可以使用此 API,但仅限于确定其自身的权限。要检查其他用户的权限,必须使用“以…身份运行”功能。有关更多信息,请参阅代表其他用户提交请求

描述

编辑

有关可以在此 API 中指定的权限列表,请参阅安全权限

成功的调用将返回一个 JSON 结构,该结构显示每个指定的权限是否已分配给用户。

请求体

编辑
集群
(列表) 要检查的集群权限列表。
索引
名称
(列表) 索引列表。
允许受限索引
(布尔值) 如果使用通配符或正则表达式来匹配覆盖受限索引的模式,则需要将其设置为true(默认值为false)。隐式地,受限索引与索引模式不匹配,因为受限索引通常具有有限的权限,并且在模式测试中包含它们会使大多数此类测试变为false。如果在names列表中明确包含受限索引,则无论allow_restricted_indices的值如何,都将针对它们检查权限。
权限
(列表) 要为指定的索引检查的权限列表。
应用程序
应用程序
(字符串) 应用程序的名称。
权限
(列表) 要为指定的资源检查的权限列表。可以是应用程序权限名称,也可以是这些权限授予的操作的名称。
资源
(列表) 应针对其检查权限的资源名称列表。

示例

编辑

以下示例检查当前用户是否具有特定的一组集群、索引和应用程序权限。

resp = client.security.has_privileges(
    cluster=[
        "monitor",
        "manage"
    ],
    index=[
        {
            "names": [
                "suppliers",
                "products"
            ],
            "privileges": [
                "read"
            ]
        },
        {
            "names": [
                "inventory"
            ],
            "privileges": [
                "read",
                "write"
            ]
        }
    ],
    application=[
        {
            "application": "inventory_manager",
            "privileges": [
                "read",
                "data:write/inventory"
            ],
            "resources": [
                "product/1852563"
            ]
        }
    ],
)
print(resp)
const response = await client.security.hasPrivileges({
  cluster: ["monitor", "manage"],
  index: [
    {
      names: ["suppliers", "products"],
      privileges: ["read"],
    },
    {
      names: ["inventory"],
      privileges: ["read", "write"],
    },
  ],
  application: [
    {
      application: "inventory_manager",
      privileges: ["read", "data:write/inventory"],
      resources: ["product/1852563"],
    },
  ],
});
console.log(response);
GET /_security/user/_has_privileges
{
  "cluster": [ "monitor", "manage" ],
  "index" : [
    {
      "names": [ "suppliers", "products" ],
      "privileges": [ "read" ]
    },
    {
      "names": [ "inventory" ],
      "privileges" : [ "read", "write" ]
    }
  ],
  "application": [
    {
      "application": "inventory_manager",
      "privileges" : [ "read", "data:write/inventory" ],
      "resources" : [ "product/1852563" ]
    }
  ]
}

以下示例输出指示“rdeniro”用户拥有哪些权限。

{
  "username": "rdeniro",
  "has_all_requested" : false,
  "cluster" : {
    "monitor" : true,
    "manage" : false
  },
  "index" : {
    "suppliers" : {
      "read" : true
    },
    "products" : {
      "read" : true
    },
    "inventory" : {
      "read" : true,
      "write" : false
    }
  },
  "application" : {
    "inventory_manager" : {
      "product/1852563" : {
        "read": false,
        "data:write/inventory": false
      }
    }
  }
}