zookeeper以树状结构保存,znode是zookeeper的基本单元。
zookeeper控制权限的手段是ACL(access control list),访问控制列表。
权限有五种:
cdrwa.
Create:允许对子节点Create操作
Delete:允许对子节点Delete操作
Read:允许对本节点GetChildren和GetData操作,有对本节点进行删除操作的权限。
Write:允许对本节点SetData操作
Admin:允许对本节点setAcl操作
添加权限的方式:
world:默认方式,相当于全世界都能访问
auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
ip:使用Ip地址认证
sasl: sasl认证方式
方式一:(推荐)
1)增加一个认证用户
addauth digest 用户名:密码明文
eg. addauth digest user1:password1
2)设置权限
setAcl /path auth:用户名:密码明文:权限
eg. setAcl /test auth:user1:password1:cdrwa
3)查看Acl设置
getAcl /path
方式二:
setAcl /path digest:用户名:密码密文:权限
注:这里的加密规则是SHA1加密,然后base64编码。
方式三:
(1)设置IP白名单,格式:setAcl 路径 ip:xxx.xxx.xxx.xx1:cdrwa,ip:xxx.xxx.xxx.xx2:cdrwa
例如:setAcl /zkaa ip:127.0.0.1:cdrwa,ip:10.111.134.6:cdrwa
重点说明:在设置IP白名单时,将本机ip 127.0.0.1也加上,让本机也可以访问及修改,否则到时本机服务器都无法进行查看及修改,到时会很麻烦
更改权限重新setAcl。
sasl认证:
setAcl将world等表示认证方式的字段改成sasl即可。
在zookeeper-client -server host:2181之前,有两个重要文件,一个是kafka(只是举例,名称根据实际需要)的kafka.keytab,另一个是kafka(只是举例,具体根据实际需要)的jaas.conf需要配置。配置完成,先将配置的文件加到环境变量,如:export CLIENT_JVMFLAGS="-Djava.security.auth.login.config=jaas.conf"。
随后再登录,再根据相应的sasl权限进行操作。