如何通过docker-compose修改Open Distro for Elasticsearch默认凭证admin/admin
操作方案
完全支持通过在docker-compose中配置环境变量的方式替换默认的admin/admin凭证,无需手动修改容器内的配置文件,具体操作步骤如下:
1. 生成自定义密码的BCrypt哈希值
Open Distro for Elasticsearch的内置用户密码以BCrypt哈希形式存储,首先需要生成你自定义密码对应的哈希值,可通过官方镜像自带的工具快速生成,执行以下命令即可:
docker run --rm amazon/opendistro-for-elasticsearch:latest /usr/share/elasticsearch/plugins/opendistro_security/tools/hash.sh -p 你的自定义明文密码
命令执行后输出的字符串即为对应密码的哈希值,复制留存备用。
2. 配置Elasticsearch服务环境变量
在docker-compose.yaml中,所有Elasticsearch节点的environment配置段添加以下参数,替换为上一步生成的哈希值:
- OPENDISTRO_SECURITY_INTERNALUSERS_ADMIN__PASSWORD=你生成的BCrypt哈希值
注意配置中的
ADMIN__PASSWORD是双下划线,对应配置文件层级internal_users.admin.password的转义写法。
3. 配置Kibana服务环境变量
Kibana需要使用新的凭证访问Elasticsearch,在kibana服务的environment配置段添加以下参数:
- ELASTICSEARCH_USERNAME=admin - ELASTICSEARCH_PASSWORD=你的自定义明文密码
如果同步修改了默认管理员用户名,将上方admin替换为你的自定义用户名即可。
配置示例
完整docker-compose.yaml片段参考:
version: '3' services: odfe-node1: image: amazon/opendistro-for-elasticsearch:1.13.3 environment: - cluster.name=odfe-cluster - node.name=odfe-node1 - discovery.seed_hosts=odfe-node1,odfe-node2 - cluster.initial_master_nodes=odfe-node1,odfe-node2 - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # 自定义admin密码哈希 - OPENDISTRO_SECURITY_INTERNALUSERS_ADMIN__PASSWORD=$2a$12$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 volumes: - odfe-data1:/usr/share/elasticsearch/data ports: - 9200:9200 networks: - odfe-net kibana: image: amazon/opendistro-for-elasticsearch-kibana:1.13.3 ports: - 5601:5601 environment: ELASTICSEARCH_URL: https://odfe-node1:9200 ELASTICSEARCH_HOSTS: https://odfe-node1:9200 # 自定义访问凭证 ELASTICSEARCH_USERNAME: admin ELASTICSEARCH_PASSWORD: 你的自定义明文密码 networks: - odfe-net volumes: odfe-data1: networks: odfe-net:
注意事项
- 该环境变量配置仅在集群第一次初始化启动时生效,如果之前已经启动过集群生成了持久化数据,需要先删除对应Elasticsearch的持久化卷再重新启动,新密码才会生效
- 复制哈希值时注意不要携带多余的空格、换行符,否则会导致密码校验失败
- 如果需要修改默认管理员用户名,除了修改上述用户名参数外,还需要额外配置角色映射,将新用户绑定到admin角色,否则会出现权限不足的问题
内容的提问来源于stack exchange,提问作者klee
相关产品推荐
相关产品推荐

