Kafka 动态添加 SASL 用户,无需重启集群
Posted
技术标签:
【中文标题】Kafka 动态添加 SASL 用户,无需重启集群【英文标题】:Kafka adding SASL users dynamically without cluster restart 【发布时间】:2019-06-06 10:20:54 【问题描述】:我们想使用 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 配置?
【问题讨论】:
您使用的是哪个版本的 Kafka? @Steephen 2.1.0 【参考方案1】:如果您在sasl_plaintext
中使用plain
机制,
基于this answer,您无法在正在运行的集群中添加新用户。
相反,您可以切换到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 配置文件,但是,您只需在启动服务器时传递一次。
这是一个关于使用SCRAM
机制的useful link in Kafka document。
【讨论】:
谢谢!我们将朝着这个方向努力 我认为您应该在 --add-config 之后从配置部分中删除引号。 @M.Ismail 基于答案中的Kafka文档链接,有必要。 是否可以在其中添加 tls? 警告:--zookeeper 已弃用,将在未来版本的 Kafka 中删除。以上是关于Kafka 动态添加 SASL 用户,无需重启集群的主要内容,如果未能解决你的问题,请参考以下文章