1.環境部署
es集群部署忽略,注意要用es:es,把es,kibana,search相關的包全部修改用戶和組
chown -R es:es 包名稱
安裝和es對應版本的插件,版本參考:https://github.com/floragunncom/search-guard/wiki,可以采用在線安裝
es插件:./bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:5.6.2-19.1
kibana插件:./bin/kibana-plugin install file:///server/searchguard-kibana-5.6.2-5.zip
證書生成插件:git clone https://github.com/floragunncom/search-guard-ssl.git
修改example.sh文件的內容
添加兩個證書
# 生成一個sgadmin客戶端證書,用于配置管理
./gen_client_node_cert.sh sgadmin changeit capass
# 生成一個javaapi訪問的客戶端證書
./gen_client_node_cert.sh javaapi changeit capass
生成證書:./example.sh
拷貝證書相關文件到節點的es/conf目錄下
cp *.jks /home/hadoop/Desktop/elaticsearch-5.2.2/config/
修改es的配置文件:
searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks
searchguard.ssl.transport.keystore_password: changeit
searchguard.ssl.transport.truststore_filepath: truststore.jks
searchguard.ssl.transport.truststore_password: changeit
# 設置不校驗hostname
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.transport.resolve_hostname: false
#配置restful為https訪問,此處為了方便暫時不配置
#searchguard.ssl.http.enabled: true
#searchguard.ssl.http.keystore_filepath: node-0-keystore.jks
#searchguard.ssl.http.keystore_password: changeit
#searchguard.ssl.http.truststore_filepath: truststore.jks
#searchguard.ssl.http.truststore_password: changeit
#配置管理員證書DN
searchguard.authcz.admin_dn:
- CN=sgadmin,OU=client,O=client,L=Test, C=DE
# 配置節點識別證書DN
searchguard.nodes_dn:
- 'CN=node-*.example.com,OU=SSL,O=Test,L=Test,C=DE'
network.host: 10.2.26.39
cluster.name: fk-cluster
node.name: 10.2.26.39
http.port: 9200
transport.tcp.port: 9300
node.max_local_storage_nodes: 1
cluster.routing.allocation.same_shard.host: true
discovery.zen.ping.unicast.hosts: ["10.2.26.39:9300"]
discovery.zen.minimum_master_nodes: 1
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
將yml文件拷貝到其它節點es的conf目錄下,修改其中部分參數,比如ip等
在kibana節點上:
[root@fk config]# more kibana.yml
server.port: 5601
server.host: 10.2.26.39
elasticsearch.url: "http://10.2.26.39:9200"
elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
xpack.security.enabled: false? (這個如果不加,在訪問頁面可能不讓你輸入密碼)
.初始化用戶配置信息
cd elasticsearch-version/plugins/search-guard-5/tools/
修改腳本執行權限:chmod +x *.sh
在所有節點上,首先啟動es服務,然后再執行
cd?/opt/elasticsearch-6.2.3/plugins/search-guard-6/tools
./sgadmin.sh -h master -cn vm-cluster -cd ../sgconfig -ks ../../../config/sgadmin-keystore.jks -kspass changeit -ts ../../../config/truststore.jks -tspass changeit -nhnv
重啟es和kibana,使其生效
2.登錄驗證:
3.權限配置
sg_internal_users.yml: 存儲用戶名密碼,密碼可以使用plugin/tools/hash.sh生成
? 用戶可以加入一個用戶組,后面使用用戶組與權限進行映射
sg_roles.yml:權限設置,定義什么類型的權限
sg_roles_mapping.yml: 映射角色關系,可以把權限映射給用戶,也可以映射給用戶組
sg_action_groups.yml: 定義一些用戶動作的權限與es索引之間的關系
sg_config.yml:全局設置
超級管理員可以任意操作
相關es demo:
curl '10.2.26.39:9200/_cat/indices?v'
es無用戶名和密碼訪問:curl? 'ip:9200/_cat/indices?v'
es用用戶名和密碼訪問:curl -uadmin:admin 'ip:9200/_cat/indices?v'
es刪除某個索引:curl -uadmin:admin -XDELETE 'http://ip:9200/binlog-2018.08.31'
某個用戶操作某個索引:curl -uliuwei:liuwei 'ip:9200/logstash*/_search?v'
注意:
參考官網說明:https://docs.search-guard.com/latest/authentication-authorization
目前問題:
1、logstah用戶,索引配置了DELETE,但是刪除不了logstash開頭的索引?
問題解決:
delete只有刪除單條,或者deletebyquery權限
在index下添加:indices:admin/delete,千萬不能在cluster下加
目前需求是:公司有4個組,每個組只能查看自己的索引,并且可以刪除,修改操作
只要定義相關配置文件,修改模板的權限即可!已經測試過
下一步會驗證6.2版本的es的相關權限,歡迎大家指導
測試后發現,6.2版本的kibana插件無法安裝,存在問題
*************************
采用6.3.1版本的es和kiaban
安裝:
./bin/elasticsearch-plugin install -b com.floragunn:search-guard-6:6.3.1-23.0
./bin/kibana-plugin install file:///server/search-guard-kibana-plugin-6.3.1-14.zip