ES X-Pack基礎安全如何配置
前提要求ELK版本爲7.1+版本,7.1+版本的基礎安全是免費提供的,這裏必須點贊。
-
在elasticsearch中生成證書
./bin/elasticsearch-certutil ca -out config/elastic-certificates.p12 -pass ""
或者
./bin/elasticsearch-certutil cert \ --ca elastic-stack-ca.p12 \ --dns localhost \ --ip 127.0.0.1,::1 \ --out config/certs/node-1.p12 # --ca爲CA證書路徑名稱 # -dns爲節點DNS # --ip爲節點ip # --out爲生成節點證書的路徑和名稱等,輸出文件是PKCS#12密鑰庫,其中包括節點證書,節點密鑰和CA證書 # 或者使用命令 bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 效果跟上面這個一樣,生成一個p12結尾的證書
提取用戶證書:
openssl pkcs12 -in test.p12 -clcerts -nokeys -out cert.pem //pem格式
openssl pkcs12 -in test.p12 -clcerts -nokeys -out cert.crt //crt格式
如果需要攜帶祕鑰,則去掉 -nokeys
openssl pkcs12 -in test.p12 -clcerts -out cert.pem //pem格式
openssl pkcs12 -in test.p12 -clcerts -out cert.crt //crt格式
提取私鑰:
openssl pkcs12 -in test.p12 -nocerts -out key.pem
清除祕鑰中的密碼(在把祕鑰部署到某些服務器上時可能需要清除密碼)
openssl rsa -in key.pem -out newkey.pem -
編輯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
-
啓動elasticsearch
./bin/elasticsearch -d
-
設置ELK各個組件的密碼
./bin/elasticsearch-setup-passwords auto
或者自定義密碼
./bin/elasticsearch-setup-passwords interactive
-
logstash中輸出到elasticsearch的需要加上上一步生成的es用戶名和密碼,修改logstash的配置文件
output { elasticsearch { hosts => ["192.168.72.135:9200"] index => "%{[@metadata][test]}" user => "elastic" password => "l03xgeIOxmWDRNveVjMm" codec => json } stdout{ codec => rubydebug { metadata => true } } }
-
kibana啓動也需要es的用戶名和密碼,修改kibana.yml配置文件
elasticsearch.username: "elastic" elasticsearch.password: "l03xgeIOxmWDRNveVjMm"
-
last
前面主要對elasticsearch的安全做了配置,更細分的權限配置在kibana中才能進行配置,
裏面可以定義用戶和角色,角色對應各種權限很豐富,可以針對索引,和命名空間,只讀等等個性化的權限控制.
如下我創建了一個test用戶,test角色,權限他只能訪問test-1這一個索引,和只能查看日誌
使用test賬號登錄可以看到左側工程菜單裏只有個日誌功能,設置功能進去也沒有權限,因爲沒給它權限,只能看test-1索引的日誌。
over