概述
Zookeeper提供了一套完善的ACL(Access Control List)权限控制机制来保障数据的安全。
Zookeeper的ACL权限控制和Unix/Linux操作系统中的ACL有一些区别,可以从三个方面来理解ACL机制,分别是:权限模式(Scheme)、授权对象(ID)和权限(Permission)、通常使用“scheme:id:permission”来标识一个有效的ACL信息。
权限模式:Scheme
权限模式用来确定权限验证过程中使用的检验策略。在Zookeeper中,开发人员使用最多的就是以下四种权限模式:
IP
IP模式通过IP地址粒度来进行权限控制,例如配置了“ip:192.168.0.110”,即表示权限控制都是针对这个IP地址的。同时,IP模式也支持按照网段的方式进行配置,例如“ip:192.168.0.1/24”表示针对192.168.0.*这个IP段进行权限控制。
Digest
Digest是最常用的权限控制模式,也更符合我们对于权限控制的认识,其以类似于“username:password”形式的权限标识来进行权限配置,便于区分不同应用来进行权限控制。当我们通过“username:password”形式配置了权限标识后,Zookeeper会对其先后进行两次编码处理,分别是SHA-1算法加密和BASE64编码,其具体实现由DigestAuthenticationProvider.generateDigest(String idPassword)函数进行封装。
World
World是一种最开放的权限控制模式,从其名字中也可以看出,事实上这种权限控制方式几乎没有任何作用,数据节点的访问权限对所有用户开放,即所有用户都可以在不进行任何权限校验的情况下操作ZooKeeper上的数据。另外,World模式也可以看作是一种特殊的Digest模式,它只有一个权限标识,即“world:anyone”。
Super
Super模式,顾名思义就是超级用户的意思,也是一种特殊的Digest模式。在Super模式下,超级用户可以对任意ZooKeeper上的数据节点进行任何操作。
授权对象:ID
授权对象指的是权限赋予的用户或一个指定实体,例如IP地址或是机器等。在不同的权限模式下,授权对象是不同的。
IP 通常是一个IP地址或是IP段,例如“192.168.0.110” 或 “192.168.0.1/24”
Digest 自定义,通常是“username:BASE64(SHA-1(password))”,例如 “foo:kWN6aNSbjcKWPqjiV7cg0N24raU=”
World 只有一个ID:"anyone"
Super 与Digest模式一致
权限: Permission
权限就是指那些通过权限检查后可以被允许执行的操作。在ZooKeeper中,所有对数据的操作权限分为以下五大类:
CREATE(C)
DELETE(D)
READ(R)
WRITE(W)
ADMIN(A)
设置ACL
1、通过zkCli脚本登录ZooKeeper服务器后,可以通过两种方式进行ACL的设置。一种是在数据节点创建的同时进行ACL权限的设置,命令格式如下:
create [-s] [-e] path data acl
清单:
create -e /zk-book init digest:foo:ayaR385TXr8czBg0+7glQfl3TvQ=:cdrwa
2、另一种方式则是使用setAcl命令单独对已经存在的数据节点进行ACL设置:
setAcl path acl
清单:
setAcl /zk-book digest:foo:ayaR385TXr8czBg0+7glQfl3TvQ=:cdrwa
注意:子目录不继承父目录acl权限。举例:新建zk-book下子目录/zk-book/test,该子目录/zk-book/test的权限默认为:'world':anyone:cdrwa,而不是默认继承父目录权限。
配置zkCli客户端权限
当设置一个目录权限后,zkCli在不配置权限下也无法访问该目录,可使用如下命令配置权限:
addauth digest foo:123456
最后
以上就是天真外套为你收集整理的zookeeper acl 权限配置的全部内容,希望文章能够帮你解决zookeeper acl 权限配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复