前言|

在前面的章节中我们讲了开源架构ELK、腾讯云Elasticsearch产品系列。我们也知道了,在构建腾讯云ES集群的时候,我们选择的6.8.2白金版具备充分的安全的机制来保证数据和访问的安全。那么,它到底是如何实现的呢?我们今天就来简单聊聊这个问题:

一、在ElasticSearch6.8及以上版本开启安全认证功能

ElasticSearch的商业插件X-pack 在ES6.x版本以前一直都是收费,不对外免费开放的。在ES6以后陆续放开了一些功能,比如前面讲到的Monitor集群监控功能。在ES6.8及以后版本ES又将部分安全性功能免费开放了,包含安全认证功能,之后版本又开放一些基础认证功能,对于普通用户来说是够用的。这里要提一下的是kibana的登录和权限是与ES紧密相关的,其实真正起作用的是Elasticsearch,因为kibana只是一个视图页面,真正工作的是Elasticsearch。现在我们就6.8版本的【基于角色的访问控制】进行操作、验证。步骤如下:

第一步:下载、安装ES、Kibana 6.8.2 版本(此处省略,可参考本博客前面的教程)

第二步:修改ES配置文件 elasticsearch.yml 添加“ xpack.security.enabled: true”到配置文件,保存并退出

4f5a62b607a05b21f6eeb7c0734f0d1e.png

Xpack安全机制

基础版本的安全性功能是默认关闭的。

然后启动ES,注意需要用普通用户启动ES,注意一定要先启动ES,才能进行后续安全设置

f21be368de5f70df8ffe75c344314940.png

启动ES

第三步:/bin/elasticsearch-setup-passwords interactive 启用ES默认的内置用户

99acb1ca2d04eab99c261dcc5621bba7.png

安全设置用户密码

显示下面的图示:输入“y”

dc0b6da0e68cfc11f8a34bb9bb03a38e.png

下面的这些用户都是ES默认的用户,需要设置密码,一定要记住,可以暂时设置相同的。后面可以改

557d72c29981854de756bf1be663675d.png

ES默认用户

第四步:设置kibana登录的用户名、密码。在kibana.yml配置文件里进行修改

注意,这个用户名和密码一定跟ES刚刚设定的内置账号密码一样。否则,Kibana启动报错!!

ca66f0c35865e9d5e4b8d58072cafcdc.png

添加用户名和密码

第五步:启动kibana

启动kibana就可以使用用户名与密码进行访问。如下截图

df4a8916290263dd2482460c1fd62056.png

kibana启动

019084c3f9b880368e246d8e145fc5d9.png

Kibana界面

登录Kibana看看,就出现了安全访问的登录框。输入在Kibana设定的内置用户登录即可.用户必须使用有效的用户ID和密码登录Kibana。

17f2746a53a82cd941c1bb2d33769f7e.png

安全登录界面

二、如何在Kibana配置文件中屏蔽密码、用户字眼??

前面我们知道,登录ES的安全账号密码都配置在Kibana的配置文件里,但是这样,始终不安全,那么能不能屏蔽掉这些关键字眼呢??再来解决这个问题:

如果你不想将用户ID和密码放在kibana.yml文件中明文配置,可以将它们存储在密钥库中。运行以下命令以创建Kibana密钥库并添加配置:

首先 先创建秘钥库: ./kibana-keystore create

41d78a610e545c821ee09634c8fa6d50.png

其次:添加登录用户名: ./kibana-keystore add elasticsearch.username

f17ba7412ec68f9c48c43468d59276c4.png

输入要添加的用户名(密文)

再次:添加登录用户名的密码: ./kibana-keystore add elasticsearch.password

9e74fcf971c57864a879cf0084a88802.png

输入用户名密码(密文)

最后,验证一下:使用刚刚新建账号密码、同时清除Kibana配置文件中原有的yml文件的用户、密码内容。重启Kibana

d40f0d21498838f15707f9c4eb197c48.png

Kibana登录界面

使用Curl验证一下“

a5e8d5190d85d8af1e92d2ba62370944.png

Curl指令

用其他用户是不行的:

b2ff194cfd1889a2f729e1ba9dc614ff.png

验证其它用户

考虑一下:为什么这样?因为尽管是默认用户,但是没有配置它在服务中使用,所以,它无效!!

三、总结:

本节从实际角度去部署了一下ES、Kibana的安全访问功能。是一个非常实际可用的功能,建议大家多试试!

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