基本作用:
       针对节点可以设置 相关读写等权限,目的为了保障数据安全性
       权限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的服务可以访问相关节点,防止混乱。

zookeeper ACL(access control lists)权限控制的更多相关文章

  1. Phalcon 訪问控制列表 ACL(Access Control Lists ACL)

    Phalcon在权限方面通过 Phalcon\Acl 提供了一个轻量级的 ACL(訪问控制列表). Access Control Lists (ACL) 同意系统对用户的訪问权限进行控制,比方同意訪问 ...

  2. [笔记] Access Control Lists (ACL) 学习笔记汇总

    一直不太明白Windows的ACL是怎么回事,还是静下心来看一手的MSDN吧. [翻译] Access Control Lists [翻译] How Access Check Works Modify ...

  3. Oracle ACL (Access Control List)详解

    在Oracle11g中,Oracle在安全方面有了很多的改进,而在网络权限控制方面,也有一个新的概念提出来,叫做ACL(Access Control List), 这是一种细粒度的权限控制.在ACL之 ...

  4. [转]CodeIgniter与Zend Acl结合实现轻量级权限控制

    Tag :CodeIgniter  Zend Acl 权限控制 1. Zend_Acl简介 Zend_Acl 为权限管理提供轻量并灵活的访问控制列表 (ACL,access control list) ...

  5. windows访问控制列表 --ACL(Access Control List)

    1.定义 ACL是一个windows中的表示用户(组)权限的列表. Access Control List(ACL) Access Control Entry(ACE) ... 2.分类 ACL分为两 ...

  6. CodeIgniter与Zend Acl结合实现轻量级权限控制

    CodeIgniter与Zend Acl结合实现轻量级权限控制 Tag :CodeIgniter Zend Acl 权限控制 1. Zend_Acl简介 Zend_Acl 为权限管理提供轻量并灵活的访 ...

  7. ACL(Access Control List)

    一.ACL的简介 ACL(Access Control List 访问控制列表)是路由器和交换机接口的指令列表,用来控制端口进出的数据包.ACL的定义也是基于每一种被动路由协议的,且适用于所有的被动路 ...

  8. ccna 闫辉单臂路由 和 acl access control list

    ccna 闫辉单臂路由 和  acl   access control list 一单臂路由     当前园区网设计很少用到       成本低  小型的.局域网可用         二ACL acc ...

  9. Gym100623A Access Control Lists

    Gym 100623A Access Control Lists 这个题很sb啊,就是去设置个交换机 我们可以给一个IP进行设置,也可以对一个网段就行设置,但是IP是优于网段的,比如样例的第一个 网段 ...

随机推荐

  1. sklearn KMeans聚类算法(总结)

    基本原理 Kmeans是无监督学习的代表,没有所谓的Y.主要目的是分类,分类的依据就是样本之间的距离.比如要分为K类.步骤是: 随机选取K个点. 计算每个点到K个质心的距离,分成K个簇. 计算K个簇样 ...

  2. Python—构造单向链表数据类型

    # _*_ coding=utf-8 _*_ class Node: """ 创建链表的属性 """ def __init__(self, ...

  3. JavaScript学习笔记 - 进阶篇(3)- 流程控制语句

    if语句 if语句是基于条件成立才执行相应代码时使用的语句. 语法: if(条件) { 条件成立时执行代码} 注意:if小写,大写字母(IF)会出错! 假设你应聘web前端技术开发岗位,如果你会HTM ...

  4. 使用meshgrid生成热图和单位向量场

    需求: 生成 中heatmap unit vector field 目前的数据: 图像的shape, 关键点的x,y , heatmap的半径R 思路: 如果使用for循环来判断距离,会很慢,如果预先 ...

  5. 树莓派切换到root用户

    1:如何修改pi账号密码 passwd pi 2:开启root账户 树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的 debian里root账户默认没有密码,但账 ...

  6. Qt 使用QGraphicsPixmapItem、QGraphicsScene、QMatrix 的QGraphicsView的显示,缩放

    .h QGraphicsScene *scene; QGraphicsPixmapItem *theFrame; QMatrix matrix; .cpp MainWindow::MainWindow ...

  7. php面向对象理解(一)

    常用的继承过程,以及对public.private.protected修饰符的理解: /*****************************父类************************* ...

  8. skip-list(跳表)原理及C++代码实现

    跳表是一个很有意思的数据结构,它实现简单,但是性能又可以和平衡二叉搜索树差不多. 据MIT公开课上教授的讲解,它的想法和纽约地铁有异曲同工之妙,简而言之就是不断地增加“快线”,从而降低时间复杂度. 当 ...

  9. left join on注意点

    右侧表的条件参数需要放在on后面 where 后面进放置左表的条件参数 比如消息表和用户消息表 消息表里存在类型为<系统消息>的消息是发送给全部用户 我们发送给系统消息时,不直接插入用户消 ...

  10. 通过 WMI 返回硬盘序列号的一点小问题

    通过 SELECT * FROM Win32_PhysicalMedia 可以返回硬盘序列号,但是在实际使用中某些情况下(原因未知)返回的 SerialNumber 是实际硬盘序列号的字符串按字符Ur ...