给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" : "-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-/0612105044761)## 通过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证书](/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.
表格
MarkdownExtra表格语法:
可以使用冒号来定义对齐方式:
定义列表
MarkdownExtra定义列表语法: 项目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./mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。
用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。
博客发表后,本地缓存将被删除。
用户可以选择把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。
注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。
浏览器兼容
目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。IE9以下不支持IE9,10,11存在以下问题不支持离线功能IE9不支持文件导入导出IE10不支持拖拽文件导入