Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350350
  • 博文数量: 52
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 577
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-27 14:21
个人简介

知道自己该干嘛,知道自己能干嘛

文章分类

全部博文(52)

文章存档

2019年(1)

2018年(8)

2017年(2)

2016年(11)

2015年(3)

2014年(10)

2013年(17)

我的朋友

分类: 系统运维

2018-03-27 16:54:29

        
      我们的elasticsearch集群已经部署了search gurad,kibana已经开启了权限认证,登陆用户与索引权限已经做了关联,现在介绍一下大致的权限配置思路:

  1.        
  2.        版本环境:
  3.        logstash5.5 --> search-guard:5.5.0-16 --> es5.5 --> searchguard-kibana-5.5.0-4 --> kibana5.5
  4.  
  5.        search gurad 权限管理配置文件:
  6.        [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

  7.        sg_internal_users.yml: 存储用户名密码,密码可以使用plugin/tools/hash.sh生成
  8.                                用户可以加入一个用户组,后面使用用户组与权限进行映射

         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索引的内容查看
  1.         

           boy用户可以查看2个索引内的内容

           使用girl用户对 boy&girl索引的内容查看


           
          从结果可以看出 girl用户对 girl索引有查看去权限,但是在查看boy索引时,报了403权限不足

          search-guard 社区版解决了,用户到索引的访问控制,达到了我们需求,很不错的一款es插件



    参考资料:

                         



阅读(1921) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~