文档级安全性编辑

文档级安全性限制了用户有权读取的文档。具体来说,它限制了可以从基于文档的读取 API 访问哪些文档。

要启用文档级安全性,您可以使用查询来指定每个角色可以访问的文档。文档 query 与特定数据流、索引或通配符 (*) 模式相关联,并与为数据流和索引指定的权限结合使用。

指定的文档 query

  • 预期格式与在搜索请求中定义的格式相同
  • 支持 模板化角色查询,该查询可以访问当前已认证用户的详细信息
  • 接受以字符串值或嵌套 JSON 编写的查询
  • 支持大多数 Elasticsearch 查询领域特定语言 (DSL),但对于字段级和文档级安全性存在 一些限制

完全省略 query 参数将禁用相应索引权限条目的文档级安全性。

以下角色定义仅授予对属于所有 events-* 数据流和索引中的 click 类别的文档的读取访问权限

POST /_security/role/click_role
{
  "indices": [
    {
      "names": [ "events-*" ],
      "privileges": [ "read" ],
      "query": "{\"match\": {\"category\": \"click\"}}"
    }
  ]
}

您可以使用嵌套 JSON 语法编写相同的查询

POST _security/role/click_role
{
  "indices": [
    {
      "names": [ "events-*" ],
      "privileges": [ "read" ],
      "query": {
        "match": {
          "category": "click"
        }
      }
    }
  ]
}

以下角色仅授予对 department_id 等于 12 的文档的读取访问权限

POST /_security/role/dept_role
{
  "indices" : [
    {
      "names" : [ "*" ],
      "privileges" : [ "read" ],
      "query" : {
        "term" : { "department_id" : 12 }
      }
    }
  ]
}