最近Elasticsearch官方宣布免费提供部分安全管理功能,发布内容在6.8.0和7.1.0版本中,详细内容请查看官网博客说明:
https://www.elastic.co/cn/blog/security-for-elasticsearch-is-now-free
https://github.com/memoryFuhao/elasticsearch_client (打个广告 以上链接是本人开发的一个es客户端工具,支持es大部分 CRUD操作 分页、分组、嵌套分组、and or ···,有需要的朋友可以pull代码直接使用)
想要对es进行权限相关的控制,需要借助X-Pack模块完成,现在步骤介绍如何使用X-Pack Api对es进行权限管理:
1、安装
下载链接(浏览器下载较慢,建议使用迅雷下载):
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz
修改配置文件(解压安装包后,进入config目录):
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["slave1"] #安装es机器的hostname
启动es:
进入bin路径下,执行 ./elasticsearch 启动。
2、配置系统用户密码
进入解压包bin路径下,执行 ./elasticsearch-setup-passwords interactive
依次输入配置各账号密码即可。
3、创建角色
角色对集群和索引的权限参考:https://www.elastic.co/guide/en/elastic-stack-overview/6.3/security-privileges.html
基本使用如下,创建拥有不同权限的两个角色:
curl -X POST -u elastic "localhost:9200/_security/role/test_role" -H 'Content-Type: application/json' -d'
{
"cluster": ["all"],
"indices": [
{
"names": [ "test" ],
"privileges": ["all"]
}
]
}
'
curl -X POST -u elastic "localhost:9200/_security/role/test_read_role" -H 'Content-Type: application/json' -d'
{
"cluster": ["all"],
"indices": [
{
"names": [ "test" ],
"privileges": ["read"]
}
]
}
'
4、创建用户并配置角色
创建用户详细参数设置可参考:https://www.elastic.co/guide/en/elasticsearch/reference/6.3/security-api-put-user.html
基本使用如下,创建用户并赋予不同角色:
curl -X POST -u elastic "localhost:9200/_security/user/fuhao" -H 'Content-Type: application/json' -d'
{
"password" : "123456",
"roles" : [ "test_role" ],
"full_name" : "memory",
"email" : "fuhao@example.com",
"metadata" : {
"intelligence" : 7
}
}
'
curl -X POST -u elastic "localhost:9200/_security/user/fuhao_read" -H 'Content-Type: application/json' -d'
{
"password" : "123456",
"roles" : [ "test_read_role" ],
"full_name" : "memory2",
"email" : "fuhao@example.com",
"metadata" : {
"intelligence" : 7
}
}
'
5.查看role和user
查看全部role:
curl -X GET -u elastic "localhost:9200/_security/role"
查看全部全部user:
curl -X GET -u elastic "localhost:9200/_security/user"
6.使用不同用户对索引进行CRUD操作,验证权限配置是否有效。
···
ps:目前es官网只免费提供权限管理到索引级别,如果要将权限粒度控制到更细粒度(字段级别),需付费使用。