6. ZooKeeper访问控制列表

ZooKeeper的数据模型提供了ACL机制来控制访问znode。 在创建znode时,ACL将确定你可以在znode上执行的各种操作的权限。 ZooKeeper ACL模型与Unix / Linux文件许可类似,允许或阻止通过设置/取消权限位在znode上执行操作。 但是,ZooKeeper节点并不具有Unix/Linux文件系统中所有权的概念。 ACL是基于客户端和ZooKeeper服务的认证机制来确定的。

ZooKeeper基于ACL提供了以下内置认证机制:

  • World:这代表任何人都可以连接到ZooKeeper服务
  • Auth:这表示任何经过身份验证的用户,但不使用任何ID
  • Digest:这代表了用户名和密码的认证方式
  • IP address:这表示使用客户端的IP地址进行身份验证

除了前面列出的认证方案外,ZooKeeper还支持可插入的认证机制,如果需要,可以集成第三方认证方案。 ZooKeeper中的任何认证方案都包含以下两个主要认证操作:

  • 首先,ZooKeeper中的认证框架对客户端进行认证。 客户端验证发生在客户端通过客户端信息验证连接到ZooKeeper服务时。

  • 其次,认证框架查找ACL中与客户端对应的表项。 ACL条目是由<IDs,Permissions>组成的对,其中ID是标识客户端的字符串。

有关znode ACL的重要的一点是,与特定znode关联的ACL不会传播给其子节点。 客户使用ZooKeeper进行认证是可选的; 如果与znode相关的ACL需要客户端进行身份验证,则必须使用前面提到的身份验证机制进行身份验证。 ACL是身份和一组权限组合的认证机制。

ZooKeeper的ACL支持以下权限:

操作 ACL 权限
CREATE 创建一个子节点
READ 获取子节点列表和与znode相关的数据
WRITE 将数据设置(写入)到znode
DELETE 删除一个孩子子节点
ADMIN 设置ACL(权限)

任何连接到ZooKeeper服务的客户端都有权检查是否存在znode。 这个exist操作是不需要权限的,它允许检索一个znode的stat结构。

ZooKeeper中有许多预定义的ACL。 这些由ZooKeeper ACL定义的ID如下表所示:

ACL 权限
ANYONE_ID_UNSAFE 这个ID代表任何人
AUTH_IDS 这是用来设置ACL,用被认证的客户端的ID代替
OPEN_ACL_UNSAFE 这表示完全打开的ACL,并授予除ADMIN权限之外的所有权限
CREATOR_ALL_ACL 该ACL将所有权限授予znode的创建者
READ_ACL_UNSAFE 这个ACL赋予所有人读取的能力
posted @   林本托  阅读(1126)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示