从客户端使用 Kafka 超级用户 ACL

Using Kafka super user ACLs from the client side

根据官方 Kafka 文档,以及在我旅行期间翻腾的大量博客,我似乎可以启动一个 Kafka 代理,其 server.properties 配置文件包含:

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users=User:Bob;User:Alice

这定义了两个超级用户 (Bob + Alice),他们可以向我的经纪人的主题生成消息,并从中使用消息。

但是我如何从客户端利用这些用户?如果我有一个 Java 客户端需要向我的 Kafka 代理发送消息,如何该客户端 "authenticate" 本身是否作为 'Bob'(或 'Alice',或任何其他超级用户)?

超级用户密码在哪里 defined/used?!?

我这周做了一些挖掘,看起来 "basic auth"-style (username + password) credentials is not supported in Kafka proper.

看起来您可以设置 Kerberos 或类似的解决方案(JAAS/SASL 等)来创建与 Kafka 一起工作的票证服务,这似乎就是这些 ACL 的用途。我 认为 要点是您首先要针对 Kerberos 进行身份验证,此时您将获得 ticket/token。然后你会出示你的 username/principle 和你的 Kafka 票,Kafka 会与 Kerberos 一起工作以确保票仍然有效。我认为这就是它的工作原理,基于我能够接触到的一些 obscure/vague 博客。

我还看到证据表明 Kafka 目前或计划对 LDAP 提供某种集成层支持,因此您可以将 Kafka 集群连接到 AD 或类似设备。

奇怪的是,管理 Kafka 身份验证的最佳方法似乎是 Yahoo! Kafka Manager 工具,它似乎是一个非常受欢迎、维护良好的项目,最近有很多更新和社区支持。这很可能是我将 运行 使用的,至少目前是这样。 HTH.