如何開始使用加密? - Amazon Managed Streaming for Apache Kafka

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

如何開始使用加密?

建立MSK叢集時,您可以指定JSON格式的加密設定。以下是範例。

{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "arn:aws:kms:us-east-1:123456789012:key/abcdabcd-1234-abcd-1234-abcd123e8e8e" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }

對於DataVolumeKMSKeyId,您可以在您的帳戶中指定客戶管理 AWS 受管金鑰 MSK的金鑰或用於 (alias/aws/kafka)。如果您沒有指定EncryptionAtRest,Amazon MSK 仍會加密您在. AWS 受管金鑰若要判斷叢集使用的金鑰,請傳送GET要求或叫用DescribeClusterAPI作業。

對於EncryptionInTransit,預設值InCluster為 true,但如果您不希望 Amazon 在代理程式之間傳遞資料時MSK加密資料,則可以將其設定為 false。

若要指定用戶端與代理程式之間傳輸資料的加密模式,請將 ClientBroker 設定為下列三個值之一:TLSTLS_PLAINTEXT、或 PLAINTEXT

若要在建立叢集時指定加密設定
  1. 將前一個範例的內容儲存在檔案中,並為檔案命名為任何您想要的名稱。例如,稱之為 encryption-settings.json

  2. 執行create-cluster命令並使用encryption-info選項指向您儲存組態的檔案JSON。以下是範例。Replace (取代) {YOUR MSK VERSION} 使用與 Apache 卡夫卡客戶端版本匹配的版本。如需如何尋找MSK叢集版本的資訊,請參閱To find the version of your MSK cluster。請注意,使用與MSK叢集版本不同的 Apache Kafka 用戶端版本可能會導致 Apache Kafka 資料損毀、遺失和停機時間。

    aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file://encryptioninfo.json --kafka-version "{YOUR MSK VERSION}" --number-of-broker-nodes 3

    以下是執行此命令後成功回應的範例。

    { "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/SecondTLSTest/abcdabcd-1234-abcd-1234-abcd123e8e8e", "ClusterName": "ExampleClusterName", "State": "CREATING" }
若要測試TLS加密
  1. 依照 步驟 3:建立用戶端機器 中的指引建立用戶端機器。

  2. 在用戶端機器上安裝 Apache Kafka。

  3. 在此範例中,我們使用JVM信任庫與MSK叢集交談。若要這樣做,請先在用戶端機器上建立名為 /tmp 的資料夾。然後,前往 Apache Kafka 安裝的 bin 資料夾,並執行以下命令。(您的JVM路徑可能不同。)

    cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks
  4. 同時仍然在用戶端機器上的 Apache Kafka 安裝的 bin 資料夾中,建立一個名為 client.properties 且具有以下內容的文字檔案。

    security.protocol=SSL ssl.truststore.location=/tmp/kafka.client.truststore.jks
  5. 在已 AWS CLI 安裝的電腦上執行下列命令,取代 clusterARN 與您ARN的叢集。

    aws kafka get-bootstrap-brokers --cluster-arn clusterARN

    成功的結果看起來如下。儲存此結果,因為您下一個步驟需要它。

    { "BootstrapBrokerStringTls": "a-1.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-3.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123,a-2.example.g7oein.c2.kafka.us-east-1.amazonaws.com:0123" }
  6. 運行以下命令,替換 BootstrapBrokerStringTls 使用您在上一個步驟中取得的其中一個 Broker 端點。

    <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic TLSTestTopic
  7. 開啟新的命令視窗並連線至相同的用戶端機器。然後,執行下列命令來建立主控台取用者。

    <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic TLSTestTopic
  8. 在生產者視窗中,輸入文字訊息後方跟著換行符號,然後在取用者視窗中尋找相同的訊息。Amazon 在傳輸中MSK加密了此消息。

如需有關設定 Apache Kafka 用戶端以使用加密資料的詳細資訊,請參閱 設定 Kafka 用戶端