首页 > 解决方案 > Kafka Zookeeper 身份验证不起作用

问题描述

我正在尝试为没有 ssl 的 Kafka 集群启用 SASL 用户名和密码。我按照这个 Stackoverflow 上的步骤操作:

Kafka SASL zookeeper 身份验证

SASL 身份验证似乎适用于 Kafka 代理。消费者和生产者必须在写入或读取主题之前进行身份验证。到目前为止,一切都很好。

问题在于在 kafka 上创建和删除主题。例如,当我尝试使用以下命令时:

~/kafka/bin/kafka-topics.sh --list --zookeeper 10.x.y.z:2181

我能够列出 kafka 集群中的所有主题,并创建或删除任何没有身份验证的主题。

我尝试按照此处的步骤操作:

超级用户认证和授权

但似乎没有任何效果。

非常感谢您对此事的任何帮助。

谢谢和问候, Firas Khasawneh

标签: apache-kafkaapache-zookeeper

解决方案


您需要将 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

您可以从 shell 运行:getAcl /brokers/topics 并检查世界上没有任何人拥有 cdrwa

附带说明一下,您提供的链接似乎并未反映当前版本的 Kafka 如何在 zookeeper 中存储信息。我简要查看了代码,对于那些 kafka-topics.sh 命令,主题信息来自 /brokers/topics 而不是 /config/topics


推荐阅读