其他分享
首页 > 其他分享> > opendistro for elsasticsearh 更改密码

opendistro for elsasticsearh 更改密码

作者:互联网

opendistro是一个带有xpack 认证功能的一个es版本,当我们使用它的镜像的时候需要更改默认密码,具体操作步骤如下

 

xpack插件的密码相关介绍

xpack 是一个具有认证功能的一个插件,当需要更改密码的时候通过es 的插件里面的工具生成密码的hash 值,把这个加密后的指写入一个用户的文件,然后通过另一个工具去加载配置生效密码,最后密码会存储在一个 .opendistro_security 的索引里面,而镜像opendistro:v6.6.2 里面默认的admin 的密码是admin ,这个密码其实就是存储在了.opendistro_security 中。而我们更改密码最后更新的也是这个索引里面的配置。

 

在线更改密码

/bin/bash -c /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh
# 执行后提示输入密码,脚本后面没有用户参数默认更改的就是admin 密码,输入密码后生成一个密码字符串的hash指,请保存下来后面用到

将hash值 写入internal_users.yml
cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/
sudo cp internal_users.yml internal_users.yml.backup
sudo vim internal_users.yml
如下图所示区域
执行命令让elasticsearch更新密码
cd /usr/share/elasticsearch/plugins/opendistro_security/tools/  
sh securityadmin.sh  -cd ../securityconfig/ -icl -nhnv -cacert  ../../../config/root-ca.pem  -cert ../../../config/kirk.pem -key ../../../config/kirk-key.pem

#验证密码是否更改成功
curl -XGET https://localhost:9200 -u admin:goodadminpassword --insecure
curl -XGET http://localhost:9200 -u admin:goodadminpassword                 #非加密

 

保存新密码

如果上面的操作是在容器中进行的,那么需要把容器内部的更改提交到镜像中去

               现在的容器id     提交更改后新建的镜像
docker commit  2af2623c68db   opendistro_es:kzf-new3-v6.6.2

注意:

 

由于更改密码最后实际上更改的是.opendistro_security索引,而当我们的容器启动的时候如果挂载了宿主机的目录,这个目录是数据目录(里面有.opendistro_security),那么我们在容器里面的改动最后提交更改的时候是不会更新到新的镜像的,实际的数据还是宿主机里面的数据。所以如果要更改镜像里面的默认密码就不要在宿主机上面挂载数据目录。

 

所以上面的方式生成了一个新密码的镜像,以后如果使用新镜像的时候不能挂载宿主机上面旧的数据目录到镜像里面,而是挂载一个空目录,或者不挂载数据目录(但是这样数据不能持久化)

 

那么当我们已经有一个运行了很长时间的es 服务,容器的数据目录实际上是挂载在宿主机上面的,此时我们怎么更改密码呢?

首先,如果我们在保证数据不丢失的情况下肯定还是挂载这个宿主机上面的数据目录,此时如果采用一个带有新密码的镜像来启动服务,那么新密码是不生效的,因为宿主机上面的关于旧的密码的索引会覆盖新镜像里面去。

解决:

根据上面的方式在线更改密码,在容器里面查询关于密码的索引的id

sh-4.2# curl -XGET  http://localhost:9200/_cat/indices?v   -u admin:123123
health status index                          uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .opendistro_security           h_K0Yjw6SFyBzo4CoIupiw   1   0          5            0     30.4kb         30.4kb
yellow open   other_name_v20210220           KRVqSYPmRbiqMDugVj5s5Q   5   1   17175826       217860      6.6gb          6.6gb
yellow open   smart_news_sentiment_tag_nj_v1 ijAuBVuQR5akOWbrS2ha6g   5   1       2298          232      4.6mb          4.6mb

可以看到保存密码的索引.opendistro_security 的id 是h_K0Yjw6SFyBzo4CoIupiw ,接下来直接包容器里面新的索引数据保存覆盖到挂载的宿主机的数据目录

docker cp kzf-es:/usr/share/elasticsearch/data/nodes/0/indices/h_K0Yjw6SFyBzo4CoIupiw   /data/es-kzf-tmp-1/data/nodes/0/indices/

 

这样以后即使重启es 新密码也不会丢失了

标签:..,更改,宿主机,elsasticsearh,密码,镜像,opendistro
来源: https://www.cnblogs.com/fanggege/p/14456915.html