我们的elasticsearch集群已经部署了search gurad,kibana已经开启了权限认证,登陆用户与索引权限已经做了关联,现在介绍一下大致的权限配置思路:
-
-
版本环境:
-
logstash5.5 --> search-guard:5.5.0-16 --> es5.5 --> searchguard-kibana-5.5.0-4 --> kibana5.5
-
-
search gurad 权限管理配置文件:
-
[root@date sgconfig]# pwd
/usr/share/elasticsearch/plugins/search-guard-5/sgconfig
[root@date sgconfig]# ll
total 40
-rw-r--r-- 1 root root 6795 Mar 9 10:33 elasticsearch.yml.example
-rw-r--r-- 1 root root 1511 Mar 9 10:33 sg_action_groups.yml
-rw-r--r-- 1 root root 9598 Mar 9 10:33 sg_config.yml
-rw-r--r-- 1 root root 1756 Mar 13 17:23 sg_internal_users.yml
-rw-r--r-- 1 root root 1144 Mar 13 15:14 sg_roles_mapping.yml
-rw-r--r-- 1 root root 6724 Mar 13 17:21 sg_roles.yml
-
-
sg_internal_users.yml: 存储用户名密码,密码可以使用plugin/tools/hash.sh生成
-
用户可以加入一个用户组,后面使用用户组与权限进行映射
-
sg_roles.yml:权限设置,定义什么类型的权限
sg_roles_mapping.yml: 映射角色关系,可以把权限映射给用户,也可以映射给用户组
sg_action_groups.yml: 定义一些用户动作的权限与es索引之间的关系
sg_config.yml:全局设置
我们有2个索引一个是boy索引,一个是girl索引,我们来实例配置下:
- boy用户可以查看boy&girl索引的权限
- girl用户只能查看girl索引的权限
step 1.
sg_internal_users.yml:添加两个用户并加入到组中
boy:
hash: $2a$12$cdPCoezOdlp2yb38uahd.eUUamwjj4Y.w6s72DFINgIinn0cO8wRK
#password is: 12345
roles:
- ops
- allops
girl:
hash: $2a$12$cdPCoezOdlp2yb38uahd.eUUamwjj4Y.w6s72DFINgIinn0cO8wRK
#password is: 12345
roles:
- allops
step 2.
sg_roles.yml:添加权限
sg_kibana_boyindex:
cluster:
- CLUSTER_COMPOSITE_OPS_RO
indices:
'*-boy-log-*':
'*':
- READ
- indices:admin/mappings/fields/get*
'?kibana':
'*':
- INDICES_ALL // 查看boy索引的权限
sg_kibana_girlindex:
cluster:
- CLUSTER_COMPOSITE_OPS_RO
indices:
'*-girl-log-*':
'*':
- READ
- indices:admin/mappings/fields/get*
'?kibana':
'*':
- INDICES_ALL // 查看girl索引的权限
配置中定义了权限,CLUSTER_COMPOSITE_OPS_RO 权限范围,来自于sg_action_groups.yml
step 3.
sg_roles_mapping.yml 映射用户组的权限
sg_kibana_boyindex:
backendroles:
- ops
sg_kibana_girlindex:
backendroles:
- allops
可以看出来,ops组的用户可以查看boy索引,allops组可以查看girl索引
配置完毕执行命令重新构建search guard索引
/usr/share/elasticsearch/plugins/search-guard-5/tools/sgadmin.sh -h 10.10.38.18 -p 9300 -tspass siCPVLDYN2BwuYKo -kspass CNByuENniEtkHRfs -cd /usr/share/elasticsearch/plugins/search-guard-5/sgconfig -ks /etc/elasticsearch/admin-keystore.jks -ts /etc/elasticsearch/truststore.jks -nhnv -cn my-es
通过api我们来验证下用户权限:
使用boy用户对 boy&girl索引的内容查看
-
boy用户可以查看2个索引内的内容
使用girl用户对 boy&girl索引的内容查看
从结果可以看出 girl用户对 girl索引有查看去权限,但是在查看boy索引时,报了403权限不足
search-guard 社区版解决了,用户到索引的访问控制,达到了我们需求,很不错的一款es插件
参考资料:
阅读(1921) | 评论(0) | 转发(0) |