Zookeeper的ACL权限控制

1.Zookeeper的节点有5种操作权限

CREATE、READ、WRITE、DELETE、ADMIN
也就是 增、查、改、删、管理权限,
这5种权限简写为crwda(即:每个单词的首字符缩写)
注意这5种权限中,
delete是指对子节点的删除权限,
其它4种权限指对自身节点的操作权限。

2.身份的认证有4种方式

world:默认方式,相当于全世界都能访问
auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
ip:使用IP地址认证

3.设置访问控制

3.1.方法一(推荐)

3.1.1.增加一个认证用户

addauth digest 用户名:密码明文
eg. addauth digest user1:password1

3.1.2.设置权限

setAcl /path auth:用户名:密码明文:权限
eg. setAcl /test auth:user1:password1:cdrwa

3.1.3.查看Acl设置

getAcl /path

3.2.方法二

setAcl /path digest:用户名:密码密文:权限
注:这里的加密规则是SHA1加密,然后base64编码。

4.使用auth进行身份认证的场景

在zookeeper上面,使用yuwen:zdh1234用户,
创建/test目录,进行增删改查。

4.1.创建目录

使用zkCli.sh客户端登陆,创建目录:
create /test

4.2.查看目录权限

getAcl /test

'world,'anyone
: cdrwa

可以看到任何人对/test目录都有增、删、改、查、管理权限。

4.3.增加一个认证用户

增加的用户名和密码可以自定义:
addauth digest yuwen:zdh1234

4.4.使用上面的认证用户设置目录的权限

setAcl /test auth:yuwen:zdh1234:cdrwa

4.5.查看目录权限

getAcl /test

'digest,'yuwen:zCY6ODYZ1NC2Ci6hz4bXA3AESFE=
: cdrwa

可以看到yuwen对/test目录有增、删、改、查、管理权限,
而不是原来的anyone任何人了。
ls /test
可以看到命令执行成功。

4.6.重新登陆查看目录

新开一个zkCli.sh客户端重新登陆,
查看/test目录:
ls /test

KeeperErrorCode = NoAuth for /test

可以看到没有对/test目录的查看权限。

4.7.使用认证用户查看

增加一个认证用户:
addauth digest yuwen:zdh1234
查看/test目录:
ls /test
可以看到命令执行成功。

4.8.一点说明

上面第4.3步中如果不增加一个认证用户,
则在设置权限的时候,直接使用如下命令:
setAcl /path digest:用户名:密码密文:权限
setAcl /test digest:yuwen:zCY6ODYZ1NC2Ci6hz4bXA3AESFE=:cdrwa
但是ls /test的时候任然会没有执行权限。

5.使用sasl进行身份认证的场景

在zookeeper上面,使用yuwen用户,
创建/testB目录,进行增删改查。

使用zkCli.sh客户端登陆,
创建/testB目录,同时设置sasl的ACL,
赋予yuwen对/testB目录增、删、改、查、管理权限:
create /testB sasl:yuwen:zdh1234:cdrwa
create -s /testB data sasl:yuwen:zdh1234:cdrwa

6.使用IP地址进行身份认证的场景

create /testC ip:10.43.159.12:cdrwa

你可能感兴趣的:(Zookeeper的ACL权限控制)