Kafka Zookeeper身份验证不起作用

时间:2019-02-28 12:50:53

标签: apache-kafka apache-zookeeper

我正在尝试为没有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

1 个答案:

答案 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