基於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用戶選擇其他未分配權限的索引,無法查詢到數據。

到此,系統多用戶安全認證日志平台搭建完成!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM