本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
阿帕奇 Kafka ACLs
Apache Kafka 有一个可插拔的授权器,并附带了授权器实现。 out-of-boxAmazon 在经纪人的server.properties
文件中MSK启用了该授权者。
Apache Kafka ACLs 的格式为 “主体 P 是 [允许/拒绝] 来自主机 H 对任何与 RP 匹配的资源 R 的操作 O”。 ResourcePattern 如果 RP 与特定资源 R 不匹配,则 R 没有关联ACLs,因此除了超级用户之外,不允许任何其他人访问 R。要更改此 Apache Kafka 行为,请将该属性allow.everyone.if.no.acl.found
设置为 true。默认情况下,亚马逊将其MSK设置为 true。这意味着,ACLs在 Amazon MSK 集群中,如果您没有明确设置资源,则所有委托人都可以访问该资源。如果您在资源ACLs上启用,则只有授权的委托人才能访问该资源。如果要限制对主题的访问并使用TLS相互身份验证对客户端进行授权,请使用 Apache Kafka 授权ACLs器进行添加。CLI有关添加、删除和列出的更多信息ACLs,请参阅 Kafka 授权命令行界面
除客户端之外,您还需要授予所有代理访问主题的权限,以便代理可以从主分区复制消息。如果代理无权访问某个主题,则该主题的复制将失败。
添加或删除对主题的读写访问权
-
将您的经纪人添加到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 --authorizer-properties --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name
" --operation Read --group=* --topicTopic-Name
-
要授予对主题的读访问权,请在客户端计算机上运行以下命令。如果您使用双向TLS身份验证,请使用与创建私钥时相同的
Distinguished-Name
方式。<path-to-your-kafka-installation>
/bin/kafka-acls.sh --authorizer-properties --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name
" --operation Read --group=* --topicTopic-Name
要删除读访问权,您可以运行相同的命令,并将
--add
替换为--remove
。 -
要授予对主题的写访问权,请在客户端计算机上运行以下命令。如果您使用双向TLS身份验证,请使用与创建私钥时相同的
Distinguished-Name
方式。<path-to-your-kafka-installation>
/bin/kafka-acls.sh --authorizer-properties --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name
" --operation Write --topicTopic-Name
要删除写访问权,您可以运行相同的命令,并将
--add
替换为--remove
。