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