Elasticsearch 入门(四)开启 Elasticsearch 安全功能(使用Xpack)
elasticsearch 在7.1版本之后可以免费使用x-pack,不需要额外付费
从 Elastic Stack 6.8 和 7.1 开始,我们在默认分发包中免费提供多项安全功能,例如 TLS 加密通信、基于角色的访问控制 (RBAC),等等。
在 Elasticsearch 主节点上配置 TLS
1.首先在之前的docker-compose
文件上加上
....
image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
environment:
- "xpack.security.enabled=true"
....
- 启动容器后进入容器
docker exec -it containerid bash
- cd 命令更改至 master 目录,然后运行下列命令:
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
vi config/elasticsearch.yaml
将下列代码行粘贴到文件末尾。
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
- 手动生成密码。
bin/elasticsearch-setup-passwords interactive
第 2 步:Elasticsearch 集群密码 一旦主节点开始运行,便可以为集群设置密码了。在新终端中,我们必须通过 cd 命令更改至主节点目录。然后我们运行命令 bin/elasticsearch-setup-passwords auto。这将会为不同的内部堆栈用户生成随机密码。或者,您也可以跳过 auto 参数,改为通过 interactive 参数手动定义密码。请记录这些密码,我们很快就会再次用到这些密码。
- 保存记录好的密码
在 Kibana 中配置基于角色的访问控制 (RBAC)
- 进入
Kibana
容器docker exec -it containerid bash
- 文本编辑器打开
config/kibana.yml
文件 - 找到类似下面的代码行
#elasticsearch.username: "user"
#elasticsearch.password: "pass"
对 username 和 password 字段取消注释,方法是删除代码行起始部分的 # 符号。将 "user" 更改为 "kibana",然后将 "pass" 更改为 setup-passwords 命令告诉我们的任何 Kibana 密码。保存文件,然后我们便可通过运行 bin/kibana 启动 Kibana 了。