ES集群配置用戶密碼


背景: ES集群原先沒設置密碼,存在數據泄露,被篡改風險。

1、集群設置證書

啟用了x-pack模塊,那么集群中的各節點之間通訊就必須安全認證。為了解決節點間通訊的認證問,我們需要制作證書。

不然直接生成密碼的話, 會報Cause: Cluster state has not been recovered yet, cannot write to the [null]index

elasticsearch-certutil  cert

用於生成elastic-certificates.p12 文件,

ps: 也有博客說要先生成證書elasticsearch-certutil ca , 我這邊只生成elastic-certificates.p12。

elastic-certificates.p12文件放到config下面,同時傳輸到集群各節點config下面。

2、elasticsearch.yml設置

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

重啟ES

Elasticsearch 有兩個級別的通信,傳輸通信和 http 通信。 傳輸協議用於 Elasticsearch 節點之間的內部通信,http 協議用於客戶端到 Elasticsearch 集群的通信。
個人認為上面只設置了內部傳輸協議直接的證書,所以只用cert生成 ,沒有ca生成。
elasticsearch.yml設置里面也只設置了 xpack.security.transport.ssl, 沒有設置xpack.security.http.ssl...

開始設置密碼:

elasticsearch.yml設置

xpack.security.enabled: true
elasticsearch-setup-passwords auto 

來自動生成密碼

存儲密碼可能需要elasticsearch.keystore
./elasticsearch-keystore create來生成

生成好后配置到kibana等。

kibana上可以自定義設置角色和用戶。設置只讀用戶read,寫入用戶write

后續可以用這些用戶來操作ES了,

curl -XGET "http://localhost:9200/_search" -H 'Content-Type: application/json' -d'{"query": {"match_all": {}}}' -u read:read1234 

curl -XPOST 'http://localhost:9200/teacher/_doc' -u apm_system:apm1234 -d '{"name":"lihua1","age":13}' -H 'Content-Type:application/json; charset=UTF-8'

參考:
https://blog.csdn.net/UbuntuTouch/article/details/120568128
https://blog.csdn.net/piaoranyuji/article/details/114264033
https://zhuanlan.zhihu.com/p/163337278


免責聲明!

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



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