EFK教程(5) - ES集羣開啓用戶認證

EFK教程(5) - ES集羣開啓用戶認證

基於ES內置及自定義用戶實現kibana和filebeat的認證html

做者:「發顛的小狼」,歡迎轉載node


目錄

▪ 用途
▪ 關閉服務
▪ elasticsearch-修改elasticsearch.yml配置
▪ elasticsearch-開啓服務
▪ elasticsearch-創建本地內置用戶
▪ kibana-建立私鑰庫
▪ kibana-WEB界面確認用戶
▪ filebeat-在WEB界面建立角色及用戶
▪ filebeat-服務器上建立密鑰庫
▪ filebeat-配置filebeat.yml
▪ 測試
▪ 附錄nginx


用途

前情提要:瀏覽器

▷ 在第一篇《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集羣curl


關閉服務

在進行下面實驗前,請先關閉全部ElasticSearch、kibana、filebeat進程elasticsearch


elasticsearch-修改elasticsearch.yml配置

EFK教程(5) - ES集羣開啓用戶認證

按以上表格對應的實例新增conf目錄下elasticsearch.yml配置參數ide

# 在全部實例上加上如下配置
# 開啓本地用戶
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密碼

EFK教程(5) - ES集羣開啓用戶認證

測試內部用戶

經過base64將elastic用戶進行加密,格式爲「elastic:elastic的密碼「

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

EFK教程(5) - ES集羣開啓用戶認證

若是不經過Basic訪問或base64加密錯誤會報如下錯誤

EFK教程(5) - ES集羣開啓用戶認證


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

EFK教程(5) - ES集羣開啓用戶認證

啓動服務

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

kibana-WEB界面確認用戶

登入kibana

在瀏覽器輸入192.168.1.21:5601,用戶名:elastic 密碼:以前輸入elastic的密碼

EFK教程(5) - ES集羣開啓用戶認證

EFK教程(5) - ES集羣開啓用戶認證


filebeat-在WEB界面建立角色及用戶

建立自定義的filebeat角色

關於角色權限的說明請自行查閱附錄連接

EFK教程(5) - ES集羣開啓用戶認證

EFK教程(5) - ES集羣開啓用戶認證

建立自定義的filebeat用戶

EFK教程(5) - ES集羣開啓用戶認證

EFK教程(5) - ES集羣開啓用戶認證


filebeat-服務器上建立密鑰庫

在192.168.1.11建立filebeat密鑰庫

cd /opt/filebeat/
#建立密鑰庫
./filebeat keystore create
#建立test-filebeat用戶私鑰
./filebeat keystore add test-filebeat

EFK教程(5) - ES集羣開啓用戶認證

確認filebeat密鑰庫

./filebeat keystore list

EFK教程(5) - ES集羣開啓用戶認證


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中查看

EFK教程(5) - ES集羣開啓用戶認證


附錄

kibana角色權限相關文檔連接

https://www.elastic.co/guide/en/elasticsearch/reference/7.3/security-privileges.html#privileges-list-cluster
相關文章
相關標籤/搜索