控制對阿帕奇的存取 ZooKeeper - Amazon Managed Streaming for Apache Kafka

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

控制對阿帕奇的存取 ZooKeeper

基於安全理由,您可以限制對屬於 Amazon MSK 叢集一部分之 Apache ZooKeeper 節點的存取。若要限制對這些節點的存取權,您可以將個別的安全群組指派給這些節點。然後,您可以決定誰可以存取該安全群組。

重要

本節不適用於以 Kraft 模式執行的叢集。請參閱牛皮紙模式

若要將 Apache ZooKeeper 節點放在單獨的安全性群組中

  1. 取得叢集的 Apache ZooKeeper 連線字串。如要瞭解如何作業,請參閱ZooKeeper 模式。連接字串包含 Apache ZooKeeper 節點的 DNS 名稱。

  2. 使用 hostping 之類的工具,來將您在上一個步驟中獲得的 DNS 名稱轉換為 IP 地址。儲存這些 IP 地址,因為稍後在此程序中需要這些資訊。

  3. 登入 AWS Management Console 並開啟 Amazon EC2 主控台,網址為 https://console.aws.amazon.com/ec2/

  4. 在左側窗格中的 NETWORK & SECURITY (網路與安全) 下,選擇 Network Interfaces (網路界面)

  5. 在網路界面表格上方的搜尋欄位中,輸入叢集的名稱,然後輸入 return。這會將表格中顯示的網路界面數量限制為與叢集相關聯的那些界面。

  6. 在清單中與第一個網路界面相對應的資料列開頭選取核取方塊。

  7. 在頁面底部的詳細資訊窗格中,尋找 Primary private IPv4 IP (主要私有 IPv4 IP)。如果此 IP 位址符合您在此程序的第一個步驟中取得的其中一個 IP 位址,這表示此網路介面會指派給屬於叢集一部分的 Apache ZooKeeper 節點。否則,請取消選取此網路界面旁的核取方塊,然後選取清單中的下一個網路界面。網路界面的選取順序無關緊要。在接下來的步驟中,您將逐一對指派給 Apache ZooKeeper 節點的所有網路介面執行相同的作業。

  8. 當您選取與 Apache ZooKeeper 節點對應的網路介面時,請選擇頁面頂端的「動作」功能表,然後選擇「變更安全性群組」。將新的安全群組指派至此網路界面。如需有關建立安全群組的詳細資訊,請參閱 Amazon VPC 文件中的建立安全群組

  9. 重複上一個步驟,將相同的新安全性群組指派給與叢集之 Apache ZooKeeper 節點相關聯的所有網路介面。

  10. 您現在可以選擇可存取此全新安全群組的人員。如需有關設定安全群組規則的資訊,請參閱 Amazon VPC 文件中的新增、移除和更新規則

搭配阿帕奇使用 TLS 安全性 ZooKeeper

您可以使用 TLS 安全性來在用戶端和 Apache ZooKeeper 節點之間傳輸過程中進行加密。若要使用 Apache ZooKeeper 節點實作 TLS 安全性,請執行下列動作:

  • 叢集必須使用阿帕奇卡夫卡 2.5.1 版或更新版本,才能搭配 Apache 使用 TLS 安全性。 ZooKeeper

  • 建立或設定叢集時啟用 TLS 安全功能。使用 Apache 卡夫卡 2.5.1 版或更新版本建立且啟用 TLS 的叢集會自動搭配 Apache 端點使用 TLS 安全性。 ZooKeeper 如需有關 TLS 安全功能設定的資訊,請參閱 如何開始使用加密?

  • 使用此DescribeCluster 作業擷取 TLS 阿帕奇 ZooKeeper 端點。

  • 建立 Apache ZooKeeper 組態檔案,以便與kafka-configs.shkafka-acls.sh工具搭配使用,或搭配 ZooKeeper 殼層使用。對於每個工具,您都可以使用--zk-tls-config-file參數來指定 Apache ZooKeeper 配置。

    下面的例子顯示了一個典型的 Apache ZooKeeper 配置文件:

    zookeeper.ssl.client.enable=true zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty zookeeper.ssl.keystore.location=kafka.jks zookeeper.ssl.keystore.password=test1234 zookeeper.ssl.truststore.location=truststore.jks zookeeper.ssl.truststore.password=test1234
  • 對於其他命令 (例如kafka-topics),您必須使用KAFKA_OPTS環境變數來設定 Apache ZooKeeper 參數。下列範例會示範如何設定KAFKA_OPTS環境變數,將 Apache ZooKeeper 參數傳遞至其他指令:

    export KAFKA_OPTS=" -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty -Dzookeeper.client.secure=true -Dzookeeper.ssl.trustStore.location=/home/ec2-user/kafka.client.truststore.jks -Dzookeeper.ssl.trustStore.password=changeit"

    設定 KAFKA_OPTS 環境變數之後,就可以正常使用 CLI 命令。下列範例會使用KAFKA_OPTS環境變數的 Apache ZooKeeper 組態,建立 Apache 卡夫卡主題:

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --zookeeper ZooKeeperTLSConnectString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopic
注意

您在 Apache ZooKeeper 配置文件中使用的參數名稱以及在KAFKA_OPTS環境變量中使用的參數名稱不一致。請注意您在組態檔案和 KAFKA_OPTS 環境變量中使用了哪些參數名稱。

如需有關使用 TLS 存取 Apache ZooKeeper 節點的詳細資訊,請參閱 KIP-515:讓 ZK 用戶端使用新的 TLS 支援的驗證