美文网首页ZooKeeper程序员
6. ZooKeeper访问控制列表

6. ZooKeeper访问控制列表

作者: 码匠安徒生 | 来源:发表于2017-11-15 19:32 被阅读362次

    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赋予所有人读取的能力

    相关文章

      网友评论

        本文标题:6. ZooKeeper访问控制列表

        本文链接:https://www.haomeiwen.com/subject/niphvxtx.html