文章目录
本文为 zookeeper客户端shell命令详解中的一部分,由于内容较多,网上一些文章对该部分讨论讲解比较模糊,尤其是auth与digest两种授权模式的介绍部分,所以在此处独立出来讲解。
1、预备知识
zookeeper通过ACL权限控制列表来控制其对znode节点的访问权限。ACL权限与Unix文件系统中的权限控制类似,使用权限位限制指定角色对znode节点的各种操作,本节来详细介绍zookeeper中ACL权限控制。
1.1 权限列表
zookeeper中对znode节点的操作权限主要有以下五种,我们可以通过其简写的任意组合来实现对znode节点的不同权限控制。
名称 | 简写 | 权限说明 |
---|---|---|
CREATE | c | 允许创建当前节点下的字节点 |
DELETE | d | 允许删除当前节点下的子节点,仅限下一级 |
READ | r | 允许读取节点数据以及显示子节点的列表 |
WRITE | w | 允许设置当前节点的数据 |
ADMIN | a | 管理员权限,允许设置或读取当前节点的权限列表 |
1.2 ACL权限特点
Zookeeper权限控制有以下几个特点:
- 1、zookeeper的权限是基于znode节点的,需要对每个节点设置权限。
- 2、znode节点支持同时设置多种权限方案和多个权限。当znode有多种权限的时候,只要有一个权限允许当前操作,即可执行当前操作,即多个权限之间为或的关系。
- 3、子节点不会继承父节点的权限,客户端没有权限访问当前节点,但是可以访问当前节点的子节点。
- 4、使用setAcl命令对节点进行权限设置会覆盖掉原来的权限。
1.3 权限相关命令
zookeeper中权限控制包括以下三个命令。下面我们详细对ACL进行操作的控制进行讲解。
addauth scheme auth // 添加认证用户
getAcl [-s] path // 获取指定节点的权限列表
setAcl [-s] [-v version] [-R] path acl // 对指定节点设置权限。
2、添加认证用户:addauth
添加认证用户命令:
# 通常情况下,schame固定为digest,auth为user:passwd。(目前只接触这种用法)
addauth scheme auth
添加认证用户实例:
# 添加第一个认证用户
addauth digest abc:123456
# 添加第二个认证用户,注意:第一个添加的认证用户依然有效。
addauth digest ab:123
# 添加第三个认证用户,注意,单个用户可以有不同的密码,此时三个认证的用户全部同时有效
addauth digest abc:abcdefg
注意问题:
- 1、认证用户添加完之后,认证将对该会话中添加认证之后的所有操作都有效,一旦会话结束,认证失效。
- 2、添加认证时不同认证用户可以有不同的密码,多个user:passwd都有效。
待确认问题:addauth处理schame为digest外,可以有其他模式吗?
3、 设置znode节点操作权限命令:SetAcl
设置znode节点操作权限命令:
setAcl [-v version] [-R] path acl // 对指定节点设置权限。