​ 配置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构建多用户安全认证日志系统的更多相关文章

  1. 基于ef core 2.0的数据库增删改审计系统

    1.首先是建审计存储表 CREATE TABLE [dbo].[Audit] ( [Id] [uniqueidentifier] NOT NULL, [EntityName] [nvarchar](1 ...

  2. 基于ASP.NET 4.0开发的微商城系统OdnShop,开源发布

    基于ASP.NET 4.0开发的开源微商城系统,我们的目标是构建一个核心完善而又轻量级的微商城平台,目前基本的核心功能,包括微信登陆/支付,产品管理,购物车与订单管理等,轻量级是为了更加便于理解源码和 ...

  3. ELK统一日志系统的应用

    收集和分析日志是应用开发中至关重要的一环,互联网大规模.分布式的特性决定了日志的源头越来越分散, 产生的速度越来越快,传统的手段和工具显得日益力不从心.在规模化场景下,grep.awk 无法快速发挥作 ...

  4. 从0搭建一个基于 ELK 的日志、指标收集与监控系统

    为了使得私有化部署的系统能更健壮,同时不增加额外的部署运维工作量,本文提出了一种基于 ELK 的开箱即用的日志和指标收集方案. 在当前的项目中,我们已经使用了 Elasticsearch 作为业务的数 ...

  5. 开源低代码平台开发实践二:从 0 构建一个基于 ER 图的低代码后端

    前后端分离了! 第一次知道这个事情的时候,内心是困惑的. 前端都出去搞 SPA,SEO 们同意吗? 后来,SSR 来了. 他说:"SEO 们同意了!" 任何人的反对,都没用了,时代 ...

  6. 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具

    iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...

  7. ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)

    ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台 参考:http://www.tuicool.com/articles/R77fieA 我在做ELK日志平台开始之初选择为 ...

  8. 如何基于 K8S 多租能力构建 Serverless Container

    当前 Kubernetes 已经成为名副其实的企业级容器编排规范,很多云平台都开始提供兼容 Kubernetes 接口的容器服务.而在多用户支持方面,多数平台选择直接提供专属虚机集群,用户需要花费大量 ...

  9. Packet Tracer 5.0 构建CCNA实验(2)—— 配置VLAN

    Packet Tracer 5.0 构建CCNA实验(2)—— 配置VLAN Vlan(Virtual Local Area Network) 即虚拟局域网.VLAN可以把同一个物理网络划分为多个逻辑 ...

随机推荐

  1. Oracle-数据导出和导入

    对数据库进行逻辑备份或数据转储,也就是对数据库实时导入.导出操作时,既可以使用常规的EXP/IMP客户端程序,也可以使用数据泵技术:IMPDP/EXPDP 使用数据泵导出或导入的优点: 1.数据泵导出 ...

  2. .net任务调度平台 Dyd.BaseService.TaskManager

    国外网速慢,最新版本迁移至http://git.oschina.net/chejiangyi/Dyd.BaseService.TaskManager .net 简单任务调度平台 用于.net dll, ...

  3. SpringBoot整合SpringMVC完成文件上传

    1.编写Controller /** * SPringBoot文件上传 */ //@Controller @RestController //表示该类下的方法的返回值会自动做json格式的转换 pub ...

  4. 【BASIS系列】SAP /usr/sap//DVEBMGS00满了怎么处理

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BASIS系列]SAP /usr/sap//D ...

  5. pytony格式化输出-占位符

    1. %s s = string 字符串 2. %d d = digit 整数 3. %f f = float 浮点数 #!/usr/bin/env python #_*_coding:utf-8_* ...

  6. 多线程09-Mutex

        )))                 {                     Console.WriteLine("second instance is runing" ...

  7. CentOS7 iptables安装及操作

    添加规则时的考量点: (1)要实现哪种功能:判断添加在哪张表上: (2)报文流经的路径:判断添加在哪个链上: 链上规则的次序: (1)同类规则(访问同一应用),匹配范围小的放上面: (2)不同类规则( ...

  8. (转载)图解Java多态内存分配以及多态中成员方法的特点

    图解Java多态内存分配以及多态中成员方法的特点   图解Java多态内存分配以及多态中成员方法的特点   Person worker = new Worker(); 子类实例对象地址赋值给父类类型引 ...

  9. Excel VBA在生成副本的工作表中插入本工作簿中的VBA模块代码

    即在工作簿中添加一个工作表,然后移出并存为新的工作簿,在移出前将本工作簿的一个模块的代码拷贝至新的工作簿.下面是关键代码: '===================================== ...

  10. 10、应用机器学习的建议(Advice for Applying Machine Learning)

    10.1 决定下一步做什么 到目前为止,我们已经介绍了许多不同的学习算法,如果你一直跟着这些视频的进度学习,你会发现自己已经不知不觉地成为一个了解许多先进机器学习技术的专家了. 然而,在懂机器学习的人 ...