是否可以对 Kafka 客户端使用 SASL 身份验证,但对于 Zookeeper 不需要它?

vas*_*cop 3 java sasl apache-kafka apache-zookeeper

我遵循了这个:http : //docs.confluent.io/current/kafka/sasl.html#sasl-configuration-for-kafka-brokers

为我的 Kafka 集群配置 SASL 身份验证。我想让我所有的客户通过 SASL 向经纪人进行身份验证。我不在乎 kafka<->zookeeper。原因是我需要在 Kafka 中创建 ACL。当启动 Kafka 集群并收到有关无法向 Zookeeper 进行身份验证的错误时,会出现此问题:

SASL 配置失败:javax.security.auth.login.LoginException:在指定的 JAAS 配置文件中找不到名为“客户端”的 JAAS 配置部分:“/etc/kafka/kafka_server_jaas.conf”。如果 Zookeeper 服务器允许,将在没有 SASL 身份验证的情况下继续连接到 Zookeeper 服务器。打开到服务器的套接字连接 zk-2.zookeeper-service.default.svc.cluster.local/100.96.16.2:2181 连接到 Zookeeper 服务器时发生错误 [zk-0.zookeeper-service:2181,zk-1.zookeeper-服务:2181,zk-2.zookeeper-service:2181]。身份验证失败。

我还没有为 SASL 身份验证配置 Zookeeper,如果可以的话,我宁愿避免。这可能吗?

vas*_*cop 9

原来我基于我的配置的特定 docker 镜像 (confluentinc/cp-kafka:3.2.1) 假设 Zookeeper 将启用 SASL,如果 Kafka 是(https://github.com/confluentinc/cp-docker-images /blob/3.2.x/debian/base/include/cub#L99 )

默认情况下,它会将相同的 JAVA 标志传递给io.confluent.admin.utils.cli.ZookeeperReadyCommand,您可以通过将 设置ZOOKEEPER_SASL_ENABLED为 false来选择性地禁用该标志。