原文链接:http://code.taobao.org/p/taokeeper/wiki/index
目前在公司内部使用ZooKeeper的地方越来越多,应用大多喜欢自己部署一套ZK集群来使用。考虑到ZK的高可用,并且一套ZK集群至少3台机器, 那么每个应用,尤其是一些非核心应用都自己去部署一套的话,对资源利用率很低。另外,随着ZK容灾的提出,单套ZK集群使用的机器量会更大,运维人员开始 对这个情况担忧,强烈希望能够合并ZK集群。
ZK集群合并使用本身并没有太大的难度,问题在于应用方是否愿意大家共用一套ZK集群,这其中一个显而易见的问题就是权限:如果我的数据被别人动了怎么办?
在公司不少牛人的帮助下,暂时得到两个权限方案,同时也希望大家提出自己的看法,共同进步。
方案一:采用ZooKeeper支持的digest方式,用户自己定义节点的权限
这种方案将zookeeper的acl和digest授权认证模式相结合。具体操作流程如下:
可以把这个访问授权过程看作是用户注册,系统给你一个密码,每次操作使用这个用户名(appName)和密码. 于是就可以对应有这样权限管理系统,专门是负责进行节点的创建申请:包含“申请私有节点”和“申请公有节点”。这样一来,节点的创建都是由这个权限管理系 统来负责了,每次申请完后,系统都会返回给你的一个key,格式通常是“{appName}:{password}”,以后你的任何操作都要在zk session 中携带上这个key,这样就能进行权限控制。当然,用户自己通过zk客户端进行path的创建也是可以的,只是要求他们要使用授权方式来进行zk节点的创建。整个权限控制流程的代码测试,如下图所示:源代码见附件。
注意:ZooKeeper原生的API是支持这种方式的,但是GitHub上的zkclient目前还不支持,我已经在它基础上添加了权限控制接口,测试通过。如果你正在使用这个客户端,那么不妨尝试一下。( https://github.com/nileader/zkclient)
方案二、对zookeeper的AuthenticationProvider进行扩展,和内部其它系统A打通,从系统A中获取一些信息来判断权限
这个方案大致是这样: 1.A系统上有一份IP和appName对应的数据本地。 2.将这份数据在ZK服务器上缓存一份,并定时进行缓存更新。 3.每次客户端对服务器发起请求的时候,获取客户端ip进行查询,判断是否有对应appName的权限。限制指定ip只能操作指定 /appName znode。 4.其它容灾措施。
个人比较两个方案 1.方案一较方案二,用户的掌控性大,无论线上,日常,测试都可以由应用开发人员自己决定开启/关闭权限。 (方案一的优势) 2.方案二较方案一,易用性强,用户的使用和无权限基本一致。 (方案二的优势) 3.方案一较方案二更为纯洁。因为我觉得zk本来就应该是一个底层组件,让他来依赖其它上层的另一个系统?权限的控制精度取决于系统A上信息的准确性。 (方案一的优势)
分享到:
相关推荐
在实际项目中,这个文件可能包含了Zookeeper权限控制的具体实现,包括配置文件、Java代码等。 总的来说,整合Spring Boot和Zookeeper的权限控制,需要理解Zookeeper的认证机制,通过Spring的`CuratorFramework`来...
Zookeeper权限控制是Apache ZooKeeper系统中的一个重要特性,它允许管理员和用户对Zookeeper的数据节点进行细粒度的访问控制,以确保数据的安全性。在Java开发中,理解和使用Zookeeper的权限控制对于构建分布式系统...
ZooKeeper权限控制样例程序,配合文档:http://blog.csdn.net/nileader/article/details/43014541
Zookeeper-ACL权限控制
Zookeeper 权限控制 Zookeeper 使用 ACL(Access Control List)来控制访问 Znode,ACL 的实现和 UNIX 的实现非常相似:它采用权限位来控制哪些操作被允许,哪些操作被禁止。但是和标准的 UNIX 权限不同的是,...
ACL 权限是指访问控制列表权限,它是 ZooKeeper 的一种安全机制,用于控制对 ZooKeeper 服务器的访问。 ACL 权限可以控制谁可以访问 ZooKeeper 服务器,谁可以执行哪些操作等。 增加 ACL 权限 增加 ACL 权限是指...
ZooKeeper 的 ACL 系统提供了一个灵活而强大的机制来控制对 ZNode 的访问。通过合理配置 ACL,可以确保分布式系统中的数据安全和完整性。本文详细介绍了 ZooKeeper 中的节点权限级别、如何设置和管理这些权限,并...
ACL 是一种访问控制机制,通过设置不同的权限来控制用户对 ZooKeeper 节点的访问。 ZooKeeper 中的 ACL 由三部分组成:权限、用户和节点。 1. 权限:包括 CREATE、DELETE、READ、WRITE、ADMIN 五种基本权限。 2. ...
ZooKeeper 的 ACL 系统提供了一个灵活而强大的机制来控制对 ZNode 的访问。通过合理配置 ACL,可以确保分布式系统中的数据安全和完整性。本文详细介绍了 ZooKeeper 中的节点权限级别、如何设置和管理这些权限,并...
- **权限管理**:显示并编辑节点的ACL(访问控制列表),控制对节点的访问权限。 - **集群监控**:显示服务器状态,包括连接状态、会话信息、内存和磁盘使用情况等。 - **事件日志**:记录客户端的操作日志,便于...
ZooKeeper是一种开源的分布式协调服务,它用于维护配置信息、命名、提供分布式同步和...目前,对于ZooKeeper的根节点"/"、与Dubbo相关的节点"/dubbo"和ZooKeeper自身的节点"/zookeeper"进行权限控制是非常常见的做法。
6.1 ACL:ZooKeeper提供了基于角色的权限控制,通过设置不同的权限策略保障数据安全。 6.2 SASL认证:ZooKeeper支持SASL(Simple Authentication and Security Layer),可实现客户端和服务端的身份验证。 七、...
4. **权限管理**:Zookeeper支持ACL(Access Control List)权限管理,ZkTools也提供了相应的操作接口,方便用户管理节点的访问权限。 5. **事务操作**:ZkTools支持执行多条操作指令作为一个事务,确保原子性和...
- **ACL(访问控制列表)**:Zookeeper提供了细粒度的权限控制,每个Znode都有自己的ACL,用于限制对Znode的访问。 - **Watcher(观察者)**:一种事件监听机制,可以注册在Znode上,当Znode发生改变时,Watcher会...
9. **安全性**:Zookeeper支持ACL(Access Control List)权限控制,通过设置权限规则,可以限制不同用户对节点的操作。此外,可以通过SSL/TLS加密通信,提升安全性。 10. **监控与调试**:使用JMX(Java ...
ACL由一个权限标识符(scheme)和一个凭证(auth)组成,常见的scheme有世界(world)、IP地址(ip)、用户名/密码(digest)等,通过设置不同的ACL,可以实现精细的权限控制。 6. **Curator应用**:Curator是...
1. 安全性:在使用图形化界面时,需注意权限控制,避免因误操作导致数据丢失或系统不稳定。 2. 性能影响:过多的图形化操作可能增加服务器的负担,因此在生产环境中应适度使用。 3. 版本兼容:确保使用的图形化工具...
3. **安全性提升**:增强了权限控制和认证机制,提供更安全的服务环境。 4. **兼容性**:3.4.6版本保持了与早期版本的兼容性,方便了升级和维护。 三、Zookeeper搭建与使用 1. **安装**:首先,下载Zookeeper ...
4. **权限管理**:检查ZNode的ACL(访问控制列表),添加、修改或删除权限设置。 5. **监控与告警**:实时监控ZooKeeper集群的健康状况,包括节点状态、网络延迟等,并在发现问题时发送告警。 6. **集群操作**:执行...
4. 安全性提升:加强了权限控制,支持更安全的认证和授权机制。 总结,Zookeeper 3.4.5是分布式协调服务的重要工具,它的强大功能和稳定性使其在各种分布式系统中得以广泛应用。理解并掌握Zookeeper的工作原理和...