飞道的博客

搜索卫士保驾护航,开源轮子不裸奔

278人阅读  评论(0)

【这是一猿小讲的第 76 篇原创分享】

近日一则 ElasticSearch 数据泄露的讯息映入眼帘,搞的心发毛。

之前咱们在《傻瓜也能玩转日志归集》中一起认识、体验过 ELK 轮子,在微服务盛行的当下,做日志归集分析效果确实杠杠滴,但是有一点不得不提,那就是它们都在疯狂的裸奔。

01. 那些年做过的事儿


场景一:访问 ElasticSearch 畅通无阻。

试验效果,控制台输入 curl http://localhost:9200/ 或者浏览器直接访问 http://localhost:9200/,效果如下。

只要拿到访问链接,就相当于一库在手,应有尽有。

场景二:访问 Kibana 畅通无阻。

试验效果,在浏览器中访问 http://localhost:5601,效果图如下。

Kibana 访问居然也是很顺畅,毫无遮拦,那岂不是拥有这个链接,也可以为所欲为,就可以把 ElasticSearch 搞个底朝天!

面对上面两个场景,那么就不得不寻觅一款能对 ElasticSearch 加入一道防线的开源轮子。

02. 邂逅搜索卫士


为了让大家初步认识一下 Search Guard 是个啥?肆意从 Search Guard 官网截一图,大概就是说 Search Guard 是适用于 Elasticsearch 和整个 ELK 技术栈的开源安全插件,提供加密,身份验证,授权,审核日志记录等合规性功能

Search Guard 针对 Elasticsearch 提供不同版本的插件支持,可谓是好马配好鞍

03. 香不香,尝后才知道


上次我们演示日志归集的版本是 7.1.1,那本次不妨继续以此版本为基础进行演示。

一、让ElasticSearch拥抱Search Guard。

第一步:下载安装 Search Guard。

Search Guard 提供两种安装方式,进入 Elasticsearch 安装目录。

方式一:在线安装

bin/elasticsearch-plugin install -b com.floragunn:search-guard-7:7.1.1-37.0.0

方式二:离线安装(本次使用方式)

下载

https://releases.floragunn.com/search-guard-7/7.1.1-37.0.0/search-guard-7-7.1.1-37.0.0.zip

执行

bin/elasticsearch-plugin install -b file:///你的/目录/search-guard-7-7.1.1-37.0.0.zip

本次采取离线安装方式,效果如下。

第二步:快速安装(忽略细节)

1. 进入 Elasticsearch 下的 search-guard 下的 tools目录

cd  <Elasticsearch directory>/plugins/search-guard-7/tools

2. 执行./install_demo_configuration.sh 

如果提示没有权限,请关注文末的“问题汇总”,续输入3个 Y

  • 是否安装用于演示证书;【输入 Y】

  • 是否自动初始化 Search Guard;【输入 Y】

  • 是否启用集群模式;【输入 Y】

第三步:到底香不香?

浏览器访问 https://localhost:9200/_searchguard/authinfo,果不其然有了一道拦截,让输入用户名密码才能访问。

用户名输入 admin,密码也输入 admin,信息就出来了(不用纠结是啥)。

至此,再访问 http://localhost:9200/ 就不会那么畅通无阻了,开篇提到场景一的问题也就解决了,因为 Search Guard 在访问 ElasticSearch 的路上,加了一道华丽丽的登录验证的屏障。

二、让 Search Guard 进入 Kibana 的怀抱。

面对开篇提到场景二 Kibana 访问畅通无阻的问题,Search Guard 有没有解呢?接下来让我们拭目以待。

第一步:下载安装与 Kibana 版本匹配的 Search Guard Kibana插件包同样是两种安装方式,我们先进入 Kibana 安装目录。

方式一:在线安装

bin/kibana-plugin install https://releases.floragunn.com/search-guard-kibana-plugin/7.1.1-36.1.0/search-guard-kibana-plugin-7.1.1-36.1.0.zip

方式二:离线安装(本次使用方式)

下载:

https://releases.floragunn.com/search-guard-kibana-plugin/7.1.1-36.1.0/search-guard-kibana-plugin-7.1.1-36.1.0.zip

执行:

