用户配置文件 API 是否具有权限

编辑

用户配置文件 API 是否具有权限编辑

用户配置文件功能仅供 Kibana 和 Elastic 的可观察性、企业搜索和 Elastic 安全解决方案使用。单个用户和外部应用程序不应直接调用此 API。Elastic 保留更改或删除此功能的权利,恕不另行通知。

确定与指定 用户配置文件 ID 关联的用户是否具有所有请求的权限。

请求编辑

GET /_security/profile/_has_privileges

POST /_security/profile/_has_privileges

先决条件编辑

要使用此 API,您必须至少具有 read_security 集群权限(或更高权限,例如 manage_user_profilemanage_security)。

描述编辑

此 API 使用 激活用户配置文件 返回的配置文件 ID 来识别要检查其权限的用户。它类似于 是否具有权限 API,但与它不同的是,此 API 检查其他用户的权限,而不是调用它的用户的权限。

请参阅 安全权限,了解可以在此 API 中指定的权限列表。

成功调用将返回具有 所有 请求权限的配置文件 ID 的子集列表。

请求正文编辑

uids
(列表) 配置文件 ID 列表。将检查与配置文件关联的用户的权限。
privileges

包含要检查的所有权限的对象。

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

请注意,上面的 privileges 部分与 其他是否具有权限 API 的请求正文 相同。

响应正文编辑

成功的用户配置文件 API 是否具有权限调用将返回一个 JSON 结构,其中包含两个字段

has_privilege_uids
(列表) 具有 所有 请求权限的用户请求的配置文件 ID 的子集。
errors

(对象) 在完成请求时遇到的错误。如果没有任何错误,则此字段不存在。它 包含不具有所有请求权限的用户配置文件 ID。

errors 中对象的属性
count
(数字) 错误总数
details
(对象) 详细的错误报告,其中键是配置文件 ID,值是确切的错误。

示例编辑

以下示例检查与指定配置文件关联的两个用户是否具有所有请求的集群、索引和应用程序权限集

POST /_security/profile/_has_privileges
{
  "uids": [
    "u_LQPnxDxEjIH0GOUoFkZr5Y57YUwSkL9Joiq-g4OCbPc_0",
    "u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1",
    "u_does-not-exist_0"
  ],
  "privileges": {
    "cluster": [ "monitor", "create_snapshot", "manage_ml" ],
    "index" : [
      {
        "names": [ "suppliers", "products" ],
        "privileges": [ "create_doc"]
      },
      {
        "names": [ "inventory" ],
        "privileges" : [ "read", "write" ]
      }
    ],
    "application": [
      {
        "application": "inventory_manager",
        "privileges" : [ "read", "data:write/inventory" ],
        "resources" : [ "product/1852563" ]
      }
    ]
  }
}

以下示例输出表明三个用户中只有一个具有所有权限,其中一个用户未找到

{
  "has_privilege_uids": ["u_rzRnxDgEHIH0GOUoFkZr5Y27YUwSk19Joiq=g4OCxxB_1"],
  "errors": {
    "count": 1,
    "details": {
      "u_does-not-exist_0": {
        "type": "resource_not_found_exception",
        "reason": "profile document not found"
      }
    }
  }
}