• 基于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

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

    向 Kibana 中加载样本数据

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

    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用户选择其他未分配权限的索引,无法查询到数据。

    到此,系统多用户安全认证日志平台搭建完成!

  • 相关阅读:
    linux 下查看目录所占用空间大小 du命令功能
    nginx 的启动 停止和重启
    excel vba
    过程中遇到的问题
    Java python BDA文件上传下载项目遇到的问题
    java login小方法集合
    python 初学
    python 从0学起
    python交互的几种方式
    模块与包概念与调用
  • 原文地址:https://www.cnblogs.com/wzxmt/p/11654046.html
Copyright © 2020-2023  润新知