权限acl详解,acl的构成-scheme与id

  1. ACL(access control lists)权限控制

    1. 针对节点可以设置相关读写设置等操作权限,目的是为了保障数据安全性
    2. 权限permissions可以指定不同权限范围以及角色
  2. ACL命令行

    1. getAcl:获取某个节点的acl权限信息
    2. setAcl:设置某个节点的acl权限信息
    3. addauth:输入认证授权信息,注册时输入明文密码(登录),但是在zk的系统里,密码是以加密的形式存在的
  3. ACL的构成

    1. zk的acl通过[scheme:id:permissions]来构成权限列表

      1. scheme:代表采用的某种权限机制

      2. id:代表允许访问的用户

      3. permissions:权限组合字符串

    2. - scheme

      1. world:world下只有一个id,即只有一个用户,也就是anyone

        1. 组合写法:world:anyone:[perssionsions]

          1. 针对任何人都可以访问的节点

      2. auth:代表认证登录,需要注册用户有权限就可以,形式为auth:user:password:[permissions]

      3. digest: 需要对密码加密才能访问,组合形式为digest:username:BASE64(SHA1(password)):[permissions]

      4. auth 与digest的区别

        1. auth是明文,digest密文

        2. setAcl /path auth:lee:lee:cdrwa

        3. setAcl /path digest:lee:BASE64(SHA1(password))cdrwa

        4. 上这个两个语句是等价的,在通过 addauth digest lee:lee 后都能操作指定节点的权限

        5. 在实际的运用auth运用的不是很多

      5. ip:当设置为ip指定的ip地址,此时限制ip进行访问,比如ip:192.168.1.1:[permissions]

      6. super:代表超级管理员,拥有所有的权限

    3.  - permissions

      1. 权限字符串缩写 crdwa

        1. Create 创建子节点

        2. Read 读取节点/子节点

        3. Write 设置节点数据

        4. Delete 删除子节点

        5. ADMIN 可以用来设置权限,例如crdw

  4. ACL命令行学习实例

    1. world : anyone : crdwa
      1. 首先我们hubbert子节点下创建aclNode节点,然后查看当前aclNode的权限
        1. 是cdrwa的权限
      2. 然后修改其aclNode权限为crwa,再对aclNode节点进行删除,结果发现是可以进行删除的
        1. 所以如果想要设置不能删除aclNode节点,应该设置hubbert节点不能有删除权限。
        2. 所以设置权限只是针对其子节点的操作权限,如下面所示
        3. 发现其子节点childAclNode无法删除
        4. 其他cdrwa则是同理
    2. auth digest 
      1. auth:user:pwd:cdrwa
      2. digest:user:BASE64(SHA1(pwd)):cdrwa
      3. addauth digest user:pwd
      4. 首先我们再本地创建一个authNode节点
      5. 然后通过auth 给authNode节点添加 username : password 这个用户
      6. 但是会提示添加失败,因为目前本地并没有这个 username : password 这个用户
      7. 所以通过addauth digetst username:password 注册用户后
      8. 再通过setAcl 对节点auth进行注册,最后密码是通过加密进行显示的
    3. digest
      1. digest username:password crwda
      2. 使用digest命令 密码需要使用密文
    4. ip命令行
    5. super命令行
      1. 超级权限用户
      2. 修改zkServer.sh 增加super管理员
      3. 重启zkServer.sh
      4. 在nohub 加上后面这句话即可。然后wd存储,进行restart
      5. 调用get命令不能查看 ip当前的权限
      6. 登录super账户后,可以进行查询
  5. ACL常用使用场景

    1. 开发/测试环境分离,开发者无权操作测试库的节点,只能看。
    2. 生产环境上控制指定ip的服务可以访问相关节点,防止混乱
  6. ACL四字命令(Four Letter Words)

    1. zk可以通过它自身提供的简写命令来和服务器进行交互
    2. 需要使用命令nc,安装:yum install nc
    3. echo [command] | nc [ip] [port]
      1. ​​​​​​​【stat】查看zk的状态信息,以及是否mode(mode是指集群环境下的模式?还是单例模式,单机运行的?)
      2. ruok】查看当前zkserver是否启动,返回imok
      3. dump】 列出未经处理的会话临时节点
        1. 创建临时节点
      4. conf】查看服务器配置
        1. ​​​​​​​
      5. 【cons】展示连接到服务器的客户端信息
      6. 【envi】环境变量
      7. nmtr】监控zk健康信息
        1. ​​​​​​​
      8. wchs】展示watch的信息
        1. ​​​​​​​
      9. wchc】与【wchp】session与watch及path与watch 信息
        1. wchc与wchp默认没在zk的白名单中
        2. 在3.4.10版本后,wchc与wchp默认是没放在白名单中
        3. 需要在zoo.cfg里面进行配置
        4. 41w.commands.whitelist=*
        5. 然后保存重启才能生效
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值