ZooKeeper使用ACL控制节点的访问,ACL的实现类似于UNIX文件的访问许可:使用位来控制节点访问的作用域和访问许可。但不同于UNIX文件系统,对于标准的作用域,包括user(文件的拥有者),group和world(其它),ZooKeeper节点没有限制。Zookeeper没有znode的拥有者的概念,取而代之,ACL指定一套id和对应这些id的许可。
注意一个ACL仅和一个特定的znode有关,并且不传递到孩子节点,例如,如果/app是仅被ip:172.16.16.1可读,/app/status是world可读,那么任何人都能读/app/status;ACL不是递归的。
ZooKeeper支持可插拔式的认证方案。id使用scheme:expression的形式,scheme是id对应的认证方案,expression的有效集合被scheme定义,例如,ip:172.16.16.1是一个id,scheme是ip,expression是主机地址172.16.16.1;digest:bob:password也是一个id,scheme是digest,expression是用户名为bob的用户。
当一个客户端连接到ZooKeeper进行认证时,ZooKeeper获取与该客户端有关的所有id。当客户端尝试连接到一个节点时,ZooKeeper使用节点的ACL对这些id进行检查。ACL的形式为(scheme:expression, perms),expression的格式由scheme决定,例如,(IP:19.22.0.0/16,READ)表示对所有起始IP为19.22的客户端具有读权限。
1、权限模式(Scheme)
IP:从IP地址粒度进行权限控制
Digest:最常用,用类似于 username:password 的权限标识来进行权限配置,便于区分不同应用来进行权限控制
World:最开放的权限控制方式,是一种特殊的digest模式,只有一个权限标识“world:anyone”
Super:超级用户
2、授权对象
授权对象指的是权限赋予的用户或一个指定实体,例如IP地址或是机器灯。
3、权限 Permission
- CREATE:数据节点创建权限,允许授权对象在该Znode下创建子节点
- DELETE:子节点删除权限,允许授权对象删除该数据节点的子节点
- READ:数据节点的读取权限,允许授权对象访问该数据节点并读取其数据内容或子节点列表等
- WRITE:数据节点更新权限,允许授权对象对该数据节点进行更新操作
- ADMIN:数据节点管理权限,允许授权对象对该数据节点进行ACL相关设置操作
//**
使用场景
- 权限模式(Scheme)
- IP:从IP地址粒度进行权限控制
- Digest:最常用,用类似于 username:password 的权限标识来进行权限配置,便于区分不同应用来进行权限控制
- World:最开放的权限控制方式,是一种特殊的digest模式,只有一个权限标识“world:anyone”
- Super:超级用户
- 授权对象授权对象指的是权限赋予的用户或一个指定实体,例如IP地址或是机器灯。
- 权限 Permission
- CREATE:数据节点创建权限,允许授权对象在该Znode下创建子节点
- DELETE:子节点删除权限,允许授权对象删除该数据节点的子节点
- READ:数据节点的读取权限,允许授权对象访问该数据节点并读取其数据内容或子节点列表等
- WRITE:数据节点更新权限,允许授权对象对该数据节点进行更新操作
- ADMIN:数据节点管理权限,允许授权对象对该数据节点进行ACL相关设置操作
ACL权限控制机制
UGO(User/Group/Others)
目前在Linux/Unix文件系统中使用,也是使用最广泛的权限控制方式。是一种粗粒度的文件系统权限控制模式。
ACL(Access Control List)访问控制列表
包括三个方面:
权限模式(Scheme)
IP:从IP地址粒度进行权限控制
Digest:最常用,用类似于 username:password 的权限标识来进行权限配置,便于区分不同应用来进行权限控制
World:最开放的权限控制方式,是一种特殊的digest模式,只有一个权限标识“world:anyone”
Super:超级用户
授权对象
授权对象指的是权限赋予的用户或一个指定实体,例如IP地址或是机器灯。
权限 Permission
CREATE:数据节点创建权限,允许授权对象在该Znode下创建子节点
DELETE:子节点删除权限,允许授权对象删除该数据节点的子节点
READ:数据节点的读取权限,允许授权对象访问该数据节点并读取其数据内容或子节点列表等
WRITE:数据节点更新权限,允许授权对象对该数据节点进行更新操作
ADMIN:数据节点管理权限,允许授权对象对该数据节点进行ACL相关设置操作