解决Elasticsearch集群开启账户密码安全配置自相矛盾的坑

这篇具有很好参考价值的文章主要介绍了解决Elasticsearch集群开启账户密码安全配置自相矛盾的坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、采坑过程

最近在配置elasticsearch生产可用的集群环境时,集群搭建完成后,为了安全,启用es集群的安全配置,根据官方文档Set up minimal security for Elasticsearch这一节来配置集群账户密码,然后就出现了开启安全模式后,./bin/elasticsearch-setup-passwords auto ,./bin/elasticsearch-setup-passwords interactive 两个命令均无法访问。提示集群健康状态无法检查,实际上就是集群本身的通讯也存在问题。提示信息如下:

Failed to determine the health of the cluster running at http://192.168.122.1:9200
Unexpected response code [503] from calling GET http://192.168.122.1:9200/_cluster/health?pretty
Cause: master_not_discovered_exception
It is recommended that you resolve the issues with your cluster before running elasticsearch-setup-passwords.
It is very likely that the password changes will fail when run against an unhealthy cluster.
Do you want to continue with the password setup process [y/N]ERROR: User cancelled operation

看了很多遍官方文档,发现了一句话:

The minimal security scenario is not sufficient for production mode clusters. If your cluster has multiple nodes, you must enable minimal security and then configure Transport Layer Security (TLS) between nodes.

意思是说:最小安全方案对于生产模式集群是不够的。如果您的集群有多个节点,则必须启用最低安全性,然后在节点之间配置传输层安全性 (TLS)。
如果只有一个节点,那么elasticsearch.yml添加如下配置即可:

discovery.type: single-node

但是因为本身我的集群有3个节点,那肯定不能设置为单节点模式,那么这一项不可用,根据文档的提示,那么集群环境下,其实还需要配置其他的安全配置。于是解决方案其实就出来了。根据官方文档的后面一个章节Set up basic security for the Elastic Stack的内容进行配置集群环境的基本安全配置就OK了。

2、 配置步骤:

提示,因为我每次操作命令都是进入es的bin目录下,因此与官方文档不完全相同。

2.1 生成CA证书

在任何单个节点上,使用 elasticsearch-certutil 工具为您的集群生成 CA。

./elasticsearch-certutil ca

a.出现提示时,接受默认文件名,即 elastic-stack-ca.p12。此文件包含 CA 的公共证书和用于为每个节点签署证书的私钥。
b.输入 CA 的密码。如果不部署到生产环境,您可以选择将密码留空。

2.2 配置CA证书

在任何单个节点上,为集群中的节点生成证书和私钥。包括在上一步中生成的 elastic-stack-ca.p12 输出文件。

./elasticsearch-certutil cert --ca elastic-stack-ca.p12

a.输入您的 CA 的密码,或者如果您在上一步中没有配置密码,请按 Enter。
b.为证书创建密码并接受默认文件名。
输出文件是一个名为 elastic-certificates.p12 的密钥库。此文件包含节点证书、节点密钥和 CA 证书。

2.3 复制证书到集群

在集群中的每个节点上,将 elastic-certificates.p12 文件复制到 $ES_PATH_CONF 目录。也就是config目录。

2.4 修改配置文件

a.基本集群配置,不启用安全也需要的配置:

cluster.name: my-cluster  #每个节点一致
node.name: node-1  #每个节点不同

b.安全配置

由于在群集的每个节点上使用相同的Elastic-Certificate.p12文件,因此将验证模式设置为证书:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

2.5 配置密码

如果在创建节点证书时输入了密码,运行以下命令以将密码存储在Elasticsearch密钥库中:

./elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

2.4-2.5的步骤在每个节点中都需要进行。

2.6 重新启动es。

我是采用启动的时候指定pid文件的方式,启动命令如下:

./elasticsearch -d -p /home/elk/pid/es-node-01

就可以使用以下命令停止es

cat /home/elk/pid/es-node-01
kill -SIGTERM 32167   #32167是上一句语句输出的结果

2.7 配置账户密码

再次启动后,即可运行以下命令配置账户密码:

./elasticsearch-setup-passwords auto

就会自动输出所有内置账户的随机密码,可以后续自行修改。
也可以使用以下命令自定义密码:

./elasticsearch-setup-passwords interactive

上述命令只需要在其中一个节点运行,不需要所有节点运行。
上述输出的密码可以配置到kibana或者其他需要连接es的工具中,比如cerebro监控。

3、总结

依靠零碎的学习的内容,实际上很难完整的掌握一项技术的核心内容。还是需要看官方文档,并且最好各个章节都理解一下,才能选择出适合自身需要的配置方式。文章来源地址https://www.toymoban.com/news/detail-403187.html

到了这里,关于解决Elasticsearch集群开启账户密码安全配置自相矛盾的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包