ElasticSearch2.4.2安裝search-guard外掛
(1)環境;
elasticsearch 2.4.2
(2):github上分支沒有2.4.x版本的分支,筆者一度找了好久才找到下面一個版本關係對應表
elasticsearch與search-guard以及search-guard-ssl:
(3): 進入elasticsearch的bin目錄,執行命令安裝search-guard
./plugin install -b com.floragunn/search-guard-2/2.4.2.10
注:當es的版本大於2.2時,安裝過程中可能會有WARNING提示,這個不影響。其它ES版本,請對照表格替換命令列後的版本號即可。
(4):安裝 search-guard-ssl
./plugin install -b com.floragunn/search-guard-ssl/2.4.2.10
(5)安裝完成後,會在plugins目錄中生成兩個目錄
(6):下載 searchguard-ssl 的包,裡面包含自動建立證書的指令碼:
wget https://github.com/floragunncom/search-guard-ssl/archive/v2.4.2.19.zip
unzip v2.4.2.19.zip
cd search-guard-ssl-2.4.2.19/example-pki-scripts/
編輯指令碼 vim example.sh
原始example.sh檔案內容:
set -e
./clean.sh
./gen_root_ca.sh capass changeit
./gen_node_cert.sh 0 changeit capass && ./gen_node_cert.sh 1 changeit capass && ./gen_node_cert.sh 2 changeit capass
./gen_client_node_cert.sh spock changeit capass
./gen_client_node_cert.sh kirk changeit capass
修改後example.sh中檔案內容
set -e ./clean.sh ./gen_root_ca.sh elastic elastic ./gen_node_cert.sh 181 elastic elastic ./gen_node_cert.sh 182 elastic elastic ./gen_node_cert.sh 183 elastic elastic ./gen_client_node_cert.sh admin elastic elastic cp truststore.jks node-181-keystore.jks /a/apps/elasticsearch-2.4.2/config/ cp truststore.jks admin-keystore.jks /a/apps/elasticsearch-2.4.2/plugins/search-guard-2/sgconfig/
執行 ./example.sh命令,會在當前目錄生成多個證書檔案
(7):編輯elasticsearch-2.4.2/config/elasticsearch.yml配置檔案 新增如下內容
#-------------------search guard config--------------------------
security.manager.enabled: false
searchguard.authcz.admin_dn:
- "CN=admin, OU=client, O=client, L=Test, C=DE"
#上面的admin是要和example.sh中的對應上
#-------------------search guard ssl----------------------------------------
#------------------------transport layer SSL------------------------------------
searchguard.ssl.transport.enabled: true
searchguard.ssl.transport.keystore_filepath: node-181-keystore.jks
searchguard.ssl.transport.keystore_password: elastic
searchguard.ssl.transport.truststore_filepath: truststore.jks
searchguard.ssl.transport.truststore_password: elastic
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.resolve_hostname: false
searchguard.ssl.http.enabled: true #設定成true瀏覽器也無法訪問,測試請改為false
searchguard.ssl.http.keystore_filepath: node-181-keystore.jks
searchguard.ssl.http.keystore_password: elastic
searchguard.ssl.http.truststore_filepath: truststore.jks
searchguard.ssl.http.truststore_password: elastic
searchguard.allow_all_from_loopback: true
(8):在elasticsearch根目錄 執行命令 將配置插入
./plugins/search-guard-2/tools/sgadmin.sh -cn 叢集名稱 -h hostname -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/admin-keystore.jks -kspass elastic -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass elastic -nhnv
./plugins/search-guard-2/tools/sgadmin.sh -cn admin -h 172.100.50.181-cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/admin-keystore.jks -kspass elastic -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass elastic -nhnv
需要注意:
如果提示沒有操作許可權,則必須先把hash.sh檔案的許可權開放
chmod -R 777 ./plugins/search-guard-2/tools/sgadmin.sh
如成功寫入配置,則會顯示以下資訊:
9):search guard配置檔案配置
search-guard中的使用者許可權管理
相關配置檔案的介紹
searchguard 主要有5個配置檔案在plugins/search-guard-2/sgconfig 下:
1、sg_config.yml:主配置檔案不需要做改動。
2、sg_internal_users.yml:本地使用者檔案,定義使用者密碼以及對應的許可權。
3、sg_roles.yml:許可權配置檔案
4、sg_roles_mapping.yml:定義使用者的對映關係
5、sg_action_groups.yml:定義許可權
修改內建使用者密碼,然後再執行一次search guard 配置寫入命令。
1.則先用plugins/search-guard-2/tools/hash.sh生成hash字串,生成密碼:
先修改許可權。再生成密碼。
2:將字串複製到sg_internal_users.yml檔案的對應使用者密碼位置,在密碼下面記得寫入原密碼的提示,難保你那天忘記了。
vim plugins/search-guard-2/sgconfig/sg_internal_users.yml
3:新增使用者許可權
vim sg_roles_mapping.yml
4:重新寫入配置檔案
先回到elasticsearch的安裝資料夾
執行命令
./plugins/search-guard-2/tools/sgadmin.sh -cn admin -h 172.100.50.181-cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/admin-keystore.jks -kspass elastic -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass elastic -nhnv
注:admin 為叢集名稱。
番外篇:
叢集部署:
配置好一臺機器後,需要把這臺機器中的plugins資料夾中的下面兩個資料夾cp到其它節點
然後把
這兩個檔案cp到對應機器的elasticsearch安裝目錄的config資料夾下。
修改其它節點的elasticsearch.yml配置檔案,參考本機器。至此,叢集部署成功。
測試問題:
(1):叢集名稱不能包含“-”符號,如es-kz,這個叢集名稱無法生成searchguard索引。
(2):測試時,把searchguard.ssl.http.enabled: true設定成false,設定成true瀏覽器也無法訪問
(3):如果elasticsearch添加了searchguard許可權控制,則kibana,logstash等就不能再連線上es了,請參考下兩篇文章解決該問題