创建或更新应用程序权限 API

编辑

创建或更新应用程序权限 API编辑

添加或更新应用程序权限

请求编辑

POST /_security/privilege

PUT /_security/privilege

先决条件编辑

要使用此 API,您必须拥有以下任一权限:

  • manage_security 集群权限(或更高级别的权限,例如 all);*或*
  • 请求中引用的应用程序的*“管理应用程序权限”*全局权限

描述编辑

此 API 创建或更新权限。要删除权限,请使用删除应用程序权限 API

有关更多信息,请参阅应用程序权限

要检查用户的应用程序权限,请使用拥有权限 API

请求正文编辑

正文是一个 JSON 对象,其中字段的名称是应用程序名称,每个字段的值是一个对象。此内部对象中的字段是权限的名称,每个值都是一个 JSON 对象,其中包含以下字段

操作
(字符串数组)此权限授予的操作名称列表。此字段必须存在,并且不能为空数组。
元数据
(对象)可选元数据。在 metadata 对象中,以 _ 开头的键保留供系统使用。

验证编辑

应用程序名称

应用程序名称由*前缀*和可选的*后缀*组成,它们符合以下规则

  • 前缀必须以小写 ASCII 字母开头
  • 前缀只能包含 ASCII 字母或数字
  • 前缀必须至少包含 3 个字符
  • 如果存在后缀,则必须以 -_ 开头
  • 后缀不能包含以下任何字符:\/*?"<>|,*
  • 名称的任何部分都不能包含空格。
权限名称
权限名称必须以小写 ASCII 字母开头,并且只能包含 ASCII 字母和数字以及字符 _-.
操作名称
操作名称可以包含任意数量的可打印 ASCII 字符,并且必须包含以下字符中的至少一个:/ *:

响应正文编辑

成功的调用将返回一个 JSON 结构,该结构显示权限是已创建还是已更新。

示例编辑

要添加单个权限,请向 /_security/privilege/ 端点提交 PUT 或 POST 请求。例如

PUT /_security/privilege
{
  "myapp": {
    "read": {
      "actions": [ 
        "data:read/*" , 
        "action:login" ],
        "metadata": { 
          "description": "Read access to myapp"
        }
      }
    }
}

这些字符串在“myapp”应用程序中具有意义。Elasticsearch 不会为它们分配任何含义。

此处使用通配符(*)意味着此权限授予对以 data:read/ 开头的所有操作的访问权限。Elasticsearch 不会为这些操作分配任何含义。但是,如果请求包含应用程序权限(例如 data:read/usersdata:read/settings),则拥有权限 API 会 respetar el uso de un comodín y devuelve true.

元数据对象是可选的。

{
  "myapp": {
    "read": {
      "created": true 
    }
  }
}

更新现有权限时,created 设置为 false。

要添加多个权限,请向 /_security/privilege/ 端点提交 POST 请求。例如

PUT /_security/privilege
{
  "app01": {
    "read": {
      "actions": [ "action:login", "data:read/*" ]
    },
    "write": {
      "actions": [ "action:login", "data:write/*" ]
    }
  },
  "app02": {
    "all": {
      "actions": [ "*" ]
    }
  }
}

成功的调用将返回一个 JSON 结构,该结构显示权限是已创建还是已更新。

{
  "app02": {
    "all": {
      "created": true
    }
  },
  "app01": {
    "read": {
      "created": true
    },
    "write": {
      "created": true
    }
  }
}