ACL控制权限

  • 什么是ACL(Access Control List访问控制列表)

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

    • getAcl: 获取某个节点的acl权限信息

      [zk: localhost:2181(CONNECTED) 11] getAcl /czk
      'world,'anyone
      : cdrwa
    • setAcl: 设置某个节点的acl权限信息

    • addauth: 输入认证授权信息, 注册时输入明文密码(登录)但是在zk的系统里, 密码是以加密的形式存在的

  • ACL的构成

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

      • scheme: 代表采用的某种权限机制
      • id: 代表允许访问的用户
      • permissions: 权限组合字符串
    • scheme:

      • world: world下只能有一个id, 即只有一个用户就是anyone 组合的写法就是

        world:anyone:[permissions]

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

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

      • auth与digest的区别: 前者明文,后者密文

        • setAcl /path auth:tom:tom:cdrwa
        • setAcl /path digest:tom:BASE64(SHA1(password))cdrwa是等价的
        • 在通过addauth digest tom:tom后都能操作指定节点的权限
      • ip:当设置为ip指定的IP地址, 此时限制ip进行访问,比如ip:192.168.1.1:[permissions]

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

    • permissions说明

      • crdwa
      • Create 创建
      • Read 获取节点/子节点
      • Write: 设置节点数据
      • Delete: 删除子节点
      • Admin 设置权限
    • world:anyone:cdrwa

      #创建子节点 /czk/abc
      [zk: localhost:2181(CONNECTED) 5] create /czk/abc 123
      Created /czk/abc
      #查看节点权限 新建节点默认权限都是 world:anyone:cdrwa
      [zk: localhost:2181(CONNECTED) 6] getAcl /czk/abc
      'world,'anyone
      : cdrwa
      • 通过setAcl修改节点权限 setAcl 路径 world:anyone:crwa
      #设置权限为crwa 去掉了d 删除子节点权限
      [zk: localhost:2181(CONNECTED) 7] setAcl /czk/abc world:anyone:crwa
      cZxid = 0xb3
      ctime = Sun Jan 06 17:46:55 CST 2019
      mZxid = 0xb3
      mtime = Sun Jan 06 17:46:55 CST 2019
      pZxid = 0xb3
      cversion = 0
      dataVersion = 0
      aclVersion = 1
      ephemeralOwner = 0x0
      dataLength = 3
      numChildren = 0
      #查看权限
      [zk: localhost:2181(CONNECTED) 8] getAcl /czk/abc
      'world,'anyone
      : crwa
      #创建新的子节点
      [zk: localhost:2181(CONNECTED) 9] create /czk/abc/czk1 123
      Created /czk/abc/czk1
      #测试能否删除子节点
      [zk: localhost:2181(CONNECTED) 11] delete /czk/abc/czk1
      Authentication is not valid : /czk/abc/czk1
      #子节点依然存在
      [zk: localhost:2181(CONNECTED) 12] ls /czk/abc
      [czk1]
    • auth:user:pwd:cdrwa 用auth的方式(密码为明文)处理ACL

      addauth digest user:pwd 用户注册 登陆

      [zk: lh:2181(CONNECTED) 13] setAcl /czk/abc auth:czk:czk:cdrwa
      Acl is not valid : /czk/abc # 没有注册用户
      [zk: lh:2181(CONNECTED) 14] addauth digest czk:czk #注册用户
      [zk: lh:2181(CONNECTED) 15] setAcl /czk/abc auth:czk:czk:cdrwa
      cZxid = 0xb3
      ctime = Sun Jan 06 17:46:55 CST 2019
      mZxid = 0xb3
      mtime = Sun Jan 06 17:46:55 CST 2019
      pZxid = 0xb5
      cversion = 1
      dataVersion = 0
      aclVersion = 2
      ephemeralOwner = 0x0
      dataLength = 3
      numChildren = 1
      [zk: lh:2181(CONNECTED) 16] getAcl /czk/abc
      'digest,'czk:8vob7o7uTPp2jDaiVV3mUesBi7A=
      : cdrwa
      #退出终端后重新操作
      [zk: localhost:2181(CONNECTED) 0] ls /czk
      [sec0000000003, dir1, abc, sec0000000002]
      [zk: localhost:2181(CONNECTED) 1] ls /czk/abc
      Authentication is not valid : /czk/abc #没有查看权限
      #登陆后再次查看
      [zk: localhost:2181(CONNECTED) 4] addauth digest czk:czk
      [zk: localhost:2181(CONNECTED) 5] ls /czk/abc
      [xyz]
      #修改授权内容 一旦指定了用户名 再次设置 不需要传入用户名密码
      [zk: localhost:2181(CONNECTED) 8] setAcl /czk/abc auth::crwa
      cZxid = 0xb3
      ctime = Sun Jan 06 17:46:55 CST 2019
      mZxid = 0xb3
      mtime = Sun Jan 06 17:46:55 CST 2019
      pZxid = 0xb5
      cversion = 1
      dataVersion = 0
      aclVersion = 3
      ephemeralOwner = 0x0
      dataLength = 3
      numChildren = 1
      [zk: localhost:2181(CONNECTED) 9] getAcl /czk/abc
      'digest,'czk:8vob7o7uTPp2jDaiVV3mUesBi7A=
      : crwa
    • digest:user:BASE64(SHA1(pwd)):cdrwa 用digest(密码为密文)的方式处理ACL

      [zk: localhost:2181(CONNECTED) 13] setAcl /czk/test digest:czk:8vob7o7uTPp2jDaiVV3mUesBi7A=:rwa
      cZxid = 0xbc
      ctime = Sun Jan 06 18:20:23 CST 2019
      mZxid = 0xbc
      mtime = Sun Jan 06 18:20:23 CST 2019
      pZxid = 0xbc
      cversion = 0
      dataVersion = 0
      aclVersion = 1
      ephemeralOwner = 0x0
      dataLength = 3
      numChildren = 0
      [zk: localhost:2181(CONNECTED) 14] ls /czk/test
      []
      [zk: localhost:2181(CONNECTED) 15] getAcl /czk/test
      'digest,'czk:8vob7o7uTPp2jDaiVV3mUesBi7A=
      : rwa
    • ip:192.168.1.1:cdrwa 通过ip 控制某些客户端是否有访问的权限

      [zk: localhost:2181(CONNECTED) 17] create /czk/test2 123
      Created /czk/test2
      [zk: localhost:2181(CONNECTED) 18] setAcl /czk/test2 ip:192.168.199.3:crwa
      cZxid = 0xbf
      ctime = Sun Jan 06 18:24:28 CST 2019
      mZxid = 0xbf
      mtime = Sun Jan 06 18:24:28 CST 2019
      pZxid = 0xbf
      cversion = 0
      dataVersion = 0
      aclVersion = 1
      ephemeralOwner = 0x0
      dataLength = 3
      numChildren = 0
      [zk: localhost:2181(CONNECTED) 19] getAcl /czk/test2
      'ip,'192.168.199.3
      : crwa
      [zk: localhost:2181(CONNECTED) 20] get /czk/test2
      Authentication is not valid : /czk/test2
    • super管理员

      修改 zkServer.sh

       nohup $JAVA $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \
      "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
      "-Dzookeeper.DigestAuthenticationProvider.superDigest=czk:8vob7o7uTPp2jDaiVV3mUesBi7A=" \
      -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &

      重启客户端 登陆

    [zk: localhost:2181(CONNECTED) 2] addauth digest czk:czk
    [zk: localhost:2181(CONNECTED) 3] ls /czk/test2
    []
    [zk: localhost:2181(CONNECTED) 4] getAcl /czk/test2
    'ip,'192.168.199.3
    : crwa
    [zk: localhost:2181(CONNECTED) 5] ls /czk/test2
    []
    [zk: localhost:2181(CONNECTED) 6] delete /czk/test2
    [zk: localhost:2181(CONNECTED) 7] ls /czk
    [sec0000000003, dir1, abc, test, sec0000000002]

