阿帕奇 Kafka ACLs - Amazon Managed Streaming for Apache Kafka

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

阿帕奇 Kafka ACLs

Apache Kafka 有一个可插拔的授权器,并附带了授权器实现。 out-of-boxAmazon MSK 在代理上的 server.properties 文件中启用此授权方。

Apache Kafka ACLs 的格式为 “主体 P 是 [允许/拒绝] 来自主机 H 对任何与 RP 匹配的资源 R 的操作 O”。 ResourcePattern 如果 RP 与特定资源 R 不匹配,则 R 没有关联 ACLs,因此除了超级用户之外,不允许任何其他人访问 R。要更改此 Apache Kafka 行为,请将该属性allow.everyone.if.no.acl.found设置为 true。默认情况下,Amazon MSK 会将其设置为 true。这意味着, ACLs 在 Amazon MSK 集群中,如果您没有明确设置资源,则所有委托人都可以访问该资源。如果您在资源 ACLs 上启用,则只有授权的委托人才能访问该资源。如果要限制对主题的访问并使用 TLS 双向身份验证对客户端进行授权,请 ACLs 使用 Apache Kafka 授权器 CLI 进行添加。有关添加、删除和列出的更多信息 ACLs,请参阅 Kafka 授权命令行界面

由于 Amazon MSK 将代理配置为超级用户,因此代理可访问所有主题。这有助于代理从主分区复制消息,无论是否为集群配置定义了 allow.everyone.if.no.acl.found 属性。

添加或删除对主题的读写访问权
  1. 将您的代理添加到 ACL 表中,以允许他们读取所有已 ACLs 存在的主题。要授予代理对主题的读取访问权限,请在可与 MSK 集群通信的客户端计算机上运行以下命令。

    Distinguished-Name替换为集群中任何引导程序代理的 DNS,然后将此可分辨名称中第一个句点之前的字符串替换为星号 () *。例如,如果集群的某个引导代理有 DNSb-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com,则在以下命令Distinguished-Name中替换为。*.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com有关如何获取引导代理的信息,请参阅获取 Amazon MSK 集群的引导代理

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name
  2. 要授予客户端应用对主题的读访问权,请在客户端计算机上运行以下命令。如果您使用双向 TLS 身份验证,请使用与创建私钥时相同的Distinguished-Name身份验证。

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Read --group=* --topic Topic-Name

    要删除读访问权,您可以运行相同的命令,并将 --add 替换为 --remove

  3. 要授予对主题的写访问权,请在客户端计算机上运行以下命令。如果您使用双向 TLS 身份验证,请使用与创建私钥时相同的Distinguished-Name身份验证。

    <path-to-your-kafka-installation>/bin/kafka-acls.sh --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name" --operation Write --topic Topic-Name

    要删除写访问权,您可以运行相同的命令,并将 --add 替换为 --remove