• zookeeper ACL(access control lists)权限控制


    基本作用:
           针对节点可以设置 相关读写等权限,目的为了保障数据安全性
           权限permissions可以制定不同的权限范围以及角色
    一:ACL构成
            zk的acl通过[scheme:id:permissions]来构成权限列表
            scheme:代表采用的某种权限机制
            id:代表允许访问的用户
            permissions:权限组合字符串
         1、  scheme:
                 word:word下只有一个id,既只有一个用户,也就是anyone。那么组合的写法就是word:anyone:[permissions]
                 auth:代表认证登录,需要注册用户有权限就可以,形式为:auth:user:password:[permissions]
                 digest:需要对密码加密才能访问,组合行成为: digest:username:BASE64(SHA1(password)):[permissions]
             
                简而言之,auth与digest的区别就是,一个明文,一个密文setAcl/path auth:lee:lee:cdrwa
                                                                                与                     setAcl/path digest:lee:BASE64(SHA1(password)):cdrwa
                等价的,再通过addauth digest lee:lee   后都能操作指定节点的权限
               
               ip:当设置为ip指定的ip地址,此时限制ip进行访问,比如:
               ip :192.168.1.1:[permissions]  
                
              super:比较特殊  代表超级管理员,拥有所有权限
     
        3、ACL构成三  --- permissions 
              权限字符串缩写:crdwa
              create:创建子节点
                 read:获取节点/子节点
                write:设置节点数据
              delete:删除子节点
              admin:设置权限
    二:ACL命令
           getAcl:获取某个节点的acl权限信息
           setAcl:设置某个节点的acl权限信息
           addauth:输入认证授权信息,注册时输入明文密码(登录),但是在zk的系统里,密码是加密的形式存在的。
     
     1、getAcl
            
     2、wolrd
                wolrd:anyoone:cdrwa
                默认在节点创建完是允许所有匿名用户对该节点进行操作的。
               
    如上图所示,我们给/wq/abc 设置了crwa(即创建、读、写、管理操作)。
    注:由于我们的/wq默认在创建的时候会拥有cdrwa权限,此时我们删除/wq/abc肯定是可以的。
     
    设置acl权限和验证
    那么怎样来验证我们刚设的crwa权限呢?这里我们需要在/wq/abc下再创建一个子节点即/wq/abc/xyz从而来验证上一步我们给/wq/abc设置不能删除节点的权限。例:
     
    3、Auth
       第一步,先初始化一些节点,在根目录下新建节点/names,再在/names下新建节点hebe并查看其权限,如图示:
     
    注:下面演示一下错误操作,直接给当前节点验证用户名hebe密码hebe,会出现如下错误信息:
    这是由于我们的用户名密码并没有进行注册(即登录信息并未注册)。
    那么就需要我们将该用户名/密码添加到库里,再登录并设置权限就行了,如下所示:
    获取该节点Acl,并将我圈出部分即账户信息hebe:YDTbY1suR969/X/vk+9Fiwzfpd8=
    拷贝(选中右键粘贴即可,不要ctrl+c,因为会退出)到本地记事本中,待会有用到。如图示:
     
    后面添加的用户都会使用第一个用户的账号信息。
    首先,为了演示,新加一个用户zyl:zyl,( zyl:AKsNqVOhO7ZXMtj51BNaV+Tv60A=)它的Acl信息如下:
     
    即这里省略用户密码信息也是可以进入的。默认使用的是当前第一个的用户信息。

    4、digest
        使用digest首先我们需要退出当前用户,即ctrl+c退出客户端。再./zkCli.sh运行客户端。接下来在/names节点下新建test节点,如图示0:
     
    设置Acl,用户信息就是上面我们拷贝的wq的用户信息,如图示:
    登录addauth digest wq:wq,注意登录我们也不可能让用户输入暗文登录,所以还是使用明文密码登录。如图示:
     
    5、使用 ip
         Linux环境配置,配置Acl如图示:
    6、使用 Super
        6.1、  修改zkServer.sh增加super 管理员
      首先需要vi zkServer.sh 利用/查询nohup,紧接着添加超级管理员配置信息
      vi /usr/local/zookeeper/bin/zkServer.sh  或vim /usr/local/zookeeper/bin/zkServer.sh   打开如图示:
     
    -Dzookeeper.DigestAuthenticationProvider.superDigest=zyl:AKsNqVOhO7ZXMtj51BNaV+Tv60A=我们之前设过的zyl的用户密码。

    增加后内容。

    6.2、重启zkServer.sh,再重启客户端zkCli.sh,如下所示:
      
    6.3、验证超级管理员权限
    通过上图,我们可以发现,一开始我们是没登录超级管理员,所以查看ip节点是没有权限的(因为上一步我们给ip节点加了固定ip权限才能操作),所以在使用addauth digest wq:wq登录我们的超级管理员后,就可以任意妄为地操作我们的节点了。
    三:ACL使用场景
         开发、测试环境分离,开发者无权操作测试库的节点,只能看;
      生产环境上控制指定ip的服务可以访问相关节点,防止混乱。
  • 相关阅读:
    剑指Offer--复杂链表的复制
    剑指offer--第43题 1~n整数中1出现的次数
    剑指Offer--第50题 第一次只出现一次的字符
    剑指offer--扑克牌顺子
    MySQL免安装使用教程
    TortoiseGit的使用参考
    剑指Offer-- 第58题 翻转字符串
    剑指Offer-- 第45题 把数组排成最小数
    剑指Offer-- 第49题 丑数
    SpringBoot-data-jpa的简单使用
  • 原文地址:https://www.cnblogs.com/haoliyou/p/10517782.html
Copyright © 2020-2023  润新知