前言:

    公司的应用监控平台又要有所变动了,准备把opentsdb给剔除,改用elasticsearch后端存储。去掉opentsdb的原因很简单,因为在数据量大的时候,hbase rowkey的效率达不到快速返回的需求,尤其针对聚合计算效率低。Opentsdb不支持二级索引,只有一个基于hbase rowkey的主索引,可以按行的排序顺序scan。这使得Opentsdb的tag实现从检索效率上说会很慢。


关于elasticsearch权限的文章,原文地址是 http://xiaorui.cc/2015/10/19/%E4%BD%BF%E7%94%A8tornado%E5%AE%9E%E7%8E%B0elasticsearch%E7%9A%84%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6/


有些跑题了,咱们回到es的访问控制…

elasticsearch官方没有什么好的权限控制,倒是有个商业版的Shield Shield是Elastic公司为ElasticSearch开发的一个安全插件。在安装此插件后,Shield会拦截所有对ElasticSearch的请求,并加上认证与加密,保障ElasticSearch及相关系统的安全性。 Shield是商业插件,需ElasticSearch的商业许可。第一次安装许可的时候,会提供30天的免费试用权限。30天后,Shield将会屏蔽cluster health, cluster stats, index stats这几个API,其余功能不受影响。总觉得shield这东西不是很靠谱…

查了下相关的资料,为elasticsearch有这么几种方法。

第一种,在nginx层面做基本验证,优点是及其的简单,缺点是他的权限控制有点粗,不能针对更细致的权限进行操作。或者可以用nginx lua的方式做auth扩展。  

第二种,直接用python tornado来做http代理。 在代理层面可以很好的控制黑白名单,及index、type名单。

使用htpasswd工具来创建用户,创建密码。 

下面是nginx针对elasticsearch负载的配置

那么对于第二种开发代理服务的方式,我们可以使用python下最适合做api的框架tornado。话说 ” tornado async httpclient ” 客户端非常适合做高性能的http代理。 我这边以前写了个项目,原本是用来做爬虫http代理服务的,现在倒是觉得很适合做elasticsearch的权限控制 ,但是现在缺少一些规则的过滤,比如字段、bulk批量,delete删除的控制。

如果你用的是python下的elasticsearch模块,那么需要在创建es连接对象的时候,加入http_auth参数。

另外logstash在elasticsearch做了权限控制后,配置文件也需要加入密码。




对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

使用nginx lua对elasticsearch权限控制

想法: 呵呵,我最近还真有些迷恋Elasticsearch DSL语法了,尤其他那设计起来很有道理的RESTful API ! 虽然几年前也折腾elasticsearch,但更多的是...

阅读全文

1则回应给“使用tornado实现elasticsearch的权限控制”

  1. feifeiiiiiiiiiii说道:

    写个出来啊 让我forkfork

发表评论