给ELK 添加Shield权限控制

背景

这两天整个项目(电商SAAS系统)上线后,由于系统变得很大,每天产生的业务日志、访问日志、数据库慢查询、php等语言日志,都分布在不同的机器上,所以需要统一收集并格式化存储,方便研发运维实时掌握整个系统的运行情况,所以搭建了MCAS日志收集分析系统。

系统搭建好后,由于部署在公网上,所以需要给整个系统加一套基于RBAC的权限控制,隔离大家对系统核心日志的访问,更是为了保护数据安全。

我从百度上找了N多教程,可是大部分版本都比较久,而且关于Shield的教程非常少,没办法,只能去ELK官网,一点一点按照教程来操作。说实话,官网教程很多地方没有细节,这也让我走了不少弯路。最后经过不停的实验,终于成功上线,伟哥在这里把整个过程写下来,分享给大家,让大家更愉快的工作!

本教程基于最新版的ELK

Shield 2.0+
Elasticsearch 2.3.3
Logstash 2.3.2
Kibana 4.5.1

第一步,安装Shield2.0+

可以说整个过程中,安装是最简单的。

  • 从这里下载最新版
  • 安装Shield到Elasticsearch。

    我是通过代码包安装的,切换到elasticsearch目录
    cd /usr/local/elastic/
    这里面有个bin目录
    执行两个命令:
    - # bin/plugin install license (安装license)
    - # bin/plugin install shield (安装shield)
    - bin/elasticsearch (重启elastic)
    - bin/shield/esusers useradd es_admin -r admin (添加一个管理员用户, 用户名es_admin,角色admin,这个时候会让你输入两次密码,大家都知道怎么做吧)
    - curl -u es_admin -XGET ‘ http://localhost:9200/’ 测试一下权限是否设置成功哦,如果让你输入密码,
    如果能看到下面这串字符,恭喜你elasticsearch shield安装成功。
    [root@mosh-mcas-3 logs]# curl -u es_admin -XGET ‘ http://192.168.0.7:9200/’

Enter host password for user 'es_admin':
{"name" : "J2","cluster_name" : "elasticsearch","version" : {"number" : "2.3.3","build_hash" : "218bdf10790eef486ff2c41a3df5cfa32dadcfde","build_timestamp" : "2016-05-17T15:40:04Z","build_snapshot" : false,"lucene_version" : "5.5.0"},"tagline" : "You Know, for Search"
}

给kibana添加shield权限控制

为了给kibana加用户访问权限,同时为让kibana可以访问elasticsearch的数据,需要给kibana添加kibana server密码。

  • /usr/local/elastic/bin/shield/esusers useradd kibana4-server -r kibana4_server -p password
  • 切换到kibana安装的机器(如果跟elasticsearch同一台机器,则不用更换),搜索到kibana的yml配置文件,然后添加elasticsearch第一步里创建的管理员和密码

find / -name kibana.yml

“` json
找到kibana.yml后,打开,然后添加如下两行:

elasticsearch.username: “kibana4-server” //你的elastic 管理员用户名
elasticsearch.password: “password” //你的elastic 管理员密码
这样,kibana server就可以访问elasticsearch获取数据了。

##给kibana server添加权限控制
- 为kibana服务器配置密钥。
kibana4_server的角色控制默认存放在了Shield的roles.yml文件。##  在elasticsearch 的roles.yml配置文件里面,新建一个kibana 用户role ```my_kibana_user:cluster:- monitor
  indices:- names: 'logstash-*'
      privileges:- view_index_metadata
        - read
    - names: '.kibana*'
      privileges:- manage
        - read
        - index
 ```如图:![这里写图片描述](https://img-blog.csdn.net/20160612105044761)## 通过REST API创建一个kibana用户
POST /_shield/user/kibanauser
{"password" : "123456","roles" : [ "my_kibana_user" ]
}其中**kibanauser**为用户名,json里面为密码和该用户的角色。
您可以使用浏览器插件发送post命令,或者使用curl命令行工具:

curl -H “Content-type: application/json” -X POST -d ‘{“password”:”user123”,”roles”:[“my_kibana_user”]}’ http://192.168.0.7:9200/_shield/user/kibana_user -u es_admin

##配置kibana https加密通信(这是必须的)
配置证书:
如果你对生成证书不熟悉,可以参考我的上一篇文章:[openssl生成https证书](http://blog.csdn.net/xuplus/article/details/51613883)

server.ssl.key: /path/to/your/server.key server.ssl.cert: /path/to/your/server.crt

## 安装kibana端shield插件
- bin/kibana plugin --install kibana/shield/2.3.3
- 给shield设置一个加密密码

Set the shield.encryptionKey property in the kibana.yml configuration file. You can use any text string as the encryption key.

shield.encryptionKey: “something_secret”

- 设置shield超时

shield.sessionTimeout: 600000

“`
- 重启kibana,然后生效
Restart Kibana and verify that you can sign in as a user. If you are running Kibana locally, go to https://localhost:5601 and enter the credentials for a user you’ve assigned a Kibana user role. For example, you could log in as the jacknich user created in step 3.


快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y

Markdown及扩展

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]

使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。

本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考Github.

表格

Markdown Extra 表格语法:

项目 价格
Computer $1600
Phone $12
Pipe $1

