Elasticsearch开启HTTP安全认证设置用户名和密码的方法

发表于 2023-10-10 13:53:55
阅读 128

介绍

介绍

前面福哥带着大家学会了elastic官方的用于管理Elasticsearch搜索引擎的工具Kibana的安装使用,大家可以看到Kibana可以针对Elasticsearch进行完全的索引、数据的操作,但是Kibana缺又不需要登录就可以使用,这有点太不安全了!

其实Kibana不用登录不是Kibana自己的问题,是我们的Elasticsearch搜索引擎没有开启安全认证的原因,如果ES开启了认证那么Kibana就会需要登录才能使用了!

今天福哥就带着大家学习如果开启Elasticsearch的HTTP安全认证~

环境

镜像版本
elasticsearch:6.8.18、kibana:6.8.18
操作系统CentOS 7 x86_64 2009
服务器TFCentOS7x64
IP192.168.168.68
端口9200、5601

使用

启动Elasticsearch

首先把Elasticsearch启动起来。

docker start tfelasticsearch

62616a666c9f7d26e69551be56d86a19.png

生成TLS证书

进入到tfelasticsearch的容器里面,进入到Elasticsearch的bin目录下面,使用证书工具elasticsearch-certutil生成TLS证书,最后设置证书文件所有者为elasticsearch。

docker exec -ti tfelasticsearch bash
cd /usr/share/elasticsearch/bin/
./elasticsearch-certutil cert -out ../config/elasticsearch_certificate.p12 -pass ""
chown elasticsearch ../config/elasticsearch_certificate.p12

73d479e291b4a6369507ae93eb2c384c.png

开启ES认证

编辑/usr/share/elasticsearch/config/elasticsearch.yml配置文件,增加如下配置信息。

# security
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elasticsearch_certificate.p12
xpack.security.transport.ssl.truststore.path: elasticsearch_certificate.p12

76b63c07b48be28d286bdc77f01e5ca9.png

重启ES

按照Elasticsearch的设计,必须先重新启动,使安全模式生效了才能设置密码。

也就是说一定会有一个开启了安全模式,又无法正常认证的“故障”状态,直到密码设置完成!真是恶心啊~

docker restart tfelasticsearch

78742162134c32dfcd273899d91d72ba.png

设置密码

现在可以设置密码了,进入到Elasticsearch的容器里面,进入到Elasticsearch的bin目录下面,使用elasticsearch-setup-passwords工具设置密码。

docker exec -ti tfelasticsearch bash
cd /usr/share/elasticsearch/bin/
./elasticsearch-setup-passwords interactive

569c42e0885ace418ecd0e8b5087250e.png

这个命令会设置很多用户,包括elastic、apm_system、kibana、logstash_system、beats_system、remote_monitoring_user,基本上我们用于配合ES使用的软件工具都包括了!

启动Kibana

现在我们把Kibana启动起来!

docker start tfkibana

7900278e4bd07a5fddb7e86e24b177f6.png

Kibana配置ES用户名和密码

现在进入到tfkibana的容器里面,把Elasticsearch开启安全认证时候设置的kibana的用户名和密码配置到/usr/share/kibana/config/kibana.yml里面。

elasticsearch.username: "kibana"
elasticsearch.password: "********"

4580d5a0de7f665e26593a8d1a54bba1.png

重启Kibana

重新启动Kibana,使Kibana可以正常连接Elasticsearch。

docker restart tfkibana

36ac5d1c0024ac64928e7fd7ded6a81b.png

登录Kibana

再次访问Kibana会发现需要登录了!可以使用任何Elasticsearch里配置的用户名和密码登录!

9827832b9df94bd3ff676662d16bd6ad.png登录后可以在左下角看到登录用户以及退出按钮!

b554d9a58496721ac73bf6d138d76c28.png

修改密码

点击登录用户elastic链接,可以看到有修改密码的功能。

c507fe6a5cd00d56cf253e74473cfb0b.png原来在Kibana里可以修改ES的密码啊,真不错!

70efd02ae1bd354e7624ed91d797f7b6.png

总结

今天福哥带着大家学习了开启Elasticsearch搜索引擎的安全认证的方法,设置了用户名和密码之后再使用ES就安全多了!使用Kibana操作ES也安全多了!