zoukankan      html  css  js  c++  java
  • EFK教程(5)

    基于ES内置及自定义用户实现kibana和filebeat的认证

    作者:“发颠的小狼”,欢迎转载


    目录

    ▪ 用途
    ▪ 关闭服务
    ▪ elasticsearch-修改elasticsearch.yml配置
    ▪ elasticsearch-开启服务
    ▪ elasticsearch-建立本地内置用户
    ▪ kibana-创建私钥库
    ▪ kibana-WEB界面确认用户
    ▪ filebeat-在WEB界面创建角色及用户
    ▪ filebeat-服务器上创建密钥库
    ▪ filebeat-配置filebeat.yml
    ▪ 测试
    ▪ 附录


    用途

    前情提要:

    ▷ 在第一篇《EFK教程 - 快速入门指南》中,阐述了EFK的安装部署,其中ES的架构为三节点,即master、ingest、data角色同时部署在三台服务器上。
    ▷ 在第二篇《EFK教程 - ElasticSearch高性能高可用架构》中,阐述了EFK的data/ingest/master角色的用途及分别部署三节点,在实现性能最大化的同时保障高可用。
    ▷ 在第三篇《EFK教程(3) - ElasticSearch冷热数据分离》中,阐述了ES多实例部署,将不同热度的数据存在不同的磁盘上,实现了数据冷热分离、资源合理分配。
    ▷ 在第四篇《EFK教程(4) - ElasticSearch集群TLS加密通讯》中,阐述了ES集群创建CA、CERT证书,实现ElasticSearch集群之间数据通过TLS进行双向加密交互。

    本文:

    ▷ ES集群开启内置用户和自定义用户
    ▷ kibana通过ES内置kibana用户连接ES集群
    ▷ filebeat通过ES自定义test-filebeat用户连接ES集群


    关闭服务

    在进行下面实验前,请先关闭所有ElasticSearch、kibana、filebeat进程


    elasticsearch-修改elasticsearch.yml配置

    按以上表格对应的实例新增conf目录下elasticsearch.yml配置参数

    # 在所有实例上加上以下配置
    # 开启本地用户
    xpack.security.enabled: true
    # xpack的版本
    xpack.license.self_generated.type: basic
    

    elasticsearch-开启服务

    开启所有ES服务

    sudo -u elasticsearch ./bin/elasticsearch
    

    elasticsearch-建立本地内置用户

    本地内置elastic、apm_system、kibana、logstash_system、beats_system、remote_monitoring_user用户

    # 在其中一台master节点操作
    # interactive 自定密码 auto自动生密码
    sudo -u elasticsearch ./bin/elasticsearch-setup-passwords interactive
    # 输入elastic密码
    # 输入apm_system密码
    # 输入kibana密码
    # 输入logstash_system密码
    # 输入beats_system密码
    # 输入remote_monitoring_user密码
    

    测试内部用户

    通过base64将elastic用户进行加密,格式为“elastic:elastic的密码“

    # 例如以下格式
    curl -H "Authorization: Basic ZWxhc3RpYzplbGFzdGkxMjM0NTY3OA==" "http://192.168.1.31:9200/_cat/nodes?v"
    

    如果不通过Basic访问或base64加密错误会报以下错误


    kibana-创建私钥库

    在192.168.1.21创建私钥库

    cd /opt/kibana/
    # 创建密钥库
    sudo -u kibana ./bin/kibana-keystore create
    # 连接ES用户名,这里输入kibana
    sudo -u kibana ./bin/kibana-keystore add elasticsearch.username
    # 连接ES密码,这里输入刚刚设置kibana的密码
    sudo -u kibana ./bin/kibana-keystore add elasticsearch.password
    

    在192.168.1.21确认私钥库

    sudo -u kibana ./bin/kibana-keystore list
    

    启动服务

    sudo -u kibana /opt/kibana/bin/kibana -c /opt/kibana/config/kibana.yml
    

    kibana-WEB界面确认用户

    登入kibana

    在浏览器输入192.168.1.21:5601,用户名:elastic 密码:之前输入elastic的密码


    filebeat-在WEB界面创建角色及用户

    创建自定义的filebeat角色

    关于角色权限的说明请自行查阅附录链接

    创建自定义的filebeat用户


    filebeat-服务器上创建密钥库

    在192.168.1.11创建filebeat密钥库

    cd /opt/filebeat/
    #创建密钥库
    ./filebeat keystore create
    #创建test-filebeat用户私钥
    ./filebeat keystore add test-filebeat
    

    确认filebeat密钥库

    ./filebeat keystore list
    


    filebeat-配置filebeat.yml

    配置filebeat.yml

    # 文件输入
    filebeat.inputs:
      # 文件输入类型
      - type: log
        # 开启加载
        enabled: true
        # 文件位置
        paths:
          - /var/log/nginx/access.log
        # 自定义参数
        fields:
          type: nginx_access # 类型是nginx_access,和上面fields.type是一致的
    
    # 输出至elasticsearch
    output.elasticsearch:
      # 连接ES集群的用户名
      username: test-filebeat
      # 连接ES集群的密码
      password: "${test-filebeat密码}"
      # elasticsearch集群
      hosts: ["http://192.168.1.31:9200",
              "http://192.168.1.32:9200",
              "http://192.168.1.33:9200"]
    
      # 索引配置
      indices:
        # 索引名
        - index: "nginx_access_%{+yyy.MM}"
          # 当类型是nginx_access时使用此索引
          when.equals:
            fields.type: "nginx_access"
    
    # 关闭自带模板
    setup.template.enabled: false
    
    # 开启日志记录
    logging.to_files: true
    # 日志等级
    logging.level: info
    # 日志文件
    logging.files:
      # 日志位置
      path: /opt/logs/filebeat/
      # 日志名字
      name: filebeat
      # 日志轮转期限,必须要2~1024
      keepfiles: 7
      # 日志轮转权限
      permissions: 0600
    

    启动filebeat

    /opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml -d "publish"
    

    测试

    写入一条数据

    curl -I "http://192.168.1.11"
    

    在kibana中查看


    附录

    kibana角色权限相关文档链接

    https://www.elastic.co/guide/en/elasticsearch/reference/7.3/security-privileges.html#privileges-list-cluster
    
  • 相关阅读:
    iOS书写高质量代码之耦合的处理
    下载历史版本App超详细教程
    iOS-申请邓白氏编码的超详细流程介绍
    AFNetworking之于https认证
    iOS时间问题
    AFNetworking到底做了什么?(二)
    AFNetworking到底做了什么
    iOS7中的ViewController切换
    iOS 视图控制器转场详解
    关于如何写UI及屏幕适配的一些技巧
  • 原文地址:https://www.cnblogs.com/fzxiaomange/p/efk-userauth.html
Copyright © 2011-2022 走看看