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相关设置操作

//**

使用场景

  1. 开发和测试环境分离,开发者无权操作测试库的节点,只能看.
    2. 生产环境上控制指定ip的服务可以访问相关节点,防止混乱

    ACL(Access Control List)访问控制列表

    包括三个方面:
  • 权限模式(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相关设置操作