拥有权限 API

编辑

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

请求

编辑

GET /_security/user/_has_privileges

POST /_security/user/_has_privileges

先决条件

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

描述

编辑

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

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

请求主体

编辑
cluster
(list) 您要检查的集群权限列表。
index
names
(list) 索引列表。
allow_restricted_indices
(Boolean) 如果使用通配符或正则表达式来匹配受限索引的模式,则需要将其设置为 true (默认为 false)。 隐式地,受限索引不匹配索引模式,因为受限索引通常具有有限的权限,并且将其包含在模式测试中会使大多数此类测试返回 false。 如果受限索引显式包含在 names 列表中,则无论 allow_restricted_indices 的值如何,都将对照它们检查权限。
privileges
(list) 您要检查的指定索引的权限列表。
application
application
(string) 应用程序的名称。
privileges
(list) 您要检查的指定资源的权限列表。可以是应用程序权限名称,也可以是这些权限授予的操作的名称。
resources
(list) 应该对照其检查权限的资源名称列表。

示例

编辑

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

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
      }
    }
  }
}