命令名词解释
- acl
Access Control List 访问控制列表- auth
Authentication 身份认证,在这里就解释为身份认证比较合理
并不是Authorization(授权),至于为什么下面会说。- digst
Digest 摘要认证
创建节点
- 创建一个普通节点,节点名为nodeName
create /nodeName '我是内容'
- 获取节点ACL
getAcl /nodeName
/*
返回内容:(表明无访问权限限制,任何人都有cdrwa权限)
'world,'anyone
: cdrwa
很好理解,全世界的任何人,都有cdrwa权限,因为我们并没有针对这个节点设置ACL
create
delete
retrieve/read
write
admin
*/
设置ACL
创建Digest
addauth digest <user>:<password>
例子:
addauth digest test:test123
设置ACL策略
- 设置节点ACL:
这里有2种方式:
- setAcl <path> auth:<user>:<acl>
- setAcl <path> digst:<user>:<密文password>:<acl>
密文password是由 <user>:<password> 字符串的二进制数据进行sha1加密,然后转为base64编码。
setAcl auth 例子
setAcl /nodeName auth:test:crdwa
setAcl digst 例子
setAcl /nodeName digst:test:4kLbCbLRytYsfNQkaDbMuExRDDs=:cdrwa
两者区别在于:
- auth:只是验证你是否有添加过的用户,它会将此节点设置为你之前添加过的所有用户都具有<acl>权限。
这个auth你可以理解为,我要设置acl访问策略为auth,但是我需要输入账号让Zookeeper知道,你可以理解为账号用来登录,并不是将访问权限设置成一个指定的用户。设置为auth策略后,所有存在的用户都对这个节点有<acl>权限。- digst:设置指定的一个摘要,比如上面的
setAcl /nodeName digst:test:4kLbCbLRytYsfNQkaDbMuExRDDs=:cdrwa
就是设置这个节点只能test用户访问。
密文生成
echo -n <user>:<password>| openssl dgst -binary -sha1| openssl base64
例子:
echo -n test:test123| openssl dgst -binary -sha1| openssl base64
返回信息:4kLbCbLRytYsfNQkaDbMuExRDDs=
除了使用openssl生成,在addauth digest <user>:<password>执行后,也会告诉你密文。