我有一个最近的zookeeper版本(版本=3.4.3-1240972,构建于02/06/2012 10:48 GMT),在强制SASL用于所有客户端连接时遇到了问题。
使用发行版的本地conf/目录,我有以下配置(运行在Ubuntu 12.04上):
配置文件/zoo.cfg
tickTime=2001
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
配置文件/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";
};
配置文件/java.环境
export JVMFLAGS="-Djava.security.auth.login.config=`pwd`/conf/jaas.conf"
当我从www.example.com脚本连接时zkCli.sh,它将正确地进行身份验证,而更改jaas.conf文件将导致它无法查询。这是预期的行为。
然而,当我使用Ruby“zookeeper”宝石,并运行(与irb):
require 'zookeeper'
z = Zookeeper.new("localhost:2181")
z.get_children(:path => "/")
z.create(path:'/asdf', data:'test')
它会正确地返回结果。如果我需要SASL来登录,为什么ruby客户端会绕过安全性呢?我知道这不仅仅是读与写的问题,因为我也可以创建键。
3条答案
按热度按时间wljmcqd81#
在conf/zoo.cfg中,添加以下行:
在“服务器配置”部分here中,
requireClientAuthScheme=sasl是可选的:如果将其设置为任何值,则只允许未验证的客户端ping、创建会话、关闭会话或进行sasl-authenticate。
jljoyd4f2#
几年后我也遇到过类似的问题,哈哈。我希望Zookeeper 3.5增加了一个单独的,不那么棘手的方法来保护Zookeeper服务器。看看我的问题:保护Zookeeper
omhiaaxx3#
我也遇到过类似的问题,通过在env文件中添加JVM参数解决了这个问题。(ZooKeeper 3.6.3)