search-guard环境部署,登录验证,权限配置
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