【问题标题】:Only allowing consumers from certain hosts/IPs access to kafka topics仅允许来自某些主机/IP 的消费者访问 kafka 主题
【发布时间】:2020-09-17 10:09:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: apache-kafka kafka-consumer-api apache-kafka-security


    【解决方案1】:

    您需要配置Authorisation using ACL

    如何启用 ACL:

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

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

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

    添加 ACL

    现在一切就绪后,假设您有一个名为 testTopic 的主题,您只想从 IP 为 197.5.6.1 的主机向名为 Bob 的用户授予读写访问权限:

    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 \
    

    【讨论】:

    • 谢谢!我们要试试这个,会报告它的进展情况
    • @theckler 运气好吗?
    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 2018-07-21
    • 2011-01-09
    • 2017-10-17
    • 2020-12-12
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多