给ELK 添加Shield权限控制

给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.

转载于:https://my.oschina.net/crazyharry/blog/1105187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值