码迷,mamicode.com
首页 > 其他好文 > 详细

ELK——elasticsearch 认证

时间:2016-05-06 00:38:22      阅读:1251      评论:0      收藏:0      [点我收藏+]

标签:

本文内容

最近 ELK 搭建完成,赶紧着手把认证做啦~要是什么人都能用 head 插件访问,可受不了~

结果,还真经历了点坎坷~

0x01 需求

能想到的大概有如下几点:

  • 账号认证(登录)是必须的。解决 ES 匿名访问的问题。head 插件简单易用,可惜不提供认证功能。
  • 要能单点登录就锦上添花了。ES 是个集群,在一个节点登录,肯定不期望换了一个节点,再登录一次吧。
  • 若能授权管理那就更完美了。对不同的账号区别对待,控制对 ES INDEX 的访问。

对于这几个需求,应该看你更关注哪个,以及项目进度。

背景

ES 2.1.1

方案选择

找了相关资料,如果你想用 ES 2.2.* 以上版本,能选择的不多。因为,ELK 更新速度太快,很多插件,跟不上。比如,elasticsearch-head 插件,接下来提到的 elasticsearch-http-basic 验证插件,支持到 ES 1.7,作者明确说不支持 2 以上版本,可官网都已经出到 2.2.1 啦~

下面说一下,有几个选择:

  • elasticsearch-http-basic。的确简单,提供账号验证和白名单功能,可惜不支持 ES 1.7 以上版本。因为,作者在 github 上提供源代码,也提供编译后 jar 包,最新版本是 1.5,但我们粗略知道 ES 从 2.* 版本开始,所有插件都需要 plugin-descriptor.properties 文件,可 elasticsearch-http-basic 没有,想试试加一个是否好使,看了源代码,知道会调用什么类,但不好使,又发现,该插件依赖的 elasticsearch jar 包的版本只有 1.5,显然过低,结果还真是,运行 ES 报错,提示找不到 AbstractPlugin 类(自定义插件都需要继承该类),看来高版本的 ES 已经去掉或重新命名了该类——此路不通。而且,只能问题一
  • kibana-authentication-proxy。现在可能不叫这个名字,但是针对 kibana 肯定是有认证的,支持“Google OAuth2, BasicAuth(multiple users supported) and CAS Authentication”,能解决单点登录,跟 elasticsearch-http-basic 一起使用,能解决第一个和第三个问题,但是个人感觉 kibana,版本杂了点,kibana 3和 kibana 4 思路和目标完全不同,对 ES 的版本要求比较严格。
  • Shield。ELK 官方提供,文档自然丰富,功能也强大,能满足所有需求。另外,还能实现集群之间的单点登录。但有人说该插件是收费的,不过我最近按了,没看出有收费的意思啊。难道,之前是收费的,现在不收费了。
  • search-guard。功能丰富,还免费,除了不能实现单点登录,其他都可以。但跟 elasticsearch-http-basic 的情况一样——不支持高版本 ES,而且署复杂,文档较少,这样的插件实在不敢用。
  • nginx,原理很简单,ngnix 有单点登录,如果把 nginx 放在 ES 集群前面,那自然可以实现认证,但感觉仅此而已,再复杂点的需求,估计就实现不了了~而且,试想,如果我只是想实现登录功能(单点登录),还要搞台服务器,是不是有点说不过去啊。ES 集群本身就能自己做均衡负载,我要 nginx 难道只为了做认证?
  • 再就是使用 LADP 或者 AD 账号进行验证。有点生僻,我觉得啊,就不研究了~

因此,我选择了 Shield 插件。

简单起见,先不说开启 Shield 的SSL/TLS 加密身份验证功能(HTTPS 就是基础此)。我的理解是,集群内部通信是加密的,比如,节点发现,同步数据,传递密码当当然是加密最好。

ELK——elasticsearch 认证

标签:

原文地址:http://www.cnblogs.com/liuning8023/p/5463864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!