elasticsearch集群添加安全认证功能(添加访问密码)

一、前言

在 6.8 之前免费版本并不包含安全认证功能,之后版本有开放一些基础认证功能;为了防止各种事故,一般都会设置es集群的访问密码;但是在我尝试设置访问密码的时候发现,设置访问密码的前提必须要设置集群证书,不然es启动报错。
关于设置证书的作用,简单来说就是在集群内定各个es节点都必须持有相同的证书,如果某个es的恶意节点想加入你的集群,那么它也必须有要相同的证书,这就可以防止别人恶意创建节点加入你的集群了。
本例子使用elasticsearch v7.2.0为例

二、具体步骤

1、编辑elasticsearch.yml文件(每个节点都要配置)

开启x-pack功能,并指定证书位置
添加内容如下:

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

2、生成 TLS 和身份验证

单独使用一个节点生成证书;
证书会生成在config目录下,证书文件名为 elastic-certificates.p12;

# cd到elasticsearch目录下的bin目录执行
./elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""

执行完上面命令以后就可以在elasticsearch目录下的config目录里看到多了一个elastic-certificates.p12文件;
把elastic-certificates.p12这个文件复制到其他节点下,也是elasticsearch目录下的config目录里即可;
复制方法这里就不多说了,有各种不同的方式;

3、重启es集群

全部节点都要重启一遍,因为elasticsearch.yml有了新的配置了;
重启这里也不多介绍了;

4、创建 Elasticsearch 集群密码

在其中一个节点设置密码即可,设置完之后,数据会自动同步到其他节点。

4-1、手动设置访问密码

# cd到elasticsearch目录下的bin目录执行
./elasticsearch-setup-passwords interactive

执行后如下图所示,先输入y,然后需要给es预设的账号依次设置账号密码;
在这里插入图片描述

4-2、自动设置访问密码

# cd到elasticsearch目录下的bin目录执行
./elasticsearch-setup-passwords auto

执行后如下图所示,对应账号的密码会自动生成,一定要拷贝下来!!!!
在这里插入图片描述

5、验证访问密码配置

5-1、在没有密码的情况下访问

经过上面的配置以后,如果没有带密码访问,会提示安全认证错误了;

curl http://localhost:9200
# 返回结果
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm="security" charset="UTF-8""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm="security" charset="UTF-8""}},"status":401}

5-2、使用访问密码

# 附带账号密码的访问
curl --user elastic:elastic http://localhost:9200

# 单独再输入密码的访问方式
curl --user elastic http://localhost:9200

正常返回结果: 返回结果示意图

6、脚本方式修改访问密码

在某些场景下,必须使用脚本执行,不能手动的话;上面手动的方式好难实现脚本自动化;
于是这里有个投机取巧的方法;

# 在其中一个节点执行就可以了
# cd到elasticsearch目录下的bin目录执行
# 创建一个超级用户
sh elasticsearch-users useradd copriwolf -p sayHi2Elastic -r superuser
# 使用这个超级用户修改elastic用户的密码
curl -u copriwolf:sayHi2Elastic -XPUT "http://localhost:9200/_xpack/security/user/elastic/_password?pretty" -H 'Content-Type: application/json' -d '{"password": "elastic"}'
# 其他要修改的账号同理
# 把刚创建的超级用户删除掉
sh elasticsearch-users userdel copriwolf

参考文章:
https://blog.csdn.net/piaoranyuji/article/details/114264033
https://blog.csdn.net/qq_38011415/article/details/111499840
https://0ne.store/2019/03/13/ELK-change-password-with-non-interactive-way/
https://blog.51cto.com/u_13740724/2438072(这里有kibana和logstash的访问密码配置示例)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值