本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Apache Kafka ACL
Apache Kafka 具有可插入的授權方,並隨附out-of-box授權方實作。Amazon MSK 會在代理程式的 server.properties
檔案中啟用此授權。
Apache Kafka ACL 的格式為「主體 P 被主機 H [允許/拒絕] 在任何匹配 ResourcePattern RP 的資源 R 上進行操作 O」。如果 RP 不匹配特定的資源 R,那麼 R 和 ACL 無關聯,因此除了超級使用者以外沒有其他人能夠存取 R。若要變更此 Apache Kafka 行為,請將屬性 allow.everyone.if.no.acl.found
設定為 "true"。Amazon MSK 預設設定為 "true"。這表示使用 Amazon MSK 叢集時,如果您未在資源上明確設定 ACL,則所有委託人都可以存取此資源。如果您啟用資源上的 ACL,只有授權的委託人可以存取它。如果您想要限制對主題的存取,並授權使用 TLS 相互驗證的用戶端,請使用 Apache Kafka 授權方 CLI 來新增 ACL。如需有關新增、移除和列出 ACL 的詳細資訊,請參閱 Kafka 授權命令列界面
除了用戶端之外,您還需要授予所有代理程式存取您的主題,以便代理程式可以從主分區複製訊息。如果代理程式無法存取主題,主題的複寫就會失敗。
若要新增或移除主題的讀取和寫入權限
-
將您的代理程式新增至 ACL 表格,以允許它們讀取所有具有 ACL 的主題。若要授予代理程式對主題的讀取權限,請在可與 MSK 叢集通訊的用戶端機器上執行下列命令。
使用叢集的任何引導代理程式的 DNS 取代
Distinguished-Name
,然後以星號 (*
) 取代此辨別名稱中第一個句點之前的字串。例如,如果其中一個叢集的引導代理程式具有 DNS,b-6.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com
請使用*.mytestcluster.67281x.c4.kafka.us-east-1.amazonaws.com
取代下列命令中的Distinguished-Name
。如需有關如何取得引導代理程式的資訊,請參閱取得 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
。