可以使用冒号来定义对齐方式:

项目 价格 数量
Computer 1600 元 5
Phone 12 元 12
Pipe 1 元 234

定义列表

Markdown Extra 定义列表语法: 项目1 项目2
定义 A
定义 B
项目3
定义 C

定义 D

定义D内容

代码块

代码块语法遵循标准markdown代码,例如:
“` python
@requires_authorization
def somefunc(param1=”, param2=0):
”’A docstring”’
if param1 > param2: # interesting
print ‘Greater’
return (param2 - param1 + 1) or None
class SomeClass:
pass

message = ”’interpreter
… prompt”’

离线写博客

即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。

用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。

博客发表后,本地缓存将被删除。 

用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。

注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱

浏览器兼容

  1. 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
  2. IE9以下不支持
  3. IE9,10,11存在以下问题
    1. 不支持离线功能
    2. IE9不支持文件导入导出
    3. IE10不支持拖拽文件导入

给Elasticsearch 和Kibana添加基于角色的访问权限控制相关推荐

  1. Jenkins Role-based Authorization Strategy基于角色的访问权限控制

    文章目录 一.概述 `插件允许定义如下 三种角色.` 全局角色(Global roles) 项目角色(Item roles) 从节点角色(Node roles) 二.基本操作 `安装插件Role-ba ...

  2. java的string访问某个元素_架构师必懂的——RBAC基于角色的访问权限设计

    RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权限的管理.这 ...

  3. 实现权限控制_在 Go 语言中使用 casbin 实现基于角色的 HTTP 权限控制

    Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! 身份认证和授权对 web 应用的安全至关重要.最近,我用 Go 完成了我的第一个正式的 web 应用,这篇文章是在这个 ...

  4. php : RBAC 基于角色的用户权限控制-表参考

    --管理员表 CREATE TABLE `sw_manager` (`mg_id` int(11) NOT NULL AUTO_INCREMENT,`mg_name` varchar(32) NOT ...

  5. Jenkins配置基于角色的项目权限管理--转

    本文将介绍如何配置jenkins,使其可以支持基于角色的项目权限管理. 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Str ...

  6. RBAC(基于角色的访问控制权限的基本模型)

    (一)基本概念 1.定义 RBAC(Role-Based Access Control),也就是所谓的**"基于角色的访问控制权限"**. 2.优势 在RBAC中,用户不再直接与权 ...

  7. SpringSecurity系列——其他的权限控制,基于access表达式的权限控制day6-2(源于官网5.7.2版本)

    SpringSecurity系列--其他的权限控制,基于access表达式的权限控制day6-2(源于官网5.7.2版本) 常见权限控制总表 基于access表达式的权限控制 实例1:改写hasRol ...

  8. gitlab添加成员开通项目访问权限

    gitlab添加成员开通项目访问权限 项目下寻找Settings按钮,选择Members 选择Members后可以看到下面图片页面,输入用户,赋予用户权限 权限分为4种: Guest Reporter ...

  9. 基于SpringAOP实现数据权限控制

    基于SpringAOP实现数据权限控制 在此主要是实现对用户查询数据返回字段的控制.比如一个表格有A,B,C,D,E五列,用户U1只能查看A,B,C三列. 此文章讲述的内容并不能实现在查询时仅查询A, ...

最新文章

  1. java.lang.NoSuchMethodException 错误
  2. Java B2B2C多用户商城 springcloud架构-服务容错保护(Hystrix服务降级)
  3. 浅析py-faster-rcnn中不同版本caffe的安装及其对应不同版本cudnn的解决方案
  4. Python基本语法_函数属性 参数类型 偏函数的应用
  5. 云炬随笔20180606
  6. 软件设计师 --哈夫曼树的一个经典问题
  7. C++primer plus第六版课后编程题答案8.6
  8. 修改ftp服务器用户,通过批处理修改FTP账号和密码
  9. 翁恺老师C语言学习笔记(十一)字符串_字符串常量
  10. 向量范数证明例题_第八课:向量的范数
  11. 查看Linux下端口被哪个程序占用
  12. 基于python数据可视化论文-基于Python的数据脱敏与可视化分析
  13. C. Dominant Piranha
  14. 基于阿里云的应用系统三级等保1.0测评总结
  15. 目标检测入门实战:贪吃蛇小游戏
  16. JDBC基础理解与实现操作
  17. 充电桩测试设备TK4860C交流充电桩检定装置
  18. lavavel 环境配置 summer版
  19. python内置函数之len()方法
  20. mac电脑无法识别移动硬盘怎么解决?看过来!

热门文章

  1. 《管理统计学》期末备考(不挂科)
  2. HTML5 Canvas clearRect清除问题--总是边缘清除不干净
  3. N2N的配置过程中遇到的一些坑
  4. [转载]打工辛酸路:我是一朵飘零的花之94
  5. 搞不懂DMP是什么?看这里就够了
  6. java resizable方法,[Java教程]jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧...
  7. 扩张状态观测器matlab函数,基于Matlab的扩张状态观测器仿真及分析
  8. 每日新闻 | 旷视印奇发布公开信:人工智能必将造福所有人
  9. java如何打印数组的值,Java打印数组元素的值
  10. Java 实验五 图形用户界面设计 制作一个简单的计算器