天天看點

EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

基于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配置

EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.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密碼           
EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

測試内部使用者

通過base64将elastic使用者進行加密,格式為“elastic:elastic的密碼“

# 例如以下格式
curl -H "Authorization: Basic ZWxhc3RpYzplbGFzdGkxMjM0NTY3OA==" "http://192.168.1.31:9200/_cat/nodes?v"           
EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

如果不通過Basic通路或base64加密錯誤會報以下錯誤

EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

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叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

啟動服務

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叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄
EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

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

建立自定義的filebeat角色

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

EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄
EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

建立自定義的filebeat使用者

EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄
EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

filebeat-伺服器上建立密鑰庫

在192.168.1.11建立filebeat密鑰庫

cd /opt/filebeat/
#建立密鑰庫
./filebeat keystore create
#建立test-filebeat使用者私鑰
./filebeat keystore add test-filebeat           
EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

确認filebeat密鑰庫

./filebeat keystore list           
EFK教程(5) - ES叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

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叢集開啟使用者認證目錄用途關閉服務elasticsearch-修改elasticsearch.yml配置elasticsearch-開啟服務elasticsearch-建立本地内置使用者kibana-建立私鑰庫kibana-WEB界面确認使用者filebeat-在WEB界面建立角色及使用者filebeat-伺服器上建立密鑰庫filebeat-配置filebeat.yml測試附錄

附錄

kibana角色權限相關文檔連結

https://www.elastic.co/guide/en/elasticsearch/reference/7.3/security-privileges.html#privileges-list-cluster           

繼續閱讀