ZooKeeper的ACL权限的更多相关文章

  1. zookeeper的ACL权限控制

    ACL:Access Control List  访问控制列表 1.  简介 0.概述 ACL 权限控制,使用:scheme:id:perm 来标识,主要涵盖 3 个方面: 权限模式(Scheme): ...

  2. ZooKeeper设置ACL权限控制

    ZK的节点有5种操作权限:CREATE.READ.WRITE.DELETE.ADMIN 也就是 增.删.改.查.管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)注:这5种权限中,del ...

  3. 1.ZooKeeper ACL权限控制

    参考:https://blog.csdn.net/liuxiao723846/article/details/79391650 ZK 类似文件系统,Client 可以在上面创建节点.更新节点.删除节点 ...

  4. zookeeper ACL权限

    原文链接:https://www.jianshu.com/p/392248ab27f4 对zookeeper设置ACL属性 我们以zkCli为例,来说明zookeeper对ACL的设置. 使用zkCl ...

  5. Zookeeper Acl权限 超级用户权限 怎么跳过ACL密码/账户验证

    Zookeeper的一个节点不知道什么原因无法删除了,查看日志发现是没有权限, 我们之前使用ACL进行Zookeeper节点的权限管理. 可以解决以下三种但不限于以下三种问题: 1.在设置Acl权限时 ...

  6. zookeeper 笔记-ACL

    zookeeper中,znode的ACL是没有继承关系的,是独立控制的,zookeeper的acl可以从3个维度理解,一是scheme,二是user,三是permission,通常表示为scheme: ...

  7. 分布式服务管理框架-Zookeeper节点ACL

    文章转自:http://blog.csdn.net/xyang81/article/details/53147894 概述 ACL全称为Access Control List(访问控制列表),用于控制 ...

  8. ZooKeeper的ACL实现源码阅读

    什么是ACL(Access Control List) zookeeper在分布式系统中承担中间件的作用,它管理的每一个节点上可能都存储这重要的信息,因为应用可以读取到任意节点,这就可能造成安全问题, ...

  9. linux ACL权限规划:getfacl,setfacl使用

    ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置,ACL可以针对单一用户.单一文件 ...

