`

Kibana3 基于perl认证鉴权方案

阅读更多

Kibana 作为一个纯 JS 项目,一直都没有提供完整的权限控制方面的功能。只是附带了一个nginx.conf 做基本的 Basic Auth。社区另外有在 nodejs 上实现的方案,则使用了 CAS 方式做认证。

不过我对这两种方案都不太满意。

  1. 认证方式太单一,适应性不强;
  2. 权限隔离不明确,只是通过修改 kibana-int 成 kiban-int-user 来区分不同用户的 dashboard,并不能限制用户对 ES 索引的访问。

加上 nodejs 我也不熟,最终在多番考虑后,决定抽一个晚上自己写一版。

最终代码见 https://github.com/chenryn/kibana

原理和实现

  1. 全站代理和虚拟响应

    这里不单通过 config.js 限定了 kibana 默认连接的 Elasticsearch 服务器地址和端口,还拦截伪造了 /_nodes 请求的 JSON 响应体。伪造的响应中也只包含自己这个带认证的 web 服务器地址和端口。

    这么做是因为我的 kibana 版本使用的 elasticjs 库比官方新增了 sniff 功能,默认会自动轮训所有 nodes 发送请求。

  2. 新增 kibana-auth 鉴权索引

    在通常的 kibana-int-user 区分 dashboard 基础上,我新增加 kibana-auth 索引,专门记录每个用户可以访问的 ES 集群地址和索引前缀。请求会固定代理到指定的 ES 集群上,并且确认是被允许访问的索引。

    这样,多个用户通过一个 kibana auth 服务器网址,可以访问多个不同的 ES 集群后端。而同一个 ES 集群后端的索引,也不用担心被其他人访问到。

  3. Authen::Simple 认证框架

    这是 Perl 一个认证框架,支持十多种不同的认证方式。项目里默认采用最简单的 htpasswd 文件记录方式,实际我线上是使用了 LDAP 方式,都没问题。

部署

方案采用了 Mojolicious 框架开发,代码少不说,最关键的是 Mojolicious 无额外的 CPAN 模块依赖,这对于不了解 Perl 但是又有 Kibana 权限控制需求的人来说,大大减少了部署方面的麻烦。

curl http://xrl.us/cpanm -o /usr/local/bin/cpanmchmod +x /usr/local/bin/cpanmcpanm Mojolicious Authen::Simple::Passwd

三行命令,就可以完成整个项目的安装需求了。然后运行目录下的:

hypnotoad script/kbnauth

就可以通过 80 端口访问这个带有权限控制的 kibana 了。

权限赋值

因为 kibana-auth 结构很简单,kibana 一般又都是内部使用,所以暂时还没做权限控制的管理页面。直接通过命令行方式即可赋权:

curl -XPOST http://127.0.0.1:9200/kibana-auth/indices/sri -d '{ "prefix":["logstash-sri","logstash-ops"], "server":"192.168.0.2:9200"}'

这样,sri 用户,就只能访问 192.168.0.2 集群上的 logstash-sri 或 logstash-ops 开头的日期型索引(即后面可以-YYYY, -YYYY.MM, -YYYY.MM.dd 三种格式)了。

下一步

考虑到新方案下各用户都有自己的 kibana-int-user 索引,已经用着官方 kibana 的用户大批量的 dashboard 有迁移成本,找个时间可能做一个迁移脚本辅助这个事情。

开发完成后,得到了 @高伟 童鞋的主动尝试和各种 bug 反馈支持,在此表示感谢~也希望我这个方案能帮到更多 kibana 用户。

注:我的 kibana 仓库除了新增的这个 kbnauth 代理认证鉴权功能外,本身在 kibana 分析统计功能上也有一些改进,这方面已经得到多个小伙伴的试用和好评,自认在官方 Kibana v4 版本出来之前,应该会是最好用的版本。欢迎大家下载使用!

新增功能包括:

  1. 仿 stats 的百分比统计面板(利用 PercentileAggr 接口)
  2. 仿 terms 的区间比面板(利用 RangeFacets 接口)
  3. 给 bettermap 增强的高德地图支持(利用 leaflet provider 扩展)
  4. 给 map 增强的中国地图支持(利用 jvectormap 文件)
  5. 给 map 增强的 term_stats 数据显示(利用 TermStatsFacets 接口)
  6. 给 query 增强的请求生成器(利用 getMapping/getFieldMapping 接口和 jQuery.multiSelect 扩展)
  7. 仿 terms 的 statisticstrend 面板(利用 TermStatsFacets 接口)
  8. 仿 histogram 增强的 multifieldhistogram 面板(可以给不同query定制不同的panel setting,比如设置某个抽样数据 * 1000 倍和另一个全量数据做对比)
  9. 仿 histogram 的 valuehistogram 面板(去除了 histogram 面板的 X 轴时间类型数据限制,可以用于做数据概率分布分析)
  10. 给 histogram 增强的 threshold 变色功能(利用了 jquery.flot.threshold 扩展)
  11. 单个面板自己的刷新按钮(避免调试的时候全页面刷新的麻烦)
分享到:
评论

相关推荐

    docker-kibana:Kibana 作为基于 Debian Jessie 的 Docker 容器

    docker-kibana Kibana 作为基于 Debian Jessie 的 Docker 容器基巴纳 3 由于 Kibana 3 是严格意义上的 HTML + Javascript 应用程序,因此它并不真正需要服务器后端。 这个容器只是一个服务于 Kibana 3 静态资产的 ...

    kibana应对磁盘空间不足变更方案(1).doc

    当Kibana的日志存储空间不足时,需要采取相应的变更方案来解决这个问题。以下提供了两个主要的解决方案: ### 方案一:修改Kibana日志存储路径 这个方案涉及将Kibana的日志存储位置移动到一个新的目录,以释放原...

    最新版linux kibana-7.16.3-linux-x86_64.tar.gz

    《Linux Kibana 7.16.3:探索数据可视化的新境界》 Kibana是Elastic Stack(以前称为ELK Stack)的关键组件之一,它是一个强大的数据分析和可视化工具,专为与Elasticsearch数据库配合使用而设计。Elasticsearch是...

    kibana-7.9.3-linux-x86_64.rar

    《Kibana 7.9.3在Linux平台上的安装与使用详解》 Kibana是Elastic Stack的重要组成部分,它是一款数据可视化工具,能够帮助用户以图表、仪表板的形式直观地理解存储在Elasticsearch中的数据。在这个文档中,我们将...

    最新版windows kibana-7.16.3-windows-x86_64.zip

    最新版windows kibana-7.16.3-windows-x86_64.zip

    最新版windows kibana-7.9.3-windows-x86_64.zip

    最新版windows kibana-7.9.3-windows-x86_64.zip

    kibana-7.9.3-windows-x86_64

    最新版windows kibana-7.9.3-windows-x86_64.zip 低积分福利下载。

    如何搭建 Elasticsearch-kibana 环境

    Kibana是一个基于Elasticsearch数据的可视化和分析工具,使用户能够创建图表、表格和地图来展示复杂数据。二者通常一起使用,以提供完整的数据处理和展示解决方案。 在搭建Elasticsearch-Kibana环境之前,需要了解...

    kibana 的配置文件导出

    kibana 的配置文件导出kibana 的配置文件导出kibana 的配置文件导出kibana 的配置文件导出kibana 的配置文件导出kibana 的配置文件导出kibana 的配置文件导出kibana 的配置文件导出kibana 的配置文件导出kibana 的...

    最新版windows kibana-7.13.3-windows-x86_64.zip

    这个压缩包 "kibana-7.13.3-windows-x86_64.zip" 提供的是适用于Windows操作系统的Kibana最新版本,即7.13.3。Elastic Stack是由Elastic公司开发的一套开源工具,包括Elasticsearch、Logstash、Kibana和Beats,常...

    Kibana 各个版本国内下载链接 及kibana-7.8.0-windows-x86_64 zip 下载

    3. 如果需要,可以安装或管理插件,插件可以通过命令行工具`bin/kibana-plugin`进行安装和管理。 4. 启动Kibana服务,运行`bin/kibana.bat`批处理文件。 5. 打开浏览器,访问`http://localhost:5601`(默认端口),...

    最新版linux kibana-7.13.3-linux-x86_64.tar.gz

    Linux Kibana 7.13.3 是一个强大的数据可视化工具,它是 Elastic Stack 的重要组成部分,用于交互式地探索、分析和展示Elasticsearch存储的数据。Kibana 提供了直观的用户界面,允许非技术人员通过网页浏览器来操作...

    kibana安装.pdf

    CentOS下安装Kibana ...3、启动Kibana 4、开机自启动配置 [root@node4 ~]# cd /opt/kibanaFolder/ [root@node4 kibanaFolder]# ll total 176480 drwxr-xr-x 13 root root 4096 Sep 25 09:14 kibana-6

    kibana-7.17.9-windows-x86-64.zip

    6. 集成能力:Kibana可以无缝集成Elasticsearch、Logstash、Beats等其他Elastic Stack组件,形成强大的日志管理和分析解决方案。此外,它还支持与第三方服务(如Jenkins、GitHub等)的集成,扩展其功能。 7. API...

    kibana-guide-cn.pdf

    认证鉴权是Kibana中的一个重要组成部分,书中提到使用Node.js实现CAS认证以及使用Perl实现的认证鉴权框架。这说明Kibana不仅在数据展现上功能强大,同样也注重安全性方面的设计。 Kibana在ELK(Elasticsearch、...

    Kibana-7.6.2.rar

    3. 启动Kibana服务,通过`bin/kibana`命令运行。 4. 访问Kibana的默认端口(通常是5601)进行初始化设置和使用。 三、集成与扩展 Kibana不仅可以与Elasticsearch无缝集成,还能够与其他Elastic Stack组件(如...

    最新版linux kibana-8.4.3-linux-x86_64.tar.gz

    2. **角色和权限**:Kibana支持基于角色的访问控制(RBAC),允许管理员分配不同级别的访问权限。 3. **SSL/TLS**:启用HTTPS加密通信,保护数据传输的安全。 **插件与扩展:** Kibana支持插件机制,可以安装官方和...

    kibana-7.17.7-windows-x86-64.zip

    7. **警报与通知**:Kibana的警报功能可以基于预定义的条件触发,发送通知到电子邮件、Slack或其他集成的服务,确保用户对重要事件有及时的了解。 8. **开发工具**:Kibana还集成了Kibana Dev Tools Console,允许...

    kibana-7.9.3-linux-aarch64.tar.gz

    Linux系统的kibana7.9.3版本,正常可用无损坏

    kibana-4.1.1-windows

    此外,结合Elastic Stack(包括Elasticsearch、Logstash、Beats和Kibana)可以构建完整的日志管理和分析解决方案。 总结,Kibana 4.1.1 for Windows是数据分析师和IT专业人员的强大工具,通过简单易用的界面,它...

Global site tag (gtag.js) - Google Analytics