elasticsearch ELK -如何为单个用户提供对特定索引的权限

qyyhg6bp  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(2)|浏览(229)

簇中索引很少
索引_2019年1月1日
2019年1月2日
2019年1月3日
2019年1月4日
2019年1月5日
2019年1月6日
有两个用户USER1和USER2
USER1对此索引模式具有完全权限。
我只想为USER2提供前三个索引的访问权限。
如何在ELK中实现这一目标
弹性版本7.2

ht4b089n

ht4b089n1#

此功能(索引级安全性)不可能与elasticsearch的基本许可证一起使用。
但有几个其他的方法来存档它或多或少的投资的金钱和/或时间:
1.获取包含索引级别安全性elasticsearch security的Elasticsearch订阅
1.使用readonlyrestsearch guard等第三方插件
1.使用反向代理(apache httpd、nginx......)和进一步的配置,甚至使用自制代理API,在集群前面添加一个单独的安全层
玩得开心点!

0mkxixxg

0mkxixxg2#

我知道你问的是弹性v7.2,但我偶然发现了这个问题,我使用的是ES v8.4.1。如果其他人最终从谷歌搜索到这里,我想说,这是非常有可能做什么OP想要的。
我假设内置用户elastic的密码为“123456”,如果您使用的是Docker(link),则可以通过docker-compose.yml中的ELASTIC_PASSWORD: 123456设置该密码。
如果你使用的是Docker,通过docker exec -it elasticsearch bash在elasticsearch Docker容器中执行exec。
1.创建有权访问所需索引的角色:

curl -X POST "localhost:9200/_security/role/regular?pretty" -H 'Content-Type: application/json' -d'
{
  "cluster": ["all"],
  "indices": [
    {
      "names": [ "index_2019-01-01", "index_2019-01-02", "index_2019-01-03"],
      "privileges": ["all"]
    }
  ]
}
' -u elastic:123456

1.创建具有该角色的用户:

curl -X POST "localhost:9200/_security/user/john?pretty" -H 'Content-Type: application/json' -d'
{
  "password" : "123456",
  "roles" : [ "regular" ],
  "full_name" : "John John",
  "email" : "johnjohn@example.com",
  "metadata" : {
    "intelligence" : 7
  }
}
' -u elastic:123456

1.现在尝试从john可以访问的任何索引中提取所有文档(您应该可以看到所有文档):curl "localhost:9200/index_2019-01-01/_search?pretty=true" -u john:123456
1.另外,尝试从john无权访问的索引中获取文档(您应该在响应中收到403 HTTP状态):curl "localhost:9200/index_2019-01-04/_search?pretty=true" -u john:123456

相关问题