随机推荐

  1. XML -- 为什么选择XML?

    1.XML是什么,主要功能? XML全称(EXtensible Markup Language),是可扩展性标记语言. XML主要功能是用来传输和存储数据.它就是一种纯文本.只要程序能访问纯文本就能访 ...

  2. hdu 5791 Two 二维dp

    Two Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...

  3. AVPython:Python Support for ArcView

    AVPython embeds the Python programming language within ArcView GIS 3.x. This project will also encom ...

  4. Java实验课:命令行参数是什么?

    命令行参数:在命令行中给定的参数就是命令行参数.(即从输入位置角度理解). 命令行的参数 1. 什么是命令行的参数? 如: java Test1 365 156 "China" ( ...

  5. Vue_(组件通讯)子组件向父组件传值

    Vue组件 传送门 子组件向父组件传值:子组件通过$.emit()方法以事件形式向父组件发送消息传值: 使用步骤: 1.定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件: ...

  6. CSRF实战靶场 --致谢大哥

    0X01无防护GET类型CSRF(伪造添加成员请求) 环境 靶机管理登陆 192.168.1.132 本机 192.168.1.5 首先我们登陆 test账号 然后点击 添加用户 构造出我们的url ...

  7. BZOJ1123 BLO

    割点的好题. 联通图,难度降低.首先对于一个点,如果他不是割点,那它的贡献是2*(n-1),就是任何一个其他节点都少了正反两个数对,这个看样例可以看出来. 如果它是一个割点,去掉他以后会出现若干个联通 ...

  8. Nginx常见配置

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  9. Java环境变量的操作系统原理[浅谈]

    从知乎摘抄过来的文章,图没有复制过来,当作自己的笔记.其中我认为重要的部分(涉及操作系统的)已经加粗了. 本文源自:你应该知道的 Windows 环境变量 - 麓山南人的文章 - 知乎 https:/ ...

  10. 最少步数&P1443 马的遍历

      1330:[例8.3]最少步数 s数组:记录(1,1)到达每一点需要的最少步数 s[1][1]自然为 0,其余初始化为 -1 que数组:que[#][1] 表示(1,1)可到达点的 x 坐标 q ...