授予数据流和别名的权限编辑

Elasticsearch 安全功能允许您保护针对 数据流别名 执行的操作。

数据流权限编辑

使用 索引权限 控制对数据流的访问。授予数据流的权限会授予其支持索引的相同权限。

例如,my-data-stream 包含两个支持索引:.ds-my-data-stream-2099.03.07-000001.ds-my-data-stream-2099.03.08-000002

用户被授予对 my-data-streamread 权限。

{
  "names" : [ "my-data-stream" ],
  "privileges" : [ "read" ]
}

因为用户会自动获得对数据流支持索引的相同权限,所以用户可以直接从 .ds-my-data-stream-2099.03.08-000002 检索文档。

response = client.get(
  index: '.ds-my-data-stream-2099.03.08-000002',
  id: 2
)
puts response
GET .ds-my-data-stream-2099.03.08-000002/_doc/2

之后 my-data-stream 滚动。这会创建一个新的支持索引:.ds-my-data-stream-2099.03.09-000003。因为用户仍然拥有对 my-data-streamread 权限,所以用户可以直接从 .ds-my-data-stream-2099.03.09-000003 检索文档。

response = client.get(
  index: '.ds-my-data-stream-2099.03.09-000003',
  id: 2
)
puts response
GET .ds-my-data-stream-2099.03.09-000003/_doc/2

别名权限编辑

使用 索引权限 控制对 别名 的访问。索引或数据流的权限不会授予其别名的权限。有关管理别名的信息,请参阅 别名

不要使用 过滤别名 代替 文档级安全。Elasticsearch 并不总是应用别名过滤器。

例如,current_year 别名仅指向 2015 索引。用户被授予对 2015 索引的 read 权限。

{
  "names" : [ "2015" ],
  "privileges" : [ "read" ]
}

当用户尝试从 current_year 别名检索文档时,Elasticsearch 会拒绝请求。

response = client.get(
  index: 'current_year',
  id: 1
)
puts response
GET current_year/_doc/1

要从 current_year 检索文档,用户必须拥有对该别名的 read 索引权限。

{
  "names" : [ "current_year" ],
  "privileges" : [ "read" ]
}