`
zhaoshijie
  • 浏览: 2262647 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Zookeeper 和 SASL

 
阅读更多
关键字:Zookeeper 和 SASL
介绍
这是一个描述ZooKeeper和SASL(Simple Authentication and Security Layer)整合建议的设计文档。

JIRA 和 源代码
JIRA问题ZOOKEEPER-938,来自JIRA的可用补丁。
请注意:这个JIRA文章只描述了客户端-服务器的相互认证。服务器-服务器的相互认证存在单独的JIRA:ZOOKEEPER-1045。

Zookeeper ACLs 和 SASL
这个功能是在Zookeeper已有的认证和授权设计上的最直接的实现。简要的回顾,Zookeeper支持的可插拔的认证方案(authentication scheme)。一个Node有任意数量的对。对的左边成员为认证方案(authentication scheme)指定认证类型和认证的主体。对的右边成员是表示授权给认证主体的权限。例如,在指定Node的一个ACL对可能是
1

<ip:19.22.0.0/16 , READ>

左边的ip:19.22.0.0/16,意思是 使用互联网地址认证,ipv4地址以”19.22″开头的客户端,拥有右边指定任意权限。右边的READ表示在指定Node上用户”读”的权限。
SASL认证方案标示名是”sasl”,因此如果你使用Kerberos协议,你可以如下设置Node:
1
2

<sasl:myclient@EXAMPLE.COM<script cf-hash="f9e31" type="text/javascript">
/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */</script> , READ>

意思是 Kerberos协议主体是 myclient@EXAMPLE.COM 的客户端 拥有指定Node的读权限。

Zookeeper 命令的差异

1.create
在非SASL认证的Zookeeper,当你创建Node时可能添加认证条件,例如:使用org.apache.zookeeper.server.auth.DigestAuthenticationProvider,你可以:
password
1
2
3

# create a digest form of the password "password":
$ java -cp build/classes:build/lib/log4j-1.2.15.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider user:password
user:password->user:tpUq/4Pn5A64fVZyQ0gOJ8ZWqkY=

之后再连接Zookeeper,你可以按如下代码使用 密码”password” 将所有权限赋给 用户”user” :
create
1

create /mynode content digest:user:tpUq/4Pn5A64fVZyQ0gOJ8ZWqkY=:cdrwa

2.addauth
SASL的认证方案不同于其他的方案,在命令”addauth “中,如果scheme是”sasl”,命令无效。这是因为SASL认证在建立后会立即启用令牌交换,而不是在链接后的任意时间执行addauth。

3.addAcl
因为在create时,不会包含认证信息。因此使用DigestAuthenticationProvider时你需要:
addAcl
1

addAcl /mynode digest:user:tpUq/4Pn5A64fVZyQ0gOJ8ZWqkY=:cdrwa

在使用SaslAuthenticationProvider,替换为:
addAcl
1
2

addAcl /mynode sasl:user@EXAMPLE.COM<script cf-hash="f9e31" type="text/javascript">
/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */</script>:cdrwa

SASL 和 现有的authProviders
你可能会继续使用 现有的ZooKeeper authentication providers,例如:DigestAuthenticationProvider 配合着SaslAuthenticationProvider。如果你愿意,现有的单元测试的authentication providers使用这些 authentication providers 依然可以正常工作。

org.apache.zookeeper.LoginThread
LoginThread 是一个新类,会启动一下新线程,用于定期刷新zookeeper的server和client 上的javax.security.auth.Subject 证书。如果zookeeper 配置使用 Kerberos (下面的 “服务器配置” ,会教怎么配置),client和server会缓存缓存秘钥或证书。LoginThread 将会刷新 Subject 的证书。

Zookeeper Client 的改进
org.apache.zookeeper.ZooKeeper
如果定义了系统环境变量java.security.auth.login.config,ZooKeeper的构造器会初始化成员变量 org.apache.zookeeper.LoginThread loginThread:
ZooKeeper.java
1
2
3
4
5
6
7
8
9
10

LoginThread loginThread = null;                                                                                                                                        
                                                                                                                                                                         
if (System.getProperty("java.security.auth.login.config") != null) {                                                                                                   
    // zookeeper.client.ticket.renewal defaults to 19 hours (about 80% of 24 hours, which is a typical ticket expiry interval).                                        
    loginThread = new LoginThread("Client",new ClientCallbackHandler(null),Integer.getInteger("zookeeper.client.ticket.renewal",19*60*60*1000));                       
}                                                                                                                                                                      
cnxn = new ClientCnxn(connectStringParser.getChrootPath(),                                                                                                             
        hostProvider, sessionTimeout, this, watchManager,                                                                                                                                                                                                                                      
        getClientCnxnSocket(), canBeReadOnly, loginThread);
cnxn.start();  

正如上面展示的,loginThread之后传递到类ClientCnxn 的构造器,下一小节中会继续讨论。

未完待续

原英文页:https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zookeeper+and+SASL
分享到:
评论

相关推荐

    bitnami版本的zookeeper和kafka的docker-compose配置

    通过指定镜像、端口映射、环境变量和依赖关系等配置,实现了Zookeeper和Kafka的快速部署和集成。同时,在定义了一个名为"mynetwork"的网络来连接这些服务,确保它们可以相互通信。整体而言,这个Docker Compose 文件...

    ZooKeeper3.4.9 windos和linux

    6.2 SASL认证:ZooKeeper支持SASL(Simple Authentication and Security Layer),可实现客户端和服务端的身份验证。 七、监控与维护 7.1 监控工具:使用JMX(Java Management Extensions)监控ZooKeeper的运行...

    apache-zookeeper-3.8.4-bin.tar

    Zookeeper是Apache Hadoop项目的一部分,它在分布式环境中起到关键的角色,尤其是在大数据处理和分布式计算领域。 **Zookeeper的核心概念:** 1. **节点(Znode)**:Zookeeper中的数据存储单元,类似于文件系统的...

    zookeeper 服务监控和管理

    5.1 认证与授权:Zookeeper支持SASL和ACL(Access Control Lists)机制,确保只有授权的用户和应用才能访问服务。 5.2 加密通信:通过SSL/TLS实现客户端与服务器间的加密通信,保证数据传输的安全性。 总结,...

    ZooKeeper 客户端的使用(二).

    ZooKeeper 支持 SASL 认证和 ACL(Access Control Lists)权限控制,可以对不同用户或角色设置不同的访问权限,确保数据的安全。 8. **ZooKeeper 集群** 在实际应用中,ZooKeeper 通常运行在多个服务器组成的集群...

    zookeeper解压版安装包

    1. **安全性**:Zookeeper支持SASL和ACL,可以实现用户认证和访问控制,保护数据的安全。 2. **监控**:通过JMX接口,Zookeeper提供了丰富的监控指标,可以监控服务器状态、会话、操作等信息。 3. **日志与快照**...

    zookeeper相关安装包.rar

    - **SASL(Simple Authentication and Security Layer)**:ZooKeeper支持SASL进行认证,可以与其他系统(如Kafka)集成,提供更高级别的安全保护。 5. **应用案例**: - **Hadoop**:ZooKeeper在Hadoop中用于...

    zookeeper 3.8.4

    - **安全增强**:支持 SASL 认证和 ACL 策略,提升了系统的安全性。 - **监控与日志**:提供了更详细的监控指标和日志记录,便于诊断和调试。 - **API 更新**:优化了 Java 和 C API,增强了易用性和兼容性。 ###...

    最新版 apache-zookeeper-3.6.2-bin.tar.gz

    - ZooKeeper 支持 SASL 和 SSL 认证,提供用户身份验证和数据加密,保障集群安全。 - 在配置文件中启用认证功能并配置相应的权限策略,可以限制对 ZooKeeper 资源的访问。 8. **监控与日志**: - ZooKeeper 生成...

    linux-ZooKeeper管理工具

    5. 安全性:ZooKeeper支持SASL和SSL两种安全认证方式,可以为服务提供身份验证和数据加密,保障通信安全。 6. 性能调优:为了提升ZooKeeper的服务性能,可能需要调整缓存大小、心跳间隔、会话超时时间等参数。同时...

    apache-zookeeper-3.6.2-bin

    - ZooKeeper支持SASL(Simple Authentication and Security Layer)和SSL/TLS加密,以保护通信安全和数据隐私。 8. **监控与日志**: - ZooKeeper提供了丰富的监控指标,可以通过JMX进行监控。 - 日志文件位于`...

    zookeeper3.5.4安装包

    8. **安全性**:3.5.x版本中,ZooKeeper增强了安全性,可以配置SASL、SSL等安全认证方式,保护集群免受未授权访问。 9. **API使用**:ZooKeeper提供了Java和C语言的API,允许应用程序进行数据操作、监听数据变化等...

    zookeeper for windows

    - Zookeeper 支持 SASL 认证和 ACL(Access Control List),可以为不同的节点设置权限控制,确保数据安全。 8. **应用示例**: - 多个分布式项目依赖 Zookeeper,如 Hadoop、Kafka、HBase 等。了解 Zookeeper 的...

    zookeeper3.4.5.tgz的安装包

    10. **安全管理**:Zookeeper支持SASL和SSL安全认证,可以根据实际需求配置相关安全设置,增强服务的安全性。 了解了这些基本操作后,你可以进一步探索Zookeeper的高级特性,如选举算法、watch机制、ZNode的数据...

    zookeeper服务压缩包

    9. **安全性**:Zookeeper支持SASL(Simple Authentication and Security Layer)和ACL(Access Control List)机制,可以实现对不同用户和客户端的权限控制,保证服务的安全性。 10. **故障恢复**:Zookeeper具有...

    apache-zookeeper-3.5.5.tar.gz

    6. **安全性**:Zookeeper支持简单的认证和授权机制,如SASL(Simple Authentication and Security Layer)和ACL(Access Control Lists),以保护Zookeeper的数据和服务不被非法访问。 7. **监控与管理**:...

    Zookeeper权限控制代码

    Zookeeper权限控制是Apache ZooKeeper系统中的一个重要特性,它允许管理员和用户对Zookeeper的数据节点进行细粒度的访问控制,以确保数据的安全性。在Java开发中,理解和使用Zookeeper的权限控制对于构建分布式系统...

    zookeeper-3.4.9

    9. **安全性**:该版本加强了安全特性,支持SASL和SSL加密,确保了在分布式环境中的数据传输安全。 10. **监控与诊断**:Zookeeper提供了丰富的监控指标和日志,便于开发者进行问题排查和系统调优。同时,通过JMX...

    PyPI 官网下载 | pure-sasl-0.1.5.tar.gz

    标签中提到了"zookeeper 分布式 云原生 cloud native Python库",这意味着`pure-sasl`可能与Apache ZooKeeper相关,ZooKeeper是一个开源的分布式协调服务,广泛应用于分布式系统中,如数据存储、配置管理、命名服务...

    zookeeper-3.4.12.tar.gz.zip

    2. **安全性**:支持SASL和Kerberos认证,保证了数据访问的安全性。 总结,Apache Zookeeper 3.4.12版本以其强大的功能和稳定性在分布式领域扮演着重要角色。理解并掌握Zookeeper的工作原理和使用方法,对于构建高...

Global site tag (gtag.js) - Google Analytics