2

我们有一个基于 Kafka 的系统,以及一个庞大的开发团队正在开发这个系统。我们仍处于开发和测试阶段,尚未投入生产。对于大多数本地开发测试,我们不需要使用 Kafka 消息,但我们确实需要与 QA 环境中的数据库和其他应用程序交互,因此开发人员在运行他们的应用程序时将使用 QA 配置文件属性(这些是 Java Spring Boot应用)。

问题是,当开发人员使用 QA 配置文件在本地运行应用程序时,本地应用程序正在消耗来自 QA 环境的消息并中断测试。我们还有一个更大的担忧,即当我们进入生产环境时,开发人员可能会使用生产配置文件运行,以便能够查看一些生产数据,并无意中消耗生产消息,从而导致严重问题。

有没有办法将 Kafka 配置为只允许某些主机/IP 使用它的消息?

4

1 回答 1

2

您需要使用 ACL 配置授权

如何启用 ACL:

在您的server.properties文件中,您需要Authorizer通过添加以下行来创建一个:

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

现在您需要按照文档来根据您的用例正确配置 ACL。

添加 ACL

现在,一旦一切就绪,假设您有一个名为的主题,您希望仅向从具有 IP 的主机testTopic调用的用户授予读写访问权限:Bob197.5.6.1

bin/kafka-acls \
  --authorizer-properties zookeeper.connect=localhost:2181 \
  --add \
  --allow-principal User:'Bob' --allow-host '197.5.6.1' \
  --operation Read --operation Write \
  --topic testTopic \
于 2020-05-30T12:14:36.347 回答