Elasticsearch容器化安全配置全攻略,【区块链学习笔记】15:以太坊中的状态树(实现Account Based Ledger)。
·
Elasticsearch 容器化安全配置指南
在 Linux 环境下通过 Docker 部署 Elasticsearch 时,默认安装不启用安全认证,这将导致未授权访问风险。以下是通过容器化方式配置账号密码的完整方案:
环境准备
确保已安装 Docker 和 docker-compose。推荐使用官方 Elasticsearch 镜像版本 7.0+(安全功能需 X-Pack 支持):
docker pull elasticsearch:8.3.2
单节点基础认证配置
创建 docker-compose.yml 文件配置基础安全:
version: '3'
services:
elasticsearch:
image: elasticsearch:8.3.2
environment:
- discovery.type=single-node
- xpack.security.enabled=true
- ELASTIC_PASSWORD=YourStrongPassword
ports:
- "9200:9200"
volumes:
- es/share/elasticsearch/data
volumes:
关键参数说明:
xpack.security.enabled=true启用安全模块ELASTIC_PASSWORD设置默认用户elastic的密码
启动服务后通过以下命令验证:
curl -u elastic:YourStrongPassword http://localhost:9200
多节点集群认证配置
对于生产集群,需配置节点间通信加密。示例 docker-compose.yml:
version: '3'
services:
es01:
image: elasticsearch:8.3.2
environment:
- node.name=es01
- cluster.name=secured-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- xpack.security.enabled=true
- xpack.security.transport.ssl.enabled=true
volumes:
- es01_data:/usr/share/elasticsearch/data
networks:
- elastic
es02:
depends_on:
- es01
environment:
- node.name=es02
# 其他环境变量同es01...
es03:
depends_on:
- es01
environment:
- node.name=es03
# 其他环境变量同es01...
kibana:
image: kibana:8.3.2
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_HOSTS=http://es01:9200
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD=YourKibanaPassword
depends_on:
- es01
volumes:
es01_data:
es02_data:
es03_data:
networks:
elastic:
driver: bridge
自定义用户与角色管理
容器启动后,进入容器内部执行用户管理命令:
docker exec -it <container_id> /bin/bash
使用 elasticsearch-users 工具创建新用户:
bin/elasticsearch-users useradd <username> -p <password> -r <role>
常用内置角色:
superuser完全控制权限kibana_systemKibana 服务账号beats_systemBeats 组件账号
TLS 证书配置(可选)
生成自签名证书并挂载到容器:
mkdir certs && cd certs
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout elasticsearch.key -out elasticsearch.crt
修改 compose 文件添加证书挂载:
volumes:
- ./certs:/usr/share/elasticsearch/config/certs
environment:
- xpack.security.http.ssl.enabled=true
- xpack.security.http.ssl.key=/usr/share/elasticsearch/config/certs/elasticsearch.key
- xpack.security.http.ssl.certificate=/usr/share/elasticsearch/config/certs/elasticsearch.crt
故障排查
常见问题解决方法:
- 证书权限问题:
chmod 644 *.key设置适当权限 - 内存锁定失败:在 compose 中添加
memlock: true和ulimits: memlock: -1:-1 - 密码未生效:确认环境变量名称正确(8.x 版本使用
ELASTIC_PASSWORD)
日志查看命令:
docker logs -f <container_id>
最佳实践建议
- 避免在 compose 文件中硬编码密码,使用 Docker secrets 或环境变量文件
- 定期轮换密码,特别是
elastic超级用户 - 为不同服务创建独立角色,遵循最小权限原则
- 生产环境建议配置 LDAP 或 SAML 集成认证
通过以上配置可建立具备基本认证能力的 Elasticsearch 容器化环境,后续可根据需要扩展 TLS 双向认证、审计日志等高级安全功能。
更多推荐
所有评论(0)