bin/kibana-plugin install file:///你的/目录/search-guard-kibana-plugin-7.1.1-36.1.0.zip

本次使用离线方式安装,安装效果如下。

第二步:停止 Kibana,如果 Kibana 已经启动,不妨先停一会。

第三步:修改 kibana.yml 配置文件。

在 kibana.yml 上面修改是最合适的,但是鉴于上次咱们体验时未做调整,考虑到你 copy 的方便,本次就直接在 kibana.yml 文件后面追加如下内容。


   
  1. # Use HTTPS instead of HTTP
  2. elasticsearch.hosts: "https://localhost:9200"
  3. # Configure the Kibana internal server user
  4. elasticsearch.username: "kibanaserver"
  5. elasticsearch.password: "kibanaserver"
  6. # Disable SSL verification because we use self-signed demo certificates
  7. elasticsearch.ssl.verificationMode: none
  8. # Whitelist the Search Guard Multi Tenancy Header
  9. elasticsearch.requestHeadersWhitelist: [ "Authorization", "sgtenant"]
  10. # xpack config
  11. xpack.security.enabled: false

第四步:启动 Kibana,观察控制台日志输出。输入 bin/kibana,日志输出效果如下。

第五步:到底香不香?

输入http://localhost:5601 一探究竟,不负众望,提示输入用户名、密码,效果如下。

此时用户名我们输入 admin,密码输入 admin,点击登录,效果如下。

Kibana 确实多了一些东东,貌似有了权限相关的内容出来了(本次不细究)。接下来点击右上角的退出图标,果真跳转到登录页面,确实好使!

至此,我们又知道了 Search Guard Kibana 插件向 Kibana 添加了身份验证以及配置的界面,让权限配置成为可能,并且让我们开篇场景二的问题也得解决。

04. 一些疑问?


由于 Elasticsearch 加入了身份验证,面对轻量级采集(Beats + Elasticsearch + Kibana)方案下,Beats 访问 ElasticSearch 的方式要怎么调整?

以 filebeat 为例,不妨先看看 filebeat.yml 默认配置内容。

此时就需要开启 https 协议传入,配置用户名、密码。


   
  1. # Optional protocol and basic auth credentials.
  2. protocol: "https"
  3. username: "admin"
  4. password: "admin"
  5. ssl.verification_mode: "none"

启动 filebeat,输入命令 ./filebeat -e -c filebeat.yml 先观察控制台日志输出,然后再去 Kibana 确认一下对应的索引是否创建了。

至此,轻量级的采集方案中的采集 Beats 调整应该清晰了。

面对重量级采集方案(Beats + Kafka + Logstash + Elasticsearch + Kibana)的模式下该如何修改呢?由于 Elasticsearch 加入了身份验证,那么 Beats 无需做任何调整,只需把 Logstash 访问 Elasticsearch 的方式就要进行调整即可,本次不深究啦,感兴趣的参考如下链接去体验。

https://docs.search-guard.com/latest/elasticsearch-logstash-search-guard#using-logstash-with-search-guard

05.  问题汇总


问题一:

执行 ./install_demo_configuration.sh 提示

-bash: ./install_demo_configuration.sh: Permission denied

解决:

chmod u+x install_demo_configuration.sh

问题二:

启动 kibana 时提示如下信息:

[error][status][plugin:searchguard@7.1.1-36.1.0] Status changed from uninitialized to red - X-Pack Security needs to be disabled for Search Guard to work properly. Please set 'xpack.security.enabled' to false in your kibana.yml

解决:

kibana.yml 加入配置 xpack.security.enabled: false

06. 写在最后


随着一条条配置、一步步体验,Search Guard 让 ELK 技术栈的轮子不再疯狂的裸奔,品尝之后也确实香。

本次只是带着大家进行一次快速的体验,很多细节都没有深究,例如如何修改 Kibana 中 Search Guard 默认密码?如何使用自己生成的证书;权限该如何配置等等一系列的问题,有机会再续吧。

好了,今天不烧脑的分享,到这就结束啦,希望你们能够喜欢

推荐阅读:

业务开发中你用到了哪些算法(续)?

啥是数据倾斜?就是数据歪啦!


转载:https://blog.csdn.net/javaforwork/article/details/103519183
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场