Apache Kafka ACL - Amazon Managed Streaming for Apache Kafka

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Apache Kafka ACL

阿帕奇卡夫卡有一個可插拔的授權者,並附帶授權者實現。 out-of-box Amazon MSK 會在代理程式的 server.properties 檔案中啟用此授權。

阿帕奇卡夫卡 ACL 的格式為「主體 P 是 [允許/拒絕] 操作 O 從主機 H 在任何符合 RP 的資源 R 上」。 ResourcePattern 如果 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 授權命令列界面

除了用戶端之外,您還需要授予所有代理程式存取您的主題,以便代理程式可以從主分區複製訊息。如果代理程式無法存取主題,主題的複寫就會失敗。

若要新增或移除主題的讀取和寫入權限
  1. 將您的代理程式新增至 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=* --topic Topic-Name
  2. 若要授與主題的讀取權限,請在用戶端機器上執行下列命令。若您使用雙向 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=* --topic Topic-Name

    若要移除讀取權限,您可以執行相同的命令,將 --add 取代為 --remove

  3. 若要授與主題的寫入權限,請在用戶端機器上執行下列命令。若您使用雙向 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 --topic Topic-Name

    若要移除寫入權限,您可以執行相同的命令,將 --add 取代為 --remove