授予数据流和别名的权限

编辑

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 检索文档。

resp = client.get(
    index=".ds-my-data-stream-2099.03.08-000002",
    id="2",
)
print(resp)
response = client.get(
  index: '.ds-my-data-stream-2099.03.08-000002',
  id: 2
)
puts response
const response = await client.get({
  index: ".ds-my-data-stream-2099.03.08-000002",
  id: 2,
});
console.log(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 检索文档。

resp = client.get(
    index=".ds-my-data-stream-2099.03.09-000003",
    id="2",
)
print(resp)
response = client.get(
  index: '.ds-my-data-stream-2099.03.09-000003',
  id: 2
)
puts response
const response = await client.get({
  index: ".ds-my-data-stream-2099.03.09-000003",
  id: 2,
});
console.log(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 会拒绝该请求。

resp = client.get(
    index="current_year",
    id="1",
)
print(resp)
response = client.get(
  index: 'current_year',
  id: 1
)
puts response
const response = await client.get({
  index: "current_year",
  id: 1,
});
console.log(response);
GET current_year/_doc/1

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

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