根据zookeeper文档,可以创建一种方法来访问Zookeeper集合作为"超级"用户.在配置和连接方法方面,这样做的方向有点模糊.它巧妙地暗示这只能通过Java连接/ API完成.
如何通过自己的CLI工具将Zookeeper集合作为"超级"用户连接?
这个提示完全奏效了!非常感谢,Etienne!我还能尝试skipACL=yes另一种方法,这是绕过安全性的另一种方法,但这种方法在一天中间使用时非常危险.这是我的详细信息:
skipACL=true,skipACL=yes即使在愚蠢的ZK文档页面中没有提到布尔值的特定措辞.那些文档不只是"有点模糊"; 我会称他们在某些地方很弱.setAcl你没有权限的节点上做一个问题来解决这个问题......但是如果你的集群在一天的中间是活的,那么所有正在发生的其他操作都完全忽略了ACL.这包括如果组件(如Hive)创建一个全新的ZK树空间块 - 父节点上的权限不会逐渐减少!那么在你关闭skipACL之后(即,恢复正常执行),你有ZK的随机部分具有错误的权限.该死的.因此,这种方法(superDigest)远远更安全,因为它允许您只在一个ZK CLI连接中成为超级用户,执行一个小操作,同时继续在所有其他实时发生的连接中强制执行正常的ZK安全规则在群集的其余部分.我希望这更容易做到,我希望有一种方法可以使用您已有的内置zkCli客户端进行修复,而不是下载单独的客户端.
另请注意,此特殊属性zookeeper.DigestAuthenticationProvider.superDigest仅可设置为Java System Property,即通过-D环境变量,如Etienne在此处演示的那样.即使你可以把skipACL成zoo.cfg,superDigest只有通过Java环境变量差强人意-不要问我为什么.在ZK文档页面上(非常清楚地)提到了这个细节.
再次感谢Etienne提供这些简短的说明,并感谢Shlomi Noach编写了一个完全没有依赖关系的Go-based程序,我可以在危机中下载和使用的预构建二进制文件.你们两个很慷慨,今天应该得到一颗金星.
小智 5
Zookeeper doc确实很模糊......
在这里我是如何做到的
cd your_zookeeper_home
java -cp "./zookeeper-3.4.6.jar:./lib/slf4j-api-1.6.1.jar" org.apache.zookeeper.server.auth.DigestAuthenticationProvider super:password
Run Code Online (Sandbox Code Playgroud)
插入您的密码而不是“密码”
你会得到这样的一行:
super:password->super:DyNYQEQvajljsxlhf5uS4PJ9R28=
Run Code Online (Sandbox Code Playgroud)
导出您的 var 或编辑 zkServer.sh :
SERVER_JVMFLAGS=-Dzookeeper.DigestAuthenticationProvider.superDigest=super:DyNYQEQvajljsxlhf5uS4PJ9R28=
Run Code Online (Sandbox Code Playgroud)
重启zookeeper,你就可以连接super了(我用这个客户端https://github.com/outbrain/zookeepercli)
./zookeepercli --servers your_server --auth_usr "super" --auth_pwd "password" -c ls
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9048 次 |
| 最近记录: |