【问题标题】:Securing zookeeper, where to start?保护动物园管理员,从哪里开始?
【发布时间】:2018-10-05 20:37:18
【问题描述】:

我在试图弄清楚我的选择是什么时感到迷茫。 Apache 的程序员指南和管理员指南没有详细说明任何实质性内容。我的 O'Reilly Zookeeper 书几乎没有谈到安全……我错过了什么吗?我希望通过 google 找到有关验证客户端连接、授权操作以及加密动物园管理员和客户端之间发送的消息的教程。

【问题讨论】:

    标签: security apache-zookeeper


    【解决方案1】:

    我遇到了很多麻烦,但我想通了,底部的链接对我有很大帮助。

    这段代码(使用 Curator)很难弄清楚:

    List<ACL> myAclList = new ArrayList<ACL>();
    aclList.add(new ACL(ZooDefs.Perms.ALL, ZooDefs.Ids.AUTH_IDS));
    client.create(withACL(myAclList)).forPath(myPath);
    

    如果我正确设置了 zookeeper 配置,那么它将强制只允许 AUTH_IDS 访问我的 ZNode。

    Ofiicial documentationMy mailing list Q1My mailing list Q2JIRA that I found useful, but some items are out of date

    【讨论】:

    • 你在 zk 中启用身份验证了吗?你能告诉我更多细节吗?
    【解决方案2】:

    自 zookeeper 版本 3.5.4-beta 起,您可以启用使用客户端证书来保护与远程 zookeeper 服务器的通信:

    客户

    ZooKeeper 客户端可以通过设置 Java 系统属性来使用 Netty:

    zookeeper.clientCnxnSocket="org.apache.zookeeper.ClientCnxnSocketNetty"
    

    为了在客户端进行安全通信,请设置此 Java 系统属性:

    zookeeper.client.secure=true
    

    请注意,通过设置“secure”属性,客户端可以而且应该只连接到服务器的“secureClientPort”,稍后将对此进行描述。

    然后通过设置以下 Java 系统属性来设置 keystore 和 truststore 环境:

    zookeeper.ssl.keyStore.location="/path/to/your/keystore"
    zookeeper.ssl.keyStore.password="keystore_password"
    zookeeper.ssl.trustStore.location="/path/to/your/truststore"
    zookeeper.ssl.trustStore.password="truststore_password"
    

    服务器

    ZooKeeper 服务器可以通过设置这个 Java 系统属性来使用 Netty:

    zookeeper.serverCnxnFactory="org.apache.zookeeper.server.NettyServerCnxnFactory"
    

    ZooKeeper 服务器还需要提供一个监听端口来接受安全的客户端连接。该端口与已知的“clientPort”不同,并与之并行运行。应该在“zoo.cfg”中添加:

    secureClientPort=2281
    

    所有安全客户端(上面提到的)都应该连接到这个端口。

    然后像客户端一样设置密钥库和信任库环境。

    更多信息在这里: https://cwiki.apache.org/confluence/display/ZOOKEEPER/ZooKeeper+SSL+User+Guide

    【讨论】:

    • 它在 Windows 服务器上工作吗?我按照你的描述做了,我收到错误:2019-12-26 13:57:16,381 [myid:] - 错误 [main:ZooKeeperServerMain@66] - 无效参数,异常退出 java.lang.NumberFormatException:对于输入字符串:“ E:\apache-zookeeper-3.5.6-bin\bin\..\conf\zoo.cfg" 在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.lang.Integer.parseInt(Integer. java:580)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多