本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 授權命令列界面
由於 Amazon MSK 將代理程式設定為超級使用者,因此他們可以存取所有主題。這有助於代理程式從主要分割區複寫訊息,無論叢集組態是否定義 allow.everyone.if.no.acl.found
屬性。
若要新增或移除主題的讀取和寫入權限
-
將您的代理程式新增至 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 --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 --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 --bootstrap-server BootstrapServerString --add --allow-principal "User:CN=Distinguished-Name
" --operation Write --topicTopic-Name
若要移除寫入權限,您可以執行相同的命令,將
--add
取代為--remove
。