如何在所有 Zookeeper 连接上强制使用 SASL

Mar*_*utz 5 ruby sasl apache-zookeeper

我有一个最近的 zookeeper 构建(版本 = 3.4.3-1240972,构建于 02/06/2012 10:48 GMT),并且无法强制在所有客户端连接上使用 SASL。

使用发行版的本地 conf/ 目录,我有以下配置(在 Ubuntu 12.04 上运行):

conf/zoo.cfg

tickTime=2001
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
Run Code Online (Sandbox Code Playgroud)

conf/jaas.conf

Server {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    user_super="1adminsecret";
};
Client {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    username="super"
    password="1adminsecret";
};
Run Code Online (Sandbox Code Playgroud)

配置文件/java.env

export JVMFLAGS="-Djava.security.auth.login.config=`pwd`/conf/jaas.conf"
Run Code Online (Sandbox Code Playgroud)

当我从 zkCli.sh 脚本连接时,它将正确进行身份验证,更改 jaas.conf 文件将导致它无法查询。这是预期的行为。

但是,当我使用 ruby​​ “zookeeper” gem 并运行(使用 irb)时:

tickTime=2001
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
Run Code Online (Sandbox Code Playgroud)

它正确返回结果。如果我需要 SASL 进行登录,那么 ruby​​ 客户端怎么会绕过安全性。我知道这不仅仅是读取与写入的问题,因为我也可以创建密钥。

sbr*_*ges 3

在conf/zoo.cfg中,添加以下行:

requireClientAuthScheme=sasl
Run Code Online (Sandbox Code Playgroud)

从此处的服务器配置部分,

requireClientAuthScheme=sasl 是可选的:如果将其设置为任何值,则仅允许未经身份验证的客户端进行 ping、创建会话、关闭会话或 sasl 身份验证。