热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

给ELK添加Shield权限控制背景这两天整个项目(电商SAAS系统)上线后,由于系统变得很大,每天产生的业务日志、访问日志、数据库慢查询、php等语言日志,都分布在不同的机器上,所

给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
```
如图:
![这里写图片描述](http://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.keyserver.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不支持拖拽文件导入


推荐阅读
  • centos 编译安装 php 5.5,CentOS 5.5上编译安装 PHP 5.3.6
    编译并安装#make&&makeinstall安装结果摘要,里面有几个主要的安装路径变量libtool:install:warning:remembertorunli ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • PHP中的curl_multi系列函数可以实现同时请求多个URL来实现并发,而不是像普通curl函数那样请求后会阻塞,直到结果返回才进行下一个请求。因此在批量请求URL时可通过curl_multi系列函数提升程序的运行效率。curl普通请求$startT ... [详细]
  • php7 curl_init(),php7.3curl_init获取301、302跳转后的数据
    最近在做一个蜘蛛项目,发现在抓取数据时,有时会碰到301的页面,原本写的curl_init函数php7-远程获取api接口或网页内容&#x ... [详细]
  • ElasticSearch成功安装完毕。 测试数据添加出现{  error:{    root_cause ... [详细]
  • 无法打开install.wim怎么办
    运维|windows运维install.wim运维-windows运维空间留言网站源码,vscode标准代码,adamsubuntu,tomcat连接共享,sqlite软件基本操作 ... [详细]
author-avatar
寒时凝结公寓_264
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有