Elasticsearch 单节点登录认证

1.在 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

2.设置密码

cd /home/es/elasticsearch-7.8.1
./bin/elasticsearch-setup-passwords interactive -u 'http://192.168.88。110:7920'

Elasticsearch 集群节点登录认证

1.0 启动三台es

./bin/elasticsearch -d
#查看 master 节点
curl http://192.168.88.110:7920/_cat/master

1.1执行命令激活xpack**

curl -H "Content-Type:application/json" -XPOST  http://192.168.88.110:7920/_xpack/license/start_trial?acknowledge=true

1.2es开启xpack

设置密码,在master设置,node节点可以同步该用户名/密码

xpack.security.enabled: true

到此为止完成xpack集群,目前无SSL。

2.使用SSL

2.1master节点创建证书

#进入elasticsearch-7.8.1
cd /home/es/elasticsearch/
#生成CA证书【CA证书:elastic-stack-ca.p12】
./bin/elasticsearch-certutil ca
#保存elastic-stack-ca.p12路径并输入密码(123456)
Please enter the desired output file [elastic-stack-ca.p12]:    #指定证书文件名直接回车为默认
Enter password for elastic-stack-ca.p12 : #输入证书密码
#创建证书私钥
./bin/elasticsearch-certutil  cert --ca elastic-stack-ca.p12 
#保存elastic-certificates.p12路径并输入密码(123456)
#将上面生成的两个文件拷贝到elastic的config目录下
Enter password for CA (elastic-stack-ca.p12) : #上边设置ca的密码 我自己设置的:123456
Please enter the desired output file [elastic-certificates.p12]: #私钥的文件名,回车默认
Enter password for elastic-certificates.p12 : #私钥密码 123456
#如果是root用户创建的,即需要修改权限,建议都用es用户创建
chmod 664 elastic-certificates.p12
chmod 664 elastic-stack-ca.p12
#将生成的2个文件都移动到config文件夹中
mkdir xpack
mv elastic-* ./xpack
#传证书和私钥到其他节点[需要输入当前用户的密码:我的是123456]
cd xpack 
scp elastic-* wsy2:$PWD   
scp elastic-* wsy3:$PWD
  • 修改配置文件elasticsearch.yml
[root@wsy1 elasticsearch-7.8.1]# cd /export/server/es/elasticsearch-6.5.4/config/
[root@wsy1 config]# vi elasticsearch.yml


#补充:tcp端口,集群内部通讯使用
transport.tcp.port: 9300
#节点配置【默认,在生产中可以修改】
node.master: true #有成为主节点的资格,建议3的倍数
node.data: true #存储数据
#node.ingest: true #可以针对海量请求时进行负载均衡
#防止脑裂问题,官方推荐【N/2 +1】,其中N是具有master资格的节点的数量(我们的情况是3,因此这个参数设置为2
#discovery.zen.minimum_master_nodes: 2
#添加xpack认证参数【修改证书路径】
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate # 证书认证级别
xpack.security.transport.ssl.keystore.path: /home/es/elasticsearch/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /home/es/elasticsearch/elastic-certificates.p12

#
  • 各个节点为 xpack.security.transport 添加密码,每个节点都执行这两个命令【我这里123456】
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password

./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
  • 查看集群状态(也可以通过kibana或者其他工具查看)
http://192.168.88.111:7920/_cluster/health

curl -u elastic:123456 -XGET 192.168.88.110:7920/_cat/health?v
  • 启动elasticsearch
cd /export/server/es/elasticsearch-6.5.4/bin
./elasticsearch -d #后台启动 elasticsearch
  • 设置加密密码【一个节点加密就行】【我全部弄的1234567】
./bin/elasticsearch-setup-passwords interactive
  • logstash增加访问es集群的用户及密码
user => "elastic" # 注意:这里演示使用超级账号,安全起见最好是使用自定义的账号,并授予该用户创建索引的权限,具体看下方地址
password => "1234567" # 密码是上面步骤设置的
  • elasticsearch-head访问es集群的用户及密码

elasticsearch-head插件此时再去访问有安全认证的es集群时,会发现无法进行查看,打开控制台可以看到报错:401 unauthorized
解决办法是修改elasticsearch.yml文件,增加以下配置。

#配置elasticsearch-head访问es集群的用户及密码
#http.cors.allow-headers: Authorization,content-type
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type 
#http://192.168.88.111:9100/?auth_user=elastic&auth_password=1234567

http://wsy1:9100/?auth_user=elastic&auth_password=changeme

修改三台es节点,然后重新启动,再次url+认证信息方式可以正常访问es集群。

http://192.168.88.111:9100/?auth_user=elkstack&auth_password=1234567

  • Kibana组件访问带有安全认证的Elasticsearch集群

配置文件kibana.yml中需要加入以下配置

elasticsearch.username: "kibana"  # 注意:此处不用超级账号elastic,而是使用kibana跟es连接的账号kibana
elasticsearch.password: "1234567"

然后重启kibana,再次访问的话就就需要输入上述账号密码才能登陆访问了

不一样的地方:
在Management下面的Kibana最后出现一个Security,有User和Role
方便kibana多用户创建及角色权限控制

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