前言:最近在工作中用到了ElasticSearch。由于上线需要设置用户名和密码,发现ES7.7以后的版本将安全认证功能免费开放了。并将X-pack插件集成了到了开源的ElasticSearch版本中。下面将图文介绍如何利用X-pack给ElasticSearch相关组件设置用户名和密码。
环境说明:
- ES7.7.1官方docker 安装
- 宿主机器为centos7
- 单机单节点模式
详细步骤:
- 进入ES的安装目录修改
elasticsearch.yml
文件在最后一行添加xpack.security.enabled: true
开源版本默认是关闭的。
2.重新启动ES:./bin/elasticsearch -d
(这一步非常重要,必须启动才能新增用户名和密码);
3.以交互的方式设置用户名和密码:(记住你所设置的密码)
./bin/elasticsearch-setup-passwords interactive
4.到此已经完成ES及相关组件的加密了,后续访问和使用相关组件都需要验证用户名和密码了。
curl localhost:9200
会出现如下错误提示:
- 使用
curl localhost:9200 -u elastic:{password}
如下方式访问则正常:
后记:
1.如果你觉得之前用户的密码设置的太简单了,你想修改密码可以采用如下方式:
curl -XPOST -u elastic "localhost:9200/_security/user/elastic/_password" -H 'Content-Type: application/json' -d'{"password" : "abcd1234"}'
这种方式修改密码需要注意的是:(1)之前设置过elastic的用户密码;(2)还记的用户elastic用户的密码。
2. 如果忘记之前elastic用户的密码,这个时候又要用到ES的加密功能,那需要重置ES的密码认证;详细步骤如下:
- 修改
config/elasticsearch.yml
;注释掉xpack.security.enabled: true
这一行; - 重启ES,查看下索引,发现多了一个
.security-7
- 删除掉
.security-7
索引:
- 到此就回到ES没有设置密码的阶段了,如果想重新设置密码,请重头开始参考本文。