我们有一个基于 Kafka 的系统,以及一个致力于该系统的大型开发团队。我们仍处于开发和测试阶段,尚未投入生产。对于大多数本地开发测试,我们不需要使用 Kafka 消息,但我们确实需要在 QA 环境中与数据库和其他应用程序进行交互,因此开发人员在运行其应用程序时将使用 QA 配置文件属性(这些是 Java Spring Boot)应用)。
问题是,当开发人员使用 QA 配置文件在本地运行应用程序时,本地应用程序会消耗来自 QA 环境的消息并中断测试。我们还有一个更大的担忧,当我们投入生产时,开发人员可能会使用生产配置文件运行以便能够查看一些生产数据,并无意中消耗生产消息,从而导致严重问题。
有没有办法将 Kafka 配置为仅允许某些主机/IP 消费其消息?
最佳答案
您需要配置Authorisation using ACL 。
如何启用 ACL:
在您的 server.properties
文件中,您需要通过添加以下行来创建 Authorizer
:
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
现在您需要遵循文档,以便根据您的用例正确配置 ACL。
添加 ACL
现在,一切就绪后,假设您有一个名为 testTopic
的主题,您只想向主机上名为 Bob
的用户授予读写访问权限IP 197.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 \
关于apache-kafka - 只允许特定主机/IP的消费者访问kafka主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62092743/