我正在尝试为没有ssl的Kafka集群启用SASL用户名和密码。我遵循了此Stackoverflow上的步骤:
Kafka SASL zookeeper authentication
SASL身份验证似乎适用于Kafka经纪人。消费者和生产者必须先进行身份验证,然后再撰写或阅读某个主题。到目前为止一切顺利。
问题在于在kafka上创建和删除主题。例如,当我尝试使用以下命令时:
~/kafka/bin/kafka-topics.sh --list --zookeeper 10.x.y.z:2181
我能够列出kafka集群中的所有主题,并且完全无需身份验证即可创建或删除任何主题。
我尝试按照此处的步骤操作:
Super User Authentication and Authorization
但似乎没有任何作用。
在此问题上的任何帮助都将受到感激。
感谢与问候, Firas Khasawneh
答案 0 :(得分:0)
您需要将zookeeper.set.acl = true添加到您的Kafka server.properties中,以便Kafka将在具有ACL设置的zookeeper中创建所有内容。对于已经存在的主题,将没有ACL,每个人都可以直接从Zookeeper中删除它们。
实际上是因为那一团糟,我不得不从Zookeeper和Kafka中删除所有内容,然后从头开始。
但是,一旦设置完成,您就可以打开zookeeper shell来验证ACL的设置是否正确:
KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/your/jaas.conf" bin/zookeeper-shell.sh XXXXX:2181
您可以从外壳程序中运行:getAcl / brokers / topics并检查世界上是否没有人拥有cdrwa
顺便提一句,您提供的链接似乎并不反映当前版本的Kafka如何在zookeeper中存储信息。我简要地看了一下代码,对于那些kafka-topics.sh命令,主题信息来自/ brokers / topics而不是/ config / topics