最近使用Zookeeper作为配置管理服务,因为配置数据有很高的安全要求,需要有权限控制,也就是需要登录才能看到Zookeeper上面的数据。
Zookeeper对权限的控制是节点级别的,而且不继承,即对父节点设置权限,其子节点不继承父节点的权限。
Zookeeper提供了几种认证方式
* world:有个单一的ID,anyone,表示任何人。
* auth:不使用任何ID,表示任何通过验证的用户(是通过ZK验证的用户?连接到此ZK服务器的用户?)。
* digest:使用 用户名:密码 字符串生成MD5哈希值作为ACL标识符ID。权限的验证通过直接发送用户名密码字符串的方式完成,
* ip:使用客户端主机ip地址作为一个ACL标识符,ACL表达式是以 addr/bits 这种格式表示的。ZK服务器会将addr的前bits位与客户端地址的前bits位来进行匹配验证权限。
digest方式比较适合我们的业务,因此采用此种方式对Zookeeper进行权限控制。
创建节点数据时:
List<ACL> acls = new ArrayList<ACL>(2);
Id id1 = new Id("digest", DigestAuthenticationProvider.generateDigest("admin:admin123"));
ACL acl1 = new ACL(ZooDefs.Perms.ALL, id1);
Id id2 = new Id("digest", DigestAuthenticationProvider.generateDigest("guest:guest123"));
ACL acl2 = new ACL(ZooDefs.Perms.READ, id2);
acls.add(acl1);
acls.add(acl2);
ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", 10000, new DefaultWatcher());
zk.create("/test", new byte[0], acls, CreateMode.PERSISTENT);
登录Zookeeper读取节点数据时:
ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", 10000, new DefaultWatcher());
zk.addAuthInfo("digest", "guest:guest123".getBytes());
byte[] value = zk.getData("/test", null, new Stat());
这样对Zookeeper上的节点数据设置多个用户,用于不同的权限操作。
分享到:
相关推荐
ZooKeeper 增加权限登录验证 ZooKeeper 是一个广泛使用的分布式协调服务,它提供了许多有用的功能,如配置管理、名字服务、分布式锁等。然而,在 ZooKeeper 中存在一些安全漏洞,例如未经授权的访问、数据泄露等。...
Zookeeper 权限配置 ACL Zookeeper 是一个高可用的分布式协调服务,可以为分布式应用程序提供配置维护、命名、提供分布式同步和GROUP服务。为了确保 Zookeeper 的安全性和可靠性,需要配置相应的 ACL 权限。本文将...
在实际项目中,这个文件可能包含了Zookeeper权限控制的具体实现,包括配置文件、Java代码等。 总的来说,整合Spring Boot和Zookeeper的权限控制,需要理解Zookeeper的认证机制,通过Spring的`CuratorFramework`来...
一款好用的zookeeper配置内容导入导出工具,适用平台是windows,但是也可以修改run.bat为shell脚本,适合linux。 带图形界面,修改config中的config.xml,添加需要管理的zookeeper地址信息,同时可以定义两个用户...
配置Zookeeper权限控制通常需要修改`zoo.cfg`配置文件,开启`authProvider`支持,并在`zookeeper_server.properties`中配置认证策略。例如,添加以下行来启用SASL认证: ``` authProvider.1=org.apache.zookeeper....
### Zookeeper配置详解 Zookeeper是一款分布式的、开放源码的协调服务,它为分布式应用提供一致性服务。在分布式环境中,Zookeeper可以帮助解决各种复杂的分布式问题,如:配置管理、命名服务、集群管理等。本篇...
【Hadoop Hbase Zookeeper集群配置】涉及到在Linux环境下搭建分布式计算和数据存储系统的流程,主要涵盖以下几个关键知识点: 1. **集群环境设置**:一个基本的Hadoop Hbase Zookeeper集群至少需要3个节点,包括1个...
ZooKeeper 的访问权限配置是通过 ACL(Access Control List)来实现的。ACL 是一种访问控制机制,通过设置不同的权限来控制用户对 ZooKeeper 节点的访问。 ZooKeeper 中的 ACL 由三部分组成:权限、用户和节点。 1...
考虑到生产环境的安全需求,Zookeeper还支持SSL加密和权限控制,以保护数据安全。 总之,搭建和配置Zookeeper集群是一项关键任务,它为分布式系统的协调提供了可靠的基础。通过理解上述步骤,你可以有效地管理和...
ZooKeeper支持ACL(Access Control List)机制,可以对znode设置访问权限,确保只有授权的客户端才能读写配置。 9. **容错与高可用** ZooKeeper集群由多个服务器组成,当一部分服务器失效时,集群仍能继续提供...
进入 `/etc/rc.d/init.d` 目录,创建一个名为 `zookeeper` 的启动脚本文件,写入启动、停止等操作的命令,并赋予执行权限。脚本中包含了指定JAVA_HOME、ZOO_LOG_DIR以及ZOOKEEPER_HOME的环境变量,这些变量确保了...
Java 连接 ZooKeeper 并增加 ACL 权限 ZooKeeper 是一个开源的分布式应用程序协调服务,由 Apache 软件基金会提供。它提供了许多功能,如配置管理、名字服务、分布式同步、组服务等。 Java 是一种广泛使用的编程...
2. **节点管理**: 支持创建、删除、修改Zookeeper中的节点,以及设置节点的权限和Watchers。 3. **数据查看与编辑**: 可以查看任意节点的数据内容,同时支持直接编辑和提交更改,方便调试和配置。 4. **会话与...
- **安装和配置**:下载并安装相应的Zookeeper可视化工具,根据工具文档配置连接到Zookeeper集群的参数,如服务器地址、端口等。 - **连接Zookeeper**:启动工具,输入配置好的连接信息,连接到Zookeeper服务器。 - ...
6.1 ACL:ZooKeeper提供了基于角色的权限控制,通过设置不同的权限策略保障数据安全。 6.2 SASL认证:ZooKeeper支持SASL(Simple Authentication and Security Layer),可实现客户端和服务端的身份验证。 七、...
Apache ZooKeeper 是一个高度可靠的分布式协调系统,广泛应用于云原生环境中的服务发现、配置管理、命名服务等场景。Zookeeper-3.8.0 是该系统的最新版本,提供了更稳定和高效的服务。 Zookeeper 的核心概念包括...
- ACL(Access Control List)机制可以控制对ZNode的访问权限,通过`zookeeper.acl`和`zookeeper.digest.loginmodule`进行配置。 6. **ZooKeeper的应用**: - 命名服务:ZooKeeper可以用来注册和查找服务,为...
同时,Zookeeper的版本管理机制和权限控制功能也大大提高了配置管理的安全性和灵活性。开发者通过创建密码、版本、组和参数,以及使用专门的工具类来获取配置值,最终能够实现对配置文件的有效管理。而ConfigWeb界面...
4. **创建数据目录**:根据`zoo.cfg`中的`dataDir`配置,创建对应的目录并给予正确权限,如`mkdir -p /var/zookeeper && chown zookeeper:zookeeper /var/zookeeper`。 5. **启动Zookeeper**:返回到Zookeeper的bin...