ES 安全认证模块之XPack

发布时间 2023-04-07 16:01:53作者: 郑小超

  X-Pack是ES扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0+之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。具体查看官方文档相关配置项也在官方文档中, ES版本是8.2.3,环境windows server2012 R2

1、创建证书颁发机构

 cmd定位到es运行时(bin)目录输入以下命令

elasticsearch-certutil ca

提示输入密码和文件输出路径,可以直接回车,也可以输入密码和输入自定义存放路径进行设置.回车的话,会生成如下文件

 

 

 后缀为ca的证书颁发机构文件

 

2、为节点创建证书文件

 cmd定位到es运行时(bin)目录输入以下命令

elasticsearch-certutil cert --ca elastic-stack-ca.p12

提示输入密码和文件输出路径,可以直接回车,也可以输入密码和输入自定义存放路径进行设置.回车的话,会生成如下文件

 

 

3、keystore和truststore设置密码

keystore:存放公钥,私钥,数字签名等信息
truststore:存放信任的证书
keystore和truststore都存放key,不同的地方是truststore只存放公钥的数字证书,代表了可以信任的证书,keystore存放私钥相关.

cmd定位到es运行时(bin)目录输入以下命令

elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password

创建证书时如果输了密码,需要输入这个密码.这里不做输入回车,操作完成之后,相关的信息就会写入到config文件夹下的elasticsearch.keystore中

 

4、修改配置文件修改Xpack相关信息

打开elasticsearch.yml文件加入以下配置

xpack.security.enabled: true

xpack.security.http.ssl:
  enabled: false
  verification_mode: certificate
  truststore.path: elastic-certificates.p12
  keystore.path: elastic-certificates.p12

xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: elastic-certificates.p12
  truststore.path: elastic-certificates.p12

这里要注意elastic-certificates.p12证书文件的位置,这里默认读取的是config文件夹下,所以需要拷贝一下.

 

5、集群环境

需要将操作节点生成的证书文件复制到其余节点的config目录下.

 

6、运行

按上述配置结束完毕之后,在操作节点重置elastic用户的密码, cmd定位到es运行时(bin)目录输入以下命令

elasticsearch-reset-password -u elastic -i <password>

输入用户名密码完成登录.

 

7、kibana访问

elastic账号是无法用于kibana的登陆的,所以需要自行创建账号,并授权,cmd定位到es运行时(bin)目录输入以下命令

(1)、创建登录kibana的账号

elasticsearch-users useradd 用户名

接着会提示输入密码,键入密码即可.这里用户创建完成

(2)、角色授权操作

elasticsearch-users roles -a superuser 用户名
elasticsearch-users roles -a kibana_system 用户名

superuser能正常打开es的9200端口,kibana_system配置后才可以正常对接kb和es

(3)、查看授权

elasticsearch-users roles -v 用户名

 

 授权成功.

(4)、修改kibana配置文件kibana.yml

修改以下配置:

elasticsearch.username: "用户名"
elasticsearch.password: "用户密码"
elasticsearch.hosts: ["http://1.1.1.1:9200","http://2.2.2.2:9200","http://3.3.3.3:9200"]
server.port: 5601

 

(5)、集群环境

如果(4)中host配置了多个节点,需要在节点中重复添加用户和授权的操作