我已经用sasl scram security建立了一个kafka集群,它工作正常。
根据文档,我使用了 kafka-configs.sh
创建用户名和密码并授予该用户对主题的访问权限。
这也很有效。
然而 kafka-configs.sh
命令本身不需要任何类型的身份验证,因此我想到,任何人都可以运行该命令,在kafka中创建自己的用户,并授予自己的权限。
也许我需要在zookeeper上启用sasl安全?但我找不到任何关于如何做到这一点的一致或有效的文件。将属性添加到 zookeeper.config
就像 requireclientauthscheme=sasl
似乎什么都没做。或者至少它不会停止 kafka-configs.sh
在zookeeper中创建新用户而无需任何身份验证。
我是不是在走一条可行的路?或者我需要备份并做一些不同的事情?
作为参考,我使用的是kafka1.0.0和zookeper3.4.11。但如果其他版本的效果更好的话,我会灵活处理。
感谢您的帮助!:)
谢谢!
1条答案
按热度按时间63lcw9qa1#
我终于找到了解决办法。:)
基本上,你需要使用Zookeeper的
setAcl
锁定节点的命令/config/users
. 关于如何使用sasl对zookeeper acl进行身份验证的文档充其量也很差。正常的使用机制addauth
对sasl进行身份验证不起作用,因为sasl必须在启动时进行,而不是像zookeeper期望的那样晚些时候。的语法
setAcl
这很棘手,如果你搞错了,你可以永远把自己关在外面。所以要小心。但zookeeper确实有办法在启动时注入超级用户,让自己摆脱这种情况。所以为了你的
kafka-configs.sh
,必须指定-Djava.security.auth.login.config=[some file]
参数将客户端凭据传递给zookeeper。服务器凭据同样位于zookeeper服务器上的jaas文件中。如果有人需要我的解决方案,我可以提供更多的技术细节,但不知怎的,我怀疑我是少数几个试图用sasl\u scram来确保Kafka和Zookeeper安全的人之一
不过,我确实希望sasl\u scram能流行起来,因为kerberos是一种三头兽式的技术,除非我必须使用它,否则我宁愿不使用它p