拥有权限 API编辑

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

请求编辑

GET /_security/user/_has_privileges

POST /_security/user/_has_privileges

先决条件编辑

  • 所有用户都可以使用此 API,但只能用于确定自己的权限。要检查其他用户的权限,您必须使用 run as 功能。有关更多信息,请参阅 以其他用户身份提交请求

描述编辑

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

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

请求主体编辑

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

示例编辑

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

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