Kafka 在不重启集群的情况下动态添加 SASL 用户

Kafka adding SASL users dynamically without cluster restart

我们想使用 SASL 向我们的 kafka 集群添加身份验证。正如我们所见,我们希望能够频繁添加用户,我们正在寻找无需执行滚动重启即可执行此操作的方法。

我们尝试过的:

使用动态代理配置界面,为所有代理重新配置listener.name.sasl_plaintext.plain.sasl.jaas.config

kafka 经纪人了解 zookeeper 的变化 [2019-01-11 11:08:23,403] INFO Processing override for entityPath: brokers/1 with config: Map(listener.name.sasl_plaintext.plain.sasl.jaas.config -> encryptedPassword:XXX,keyLength:128,cipherAlgorithm:AES/CBC/PKCS5Padding,initializationVector:YYY,keyFactoryAlgorithm:PBKDF2WithHmacSHA512,salt:ZZZ,iterations:4096,passwordLength:270) (kafka.server.DynamicConfigManager)

但是,在代理重新启动之前,新用户无法连接。

是否可以在不重启Kafka集群的情况下将新用户添加到SASL JAAS配置中?

如果您在 sasl_plaintext 中使用 plain 机制, 根据 ,您无法在 运行 集群中添加新用户。

相反,您可以切换到 SCRAM 机制,之后,您将能够使用如下命令在 运行 集群中创建用户:

$ > bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=alice-secret],SCRAM-SHA-512=[password=alice-secret]' --entity-type users --entity-name alice

但是,您仍然需要保留 JAAS 配置文件,但是,您只需在启动服务器时传递一次即可。

这里有一个useful link in Kafka document关于使用SCRAM机制。