免费版本的 ES 没有权限控制功能,想要配置账户密码有两种方法,一是通过试用版使用 XPACK,二是另外配置 Nginx 来设置 Basic Auth。

之前的文章有讲过通过 Nginx 的方式,这篇介绍 ES 原生的方式配置账号密码。

本文中 ES 的版本为 7.2.1。

配置文件

打开配置文件

vi config/elasticsearch.yml

添加以下 X-Pack 配置

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

设置密码

ES 中默认设置了 elastickibanalogstash_systembeats_system 等多个默认账户,可以通过命令

bin/elasticsearch-setup-passwords interactive

为它们统一设置密码

运行脚本

docker run -d \
    --name elasticsearch \
    --network host \
    --volume /data/elk/elasticsearch/data:/usr/share/elasticsearch/data \
    --volume /data/elk/elasticsearch/config:/usr/share/elasticsearch/config \
    --volume /data/elk/elasticsearch/config/logs:/usr/share/elasticsearch/config/logs \
    --env discovery.type=single-node \
    docker.elastic.co/elasticsearch/elasticsearch:7.2.1

docker exec -it elasticsearch bin/elasticsearch-setup-passwords interactive

需要设置各个默认账户的密码

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y 

Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana]: 
Reenter password for [kibana]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

测试是否配置成功

curl http://elastic:yourpass@localhost:9200/

References