0
./bin/kafka-console-producer.sh --broker-list 10.162.0.6:32294 --topic my-topic
./bin/kafka-console-consumer.sh --bootstrap-server 10.162.0.6:32294 --topic my-topic --from-beginning 

我是卡夫卡的新手。我的 kafka 在使用 Helm 部署的srimzi kubernetes 运算符上运行。

我创建了一个名为my-topic 的主题并在两个单独的终端中执行上述 2 个命令。无论我为生产者键入消息,我都会看到它们以响应上述消费者命令!

现在我使用 ACL 创建了 2 个用户userauserbusera ACL 被完全阻止访问主题另一个用户userb具有访问 Topic: my-topic 的完全 ACL 访问权限。

要测试该 ACL,即如果我使用usera运行生产者和消费者,那么应该显示权限被拒绝,如果我使用另一个userb运行生产者和消费者,那么应该能够访问主题。

但是想知道如何为用户执行上述命令吗?

或者请建议如何测试场景。

4

1 回答 1

0

这取决于您在 Kafka 部署中设置的身份验证类型(使用 TLS 客户端身份验证或 SCRAM-SHA),我假设您正在使用 User Operator 来创建用户(KafkaUser 资源)。在第一种情况下,您必须从 User Operator 在创建新 KafkaUser 时创建的 Secret 中提取密钥库和相关密码;您可以使用此密钥库来配置一个属性文件(使用 ssl.keystore.location 和 ssl.keystore.password),您可以通过 --producer.config 选项将其传递给生产者或通过 --consumer.config 选项传递给消费者. 当然,如果启用了 TLS 客户端身份验证,则意味着您已使用 TLS,因此您需要从包含集群 CA 证书的 Secret 中提取信任库和相关密码(更多信息在此处https://strimzi.io/docs/master/#configuring-external-clients-to-trust-cluster-ca-str)。然后,您可以使用它在同一个属性文件中配置 ssl.truststore.location 和 ssl.truststore.password。如果您使用 SCRAM-SHA,您必须从 KafkaUser 相关 Secret 中提取用户名和密码,并在上述属性文件中配置 JAAS 属性。

于 2020-04-02T08:15:52.637 回答