ELK / 日志分析 / 系统运维

ES和Kibana配置权限控制

温馨提示:本文最后更新于2021-10-04 09:26:11,某些文章具有时效性,若有错误或已失效,请在下方留言或提交工单提交工单
浅时光 · 10月4日 · 2021年 本文2562个字,预计阅读7分钟 3601次已读

一、场景说明


默认情况下,我们在部署ELK集群的时候,都不会开启用户认证,但是实际在生产环境中我们必须保证数据的安全,所以我们就有必要将ES中权限认证给开启,并且集群之间配置TLSv加密通信;这些安全功能是从ES6.8版本之后默认加进来,所以如果你部署的版本很老的话,那么这些安全功能就没办法实现了,这里我演示的环境es的版本为最新的7.12.1

二、创建证书


1、生成CA证书

  • 说明:这里我的ES集群都是通过RPM包安装的,如果你是源码部署的话,elasticsearch-certutil命令在es安装路径中的bin目录下
[[email protected] ~]# /usr/share/elasticsearch/bin/elasticsearch-certutil ca --out /etc/elasticsearch/elastic-stack-ca.p12 -pass ""
ES和Kibana配置权限控制-浅时光博客

2、为节点签发证书

[[email protected] ~]# /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca /etc/elasticsearch/elastic-stack-ca.p12 -pass "" --out /etc/elasticsearch/elastic-certificates.p12
ES和Kibana配置权限控制-浅时光博客

3、将证书拷贝到所有节点

scp /etc/elasticsearch/elastic-certificates.p12 [email protected]:/etc/elasticsearch/
  • 注意:证书创建完成后,我们需要赋予es服务运行用户相应的权限,不然下面生成密码时会报错!ES集群所有节点都需要赋权。
chown -R elasticsearch. /etc/elasticsearch

三、修改ES配置


1、添加配置

  • 这里我们需要修改ES配置,开启SSL认证和安装xpack,以及配置我们上面刚刚创建好的证书文件
  • 注意:ES集群节点都需要按照下面的操作进行修改,然后重启ES服务
[[email protected] ~]# 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.p12

2、重启服务

  • 修改完成后,重启启动ES服务,注意检查启动日志是否有报错
systemctl restart elasticsearch

四、生成密码


  • 上面我们去访问ES节点就需要输入密码了,现在我们就需要生成相应服务的访问密码
[[email protected] ~]# /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

#或者生成随机密码:
[[email protected] ~]# /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
ES和Kibana配置权限控制-浅时光博客
  • 现在我们再通过浏览去访问ES:https://IP:9200
  • 注意:这里使用的是elastic 账号,该账号拥有 superuser 角色,是内置的超级用户
ES和Kibana配置权限控制-浅时光博客
现在我们可以通过ES集群任意节点访问,都可以使用上面生成的随机密码登入了

五、Logstash配置


  • 上面我们开启了ES的安全认证同时也生成了相应服务的访问用户和密码。
  • 用户默认为logstash_system,密码则是上面生成的随机密码。
[[email protected] ~]# vim /etc/logstash/logstash.yml
ES和Kibana配置权限控制-浅时光博客
  • 修改完成后重启logstash服务
[[email protected] ~]# systemctl restart 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、添加配置

[[email protected] ~]# vim /etc/kibana/kibana.yml
elasticsearch.username: "kibana"	# 注意:此处不用超级账号elastic,而是使用kibana跟es连接的账号kibana
elasticsearch.password: "xXFPPagAkXbYNMYi3LSF" 
ES和Kibana配置权限控制-浅时光博客
  • 重启服务
[[email protected] ~]# systemctl restart kibana

2、访问页面

  • 现在,我们输入kibana访问地址,就可以看到下图中需要输入访问的账号和密码。
  • 注意:这里使用的账号为elastic 只有这个用户有权限,后面可以进行创建角色和用户,这个大家自行研究下很简单的。
ES和Kibana配置权限控制-浅时光博客
ES和Kibana配置权限控制-浅时光博客

以上就是关于ELK集群安全相关的配置演示,大家在配置过程中遇到问题可以在下方留言!




本文作者:浅时光
原文链接:https://www.dqzboy.com/7928.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可
转载时请以超链接形式标明文章原始出处和作者信息

0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

    本站已稳定运行: | 耗时 0.404 秒 | 查询 12 次 | 内存 38.19 MB