1. 前言
從 Elastic Stack 6.8 和 7.1 開始,Elasticsearch在默認分發包中免費提供多項安全功能,例如 TLS 加密通信、基於角色的訪問控制 (RBAC),等等。在本文中,我將會演示如何啓用這些功能來確保您的 Elasticsearch 集羣的安全。
實際演示中,我將會在兩臺centos7上各自創建一個一節點 Elasticsearch 集羣並進行安全設置。要實現這一點,我們首先需要在兩個節點之間配置 TLS 通信。然後,我會爲 Kibana 實例啓用安全功能。再然後,我會在 Kibana 中配置基於角色的訪問控制,從而確保用戶只能看到他們獲授權能夠看到的內容。
儘管關於安全功能的運行過程還有很多內容,但現在我們僅會介紹入門所需知識。
2. 安裝 Elasticsearch 和 Kibana
略
3. 傳輸層配置 TLS 和身份驗證
3.1. 在 Elasticsearch 主節點上配置 TLS
我要做的第一件事是生成證書,通過這些證書便能允許節點安全地通信。您可以使用企業 CA 來完成這一步驟,但是在此演示中,我將會使用一個名爲 elasticsearch-certutil 的命令,通過這一命令,就無需擔心證書通常帶來的任何困擾,便能完成這一步。
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
如果您使用密碼保護了節點證書的安全,請將密碼添加到您的Elasticsearch密鑰庫中:
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass "testpassword"
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
接下來,使用您最常用的文本編輯器打開文件 config/elasticsearch.yaml
。將下列代碼行粘貼到文件末尾。
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
保存文件,現在我們便可以啓動主節點了。運行命令 bin/elasticsearch。這一可執行文件必須保持運行,現在可以將此終端放在一邊。
3.2. Elasticsearch 集羣密碼
elasticsearch-setup-passwords
官方文檔
注意:elasticsearch-setup-passwords
這個命令只能使用一次。
# 生成隨機密碼
bin/elasticsearch-setup-passwords auto
# 手動定義密碼(建議使用)
bin/elasticsearch-setup-passwords interactive
但是如果完全忘記了 Elasticsearch 的超級用戶的密碼,請看
3.3. 在從節點上配置 TLS
複製證書文件,然後將 xpack.security.* 鍵設置爲與主節點一模一樣。然後通過運行 bin/elasticsearch
來啓動節點。我們將看到其加入集羣。而且,如果看一下主節點的終端窗口,我們會看到有一條消息顯示已有一個節點加入集羣。現在,我們的兩節點集羣便開始運行了。
3.4. 在 Kibana 中實現安全性
在 kibana
安裝目錄中編輯 config/kibana.yml
到類似下面的代碼行
#elasticsearch.username: "kibana"
#elasticsearch.password: "testpassword"
對 username
和 password
字段取消註釋,方法是刪除代碼行起始部分的 #
符號。將 “user” 更改爲 “kibana”,然後將 “pass” 更改爲 setup-passwords
命令告訴我們的任何 Kibana 密碼。保存文件,然後我們便可通過運行 bin/kibana 啓動 Kibana 了。