基于ELK Stack7.1.0构建多用户安全认证日志系统
配置tls加密通信及身份验证,主要目的是为了确保集群数据安全。在es早期版本,安全认证相关功能都属于商业付费服务,一般普通公司如果集群部署在内网,基本上就忽略了这些安全认证,当然也可以通过Nginx反向代理来进行控制。现在,官方宣布从6.8和7.1开始,免费提供很多项安全功能。其中包括tls加密通信,基于角色访问控制(RBAC)等功能。这对很多使用ELK技术栈的公司来说是一个福利。
一、配置 TLS 和身份验证
1、我们要做的第一件事是生成证书,通过这些证书便能允许节点安全地通信。但是一般情况下,我们可以通过elasticsearch自带的elasticsearch-certutil的命令生成证书。然后各节点通过该证书可以进行安全通信。
在搭建好es集群的条件下,生成证书:
cd /usr/local/elasticsearch
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
2、上面命令执行成功后,会在config文件夹下生成elastic-certificates.p12证书。然后编辑配置文件elasticsearch.yml,将以下内容添加到配置文件末尾:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
3、将上面步骤生成的elastic-certificates.p12证书复制到另外两个node02与node03节点上对应的config文件夹中并授权,同时将上面配置选项也都复制到对应节点的elasticsearch.yml文件里。
chown -R elasticsearch. /usr/local/elasticsearch/config/elastic-certificates.p12
4、现在三台node节点上都有了证书,同时elasticsearch.yml文件中也都增加了安全配置项。启动三个节点。待节点启动完毕之后,进入其中一个节点elasticsearch目录,执行以下命令,进行密码设置:
bin/elasticsearch-setup-passwords interactive
5、由于现在Elasticsearch设置了密码,所以logstash过滤数据之后往es集群中推送的时候以及将数据展示到kibana时,需要添加权限认证。增加es集群的用户及密码:
logstash:
user => "elastic"
password => "password"
kibana:
elasticsearch.username: "elastic"
elasticsearch.password: "password"
6、elasticsearch-head插件此时再去访问有安全认证的es集群时http://node01:9100,会发现无法进行查看,打开控制台可以看到报错:401 unauthorized,head无法登陆的问题:
在/usr/local/elasticsearch/config/elasticsearch.yml中添加如下三行配置:
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
修改三台es节点,然后重新启动,再次url+认证信息方式可以正常访问es集群。
http://ip:9100/?auth_user=elastic&auth_password=passwd
二、在 Kibana 中配置基于角色的访问控制 (RBAC)
由于ELK日志管理属于基础设施平台,所以接入多个应用系统是正常现象,如果接入多个系统的索引文件没有进行权限划分,那么很大程度会出现索引文件误处理现象,为了避免这种情况发生,多用户及权限设置必不可少。

如果是像这个例子中的全新安装情况,Kibana 将询问您是否希望加载一些样本数据。

现在我们就创建角色。找到并单击 roles(角色)选项。

单击 Create role(创建角色)。

针对不同用户只能查看各自系统的索引文件。第一步需要创建角色,将某个角色和索引文件进行绑定。
- 1、创建第一个应用系统test01 角色,选择对应的索引文件,分配对应的权限read

- 2、 创建第二个系统test02角色,选择对应的索引文件,分配对应的权限read

- 3、创建两个用户test01/test01(用户名/密码),test02/test02, 然后分配对应系统角色和kibana_user角色


- 5、用户创建完后,可以进行登录验证。
登录test01用户,只能查询test01的索引日志。

虽然test01用户可以看到其他的索引index-pattern, 但是无法查询到数据。所以保证了其他系统索引文件的安全。

登录test02用户,只能查询test02 索引日志,其他索引无法查询到数据。

test02用户选择其他未分配权限的索引,无法查询到数据。

到此,系统多用户安全认证日志平台搭建完成!
基于ELK Stack7.1.0构建多用户安全认证日志系统的更多相关文章
- 基于ef core 2.0的数据库增删改审计系统
1.首先是建审计存储表 CREATE TABLE [dbo].[Audit] ( [Id] [uniqueidentifier] NOT NULL, [EntityName] [nvarchar](1 ...
- 基于ASP.NET 4.0开发的微商城系统OdnShop,开源发布
基于ASP.NET 4.0开发的开源微商城系统,我们的目标是构建一个核心完善而又轻量级的微商城平台,目前基本的核心功能,包括微信登陆/支付,产品管理,购物车与订单管理等,轻量级是为了更加便于理解源码和 ...
- ELK统一日志系统的应用
收集和分析日志是应用开发中至关重要的一环,互联网大规模.分布式的特性决定了日志的源头越来越分散, 产生的速度越来越快,传统的手段和工具显得日益力不从心.在规模化场景下,grep.awk 无法快速发挥作 ...
- 从0搭建一个基于 ELK 的日志、指标收集与监控系统
为了使得私有化部署的系统能更健壮,同时不增加额外的部署运维工作量,本文提出了一种基于 ELK 的开箱即用的日志和指标收集方案. 在当前的项目中,我们已经使用了 Elasticsearch 作为业务的数 ...
- 开源低代码平台开发实践二:从 0 构建一个基于 ER 图的低代码后端
前后端分离了! 第一次知道这个事情的时候,内心是困惑的. 前端都出去搞 SPA,SEO 们同意吗? 后来,SSR 来了. 他说:"SEO 们同意了!" 任何人的反对,都没用了,时代 ...
- 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具
iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...
- ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)
ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台 参考:http://www.tuicool.com/articles/R77fieA 我在做ELK日志平台开始之初选择为 ...
- 如何基于 K8S 多租能力构建 Serverless Container
当前 Kubernetes 已经成为名副其实的企业级容器编排规范,很多云平台都开始提供兼容 Kubernetes 接口的容器服务.而在多用户支持方面,多数平台选择直接提供专属虚机集群,用户需要花费大量 ...
- Packet Tracer 5.0 构建CCNA实验(2)—— 配置VLAN
Packet Tracer 5.0 构建CCNA实验(2)—— 配置VLAN Vlan(Virtual Local Area Network) 即虚拟局域网.VLAN可以把同一个物理网络划分为多个逻辑 ...
随机推荐
- Java 八大基本数据类型
相关信息获取: (1)最小值:包装类.MIN_VALUE,如 Integer.MIN_VALUE (2)最大值:包装类.MAX_VALUE,如 Integer.MAX_VALUE (3)二进制位数:包 ...
- VMware 虚拟机的虚拟磁盘编程知识点扫盲之二
目录 目录 前文列表 VDDK 安装 VDDK VixDiskLib VADP 前文列表 VMware 虚拟机的虚拟磁盘编程知识点扫盲之一 VDDK 摘自官方文档:The Virtual Disk D ...
- PHP 实现并发-进程控制 PCNTL
参考 基于PCNTL的PHP并发编程 PCNTL 是 PHP 中的一组进程控制函数,可以用来 fork(创建)进程,传输控制信号等. 在PHP中,进程控制支持默认关闭.编译时通过 --enable-p ...
- pycharm运行时出现‘no module named 'requests'’
参考文章:https://www.jianshu.com/p/f7c808365a9e 出现无requests的包的错误--->找包中是否有requests 1.从files下拉框中点击sett ...
- Java8的I/O整理
一.什么是I/O? Java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入. 二.什 ...
- 前端 CSS的选择器 基本选择器 类选择器
类选择器 符号是.开头 然后类的名字 样式类名不要用数字开头(有的浏览器不认). 所谓类就是class,.class与id非常相似,任何标签都可以加类,但是类可以重复 通过样式类选择元素: 示例: & ...
- Tomcat控制台
一般在安装完成Tomcat之后,我们需要验证tomcat是否安装成功,在浏览器的url中输入:http://127.0.0.1:8080/,就会进入如下的页面(表示安装成功): 在上面的左侧顶部,有一 ...
- Struts2的核心配置文件
Struts2的详细配置: 配置的是struts2的核心配置文件:,在struts2的核心配置文件中主要有三个标签需要进行配置:package,action,result. 1. 配置package标 ...
- 用户权限管理数据库设计(RBAC)
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- 搜索(DFS)---查找最大连通面积
查找最大的连通面积 695. Max Area of Island (Medium) [[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0] ...