十四、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设置密码访问

今天的学习是为了以后的工作更加的轻松!
原文地址:https://www.cnblogs.com/tz90/p/15252120.html