ES和Kibana配置权限控制
一、场景说明
TLSv
加密通信;这些安全功能是从ES6.8版本之后默认加进来,所以如果你部署的版本很老的话,那么这些安全功能就没办法实现了,这里我演示的环境es的版本为最新的
7.12.1
。
二、创建证书
1、生成CA证书
说明:这里我的ES集群都是通过RPM包安装的,如果你是源码部署的话,
elasticsearch-certutil
命令在es安装路径中的bin
目录下
[ ]
2、为节点签发证书
[ ]
3、将证书拷贝到所有节点
scp /etc/elasticsearch/elastic-certificates.p12 root@192.168.66.16:/etc/elasticsearch/
注意:证书创建完成后,我们需要赋予es服务运行用户相应的权限,不然下面生成密码时会报错!ES集群所有节点都需要赋权。
chown -R elasticsearch. /etc/elasticsearch
三、修改ES配置
1、添加配置
这里我们需要修改ES配置,开启SSL认证和安装xpack,以及配置我们上面刚刚创建好的证书文件
注意:ES集群节点都需要按照下面的操作进行修改,然后重启ES服务
[root@es-node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
#配置文件最后添加如下配置
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate # 证书认证级别
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p1
2、重启服务
修改完成后,重启启动ES服务,注意检查启动日志是否有报错
systemctl restart elasticsearch
四、生成密码
上面我们去访问ES节点就需要输入密码了,现在我们就需要生成相应服务的访问密码
[ ]
[ ]
现在我们再通过浏览去访问ES:https://IP:9200
注意:这里使用的是
elastic
账号,该账号拥有superuser
角色,是内置的超级用户
现在我们可以通过ES集群任意节点访问,都可以使用上面生成的随机密码登入了
五、Logstash配置
上面我们开启了ES的安全认证同时也生成了相应服务的访问用户和密码。
用户默认为
logstash_system
,密码则是上面生成的随机密码。
[ ]
修改完成后重启
logstash
服务
[ ]
之后我们Logstah再往es中推送数据时就需要在片段文件中指定es的账号和密码了,演示代码如下:
output {
elasticsearch {
hosts => ["http://192.168.66.15:9200", "http://192.168.66.16:9200"]
index => "logs-%{+YYYY.MM.dd}"
user => "elastic" # 注意:这里演示使用超级账号,安全起见最好是使用自定义的账号,并授予该用户创建索引的权限
password => "UI0xxxxxxxxxx"
}
}
六、Kibana配置
kibana默认也是没有开启安全认证的,上面我们通过elasticsearch-setup-password
命令已经生成了kibana服务的随机密码,现在我们就需要配置kibana带上相应的用户去访问es集群了。
1、添加配置
[ ]
elasticsearch.username: "kibana"
elasticsearch.password: "xXFPPagAkXbYNMYi3LSF"
重启服务
[ ]
2、访问页面
注意:这里使用的账号为
elastic
只有这个用户有权限,后面可以进行创建角色和用户,这个大家自行研究下很简单的。