elasticsearch - 使用 docker 环境变量在 Elasticsearch 中启用身份验证
问题描述
我正在使用 Elasticsearch v.6.2.4 的 Docker 映像。我的问题是安装了 X-Pack,但它不要求提供凭据。
我知道 X-Pack 已安装,如下所示:
解决方案
Xpack 附带的 Elasticsearch 安全功能不是免费的,有一个月的试用版,然后是付费版。
但是根据这个弹性博客,它从版本(6.8.0 和 7.1.0)开始是免费的。
我写这个答案是为了用 docker-compose 激活免费的 Elasticsearch 安全功能。
请记住,在使用以下代码时,Kibana 和 Elasticsearch 节点都使用用户名和密码是安全的,因此访问 Elasticsearch 的其余客户端必须具有凭据,这个答案会有所帮助。
那是我的代码:
version: '3'
services:
create_certs:
container_name: create_certs
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
command: >
bash -c '
if [[ ! -f ./config/certificates/elastic-certificates.p12 ]]; then
bin/elasticsearch-certutil cert -out config/certificates/elastic-certificates.p12 -pass ""
fi;
chown -R 1000:0 /usr/share/elasticsearch/config/certificates
'
user: "0"
working_dir: /usr/share/elasticsearch
volumes: ['certs:/usr/share/elasticsearch/config/certificates']
elasticsearch:
container_name: elasticsearch
depends_on: [create_certs]
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- ELASTIC_PASSWORD=MyPassword # password for default user: elastic
- xpack.security.enabled=true
- xpack.security.transport.ssl.enabled=true
- xpack.security.transport.ssl.verification_mode=certificate
- xpack.security.transport.ssl.keystore.path=/usr/share/elasticsearch/config/certificates/elastic-certificates.p12
- xpack.security.transport.ssl.truststore.path=/usr/share/elasticsearch/config/certificates/elastic-certificates.p12
volumes: ['esdata:/usr/share/elasticsearch/data', 'certs:/usr/share/elasticsearch/config/certificates']
ulimits:
nofile:
soft: 65536
hard: 65536
memlock:
soft: -1
hard: -1
ports:
- "9200:9200"
kibana:
container_name: kibana
depends_on: [elasticsearch]
image: docker.elastic.co/kibana/kibana:6.8.0
environment:
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_PASSWORD=MyPassword
ports:
- "5601:5601"
volumes: {"esdata", "certs"}
推荐阅读
- html - 如何在此 HTML 电子邮件模板中调整图像?
- node.js - NPM 跨脚本持久化环境变量
- java - 如何使用位于导航栏应用程序子布局上的“findViewById()”方法修复访问 EditText 的实例?
- python-3.x - AttributeError:“ClassName”对象在 Appium Python 上没有属性“驱动程序”
- ios - 是否可以定义相对于未知 UIViews 的自动布局约束?
- flask - Flask - 如何在所有子域中访问 remember_me 令牌
- c# - 更新实体框架中的实体会导致创建新行
- python-3.x - 使用python在持久tcp上进行多个文件传输
- python - 可以将神经网络配置为在 Keras 中输出矩阵吗?
- ios - 如何异步下载和缓存视频以在我的应用程序中使用?