十四、ES开启密码认证
一、为什么要用安全认证
每个人都能使用es-head插件跟kibana查看和修改es数据库,这是十分危险的。
所以需要给es-head和kibana添加密码认证。
二、环境准备
主机名 | 服务 | IP |
---|---|---|
es01 | es+kibana | 10.154.0.110 |
es02 | es | 10.154.0.111 |
我这使用的环境是两台es服务器,其中es01上安装了kibana,es-head插件使用的是谷歌扩展插件。
三、给es-head添加密码认证
1、生成证书和密钥
/usr/share/elasticsearch/bin/elasticsearch-certutil ca
/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
生成证书和密钥的过程,直接回车即可,使用默认的名字和空密码
2、更改证书所属主并复制给集群其他节点
mkdir /etc/elasticsearch/certs/
cp /usr/share/elasticsearch/*.p12 /etc/elasticsearch/certs/
chown -R elasticsearch:elasticsearch /etc/elasticsearch/certs/
scp -rp /etc/elasticsearch/certs/ 10.154.0.111:/etc/elasticsearch/certs/
注意,复制到其他节点后需要检查一下所属主,虽然使用了scp -rp但也不是百分百的保证证书所属主还是原来的,这里我发现复制到es02上所属主重新变为了root,一定要检查所属主!
3、修改配置文件开启安全功能
vim /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true #开启安全功能
xpack.security.transport.ssl.enabled: true #开启传输的时候通过SSL加密功能
xpack.security.transport.ssl.verification_mode: certificate #认证模式是证书认证
xpack.security.transport.ssl.keystore.path: certs/elastic-stack-ca.p12 #证书位置
xpack.security.transport.ssl.truststore.path: certs/elastic-stack-ca.p12 #证书位置
这里要注意的是使用的都是elastic-stack-ca.p12文件
4、重启所有节点
systemctl restart elasticsearch
此时访问es-head插件就需要输入密码了,效果如图
kibana已经访问不了了,效果如图
5、给es-head插件设置访问密码
我在es01上做的,需要在安装了kibana的服务器上做如下配置
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
接下来给几个账户设置密码,用户名密码都要记好,尤其是elastic这个用户,是用来登录es-head和kibana的用户。
6、重启所有节点的es服务
systemctl restart elasticsearch
此时通过es-head插件连接es01和es02都需要输入用户名密码了,使用elastic用户登录即可。
四、给kibana设置密码
1、给kibana配置证书
因为kibana跟es连接也需要证书加密通讯
mkdir -p /etc/kibana/certs
cp /etc/elasticsearch/certs/elastic-* /etc/kibana/certs/
2、赋予kibana属主权限,权限一定要是kibana
cd /etc/kibana/certs/
chown kibana:kibana *
3、设置kibana密码认证
这里给出两种方法,鉴于安全性考虑推荐使用第二种。
第一种方法:
修改kibana配置文件,这里写入的用户名密码都是明文的,不推荐该方法,了解即可。
vim /etc/kibana/kibana.yml
#修改46跟47行,设置密码,账户一定要是elastic,密码也一定要是之前设置的密码
elasticsearch.username: "elastic"
elasticsearch.password: "111111"
#修改58跟59行,设置证书路径,要写绝对路径
elasticsearch.ssl.certificate: /etc/kibana/certs/elastic-certificates.p12
elasticsearch.ssl.key: /etc/kibana/certs/elastic-stack-ca.p12
检查修改后的配置文件
第二种方法:
通过keystore配置加密的用户名密码信息
vim /etc/kibana/kibana.yml
#修改58跟59行,设置证书路径,要写绝对路径
elasticsearch.ssl.certificate: /etc/kibana/certs/elastic-certificates.p12
elasticsearch.ssl.key: /etc/kibana/certs/elastic-stack-ca.p12
#kibana我是使用root账户运行的,需要加上--allow-root选项
/usr/share/kibana/bin/kibana-keystore create --allow-root
#用户名一定要是elastic
/usr/share/kibana/bin/kibana-keystore add elasticsearch.username --allow-root
#密码也是之前设置elastic用户的密码
/usr/share/kibana/bin/kibana-keystore add elasticsearch.password --allow-root
4、重启kibana
systemctl restart kibana
最后效果如下
以后修改密码直接可以在kibana页面修改
五、写在最后
最后一点要说的是,重启elasticsearch和kibana时,一定要查看日志,确认无报错,es服务启动成功才行。
如果有错可以使用XSHELL工具的查找ERROR关键字,查看报错,也可参考es故障排查
参考资料
老男孩教育_day106_视频
官方文档
ES设置密码访问