本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
如何開始使用加密?
建立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
要求或叫用DescribeCluster
API作業。
對於EncryptionInTransit
,預設值InCluster
為 true,但如果您不希望 Amazon 在代理程式之間傳遞資料時MSK加密資料,則可以將其設定為 false。
若要指定用戶端與代理程式之間傳輸資料的加密模式,請將 ClientBroker
設定為下列三個值之一:TLS
、TLS_PLAINTEXT
、或 PLAINTEXT
。
若要在建立叢集時指定加密設定
將前一個範例的內容儲存在檔案中,並為檔案命名為任何您想要的名稱。例如,稱之為
encryption-settings.json
。-
執行
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加密
依照 步驟 3:建立用戶端機器 中的指引建立用戶端機器。
-
在用戶端機器上安裝 Apache Kafka。
-
在此範例中,我們使用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
-
同時仍然在用戶端機器上的 Apache Kafka 安裝的
bin
資料夾中,建立一個名為client.properties
且具有以下內容的文字檔案。security.protocol=SSL ssl.truststore.location=/tmp/kafka.client.truststore.jks
-
在已 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" }
-
運行以下命令,替換
BootstrapBrokerStringTls
使用您在上一個步驟中取得的其中一個 Broker 端點。<path-to-your-kafka-installation>
/bin/kafka-console-producer.sh --broker-listBootstrapBrokerStringTls
--producer.config client.properties --topic TLSTestTopic -
開啟新的命令視窗並連線至相同的用戶端機器。然後,執行下列命令來建立主控台取用者。
<path-to-your-kafka-installation>
/bin/kafka-console-consumer.sh --bootstrap-serverBootstrapBrokerStringTls
--consumer.config client.properties --topic TLSTestTopic -
在生產者視窗中,輸入文字訊息後方跟著換行符號,然後在取用者視窗中尋找相同的訊息。Amazon 在傳輸中MSK加密了此消息。
如需有關設定 Apache Kafka 用戶端以使用加密資料的詳細資訊,請參閱 設定 Kafka 用戶端