如何开始使用加密? - 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,您可以指定客户托管密钥或账户MSK中的 for (alias/aws/kafka)。 AWS 托管式密钥 如果您未指定EncryptionAtRest,Amazon MSK 仍会对您的静态数据进行加密。 AWS 托管式密钥要确定您的集群正在使用哪个密钥,请发送GET请求或调用该DescribeClusterAPI操作。

对于EncryptionInTransit,的默认值InCluster为 true,但如果您不希望 Amazon 在经纪人之间传输数据时对其MSK进行加密,则可以将其设置为 false。

要为客户端和代理之间传输的数据指定加密模式,请将 ClientBroker 设置为以下三个值之一:TLSTLS_PLAINTEXTPLAINTEXT

创建集群时指定加密设置
  1. 将上一示例的内容保存在文件中,并为该文件指定所需的任何名称。例如,将其命名为 encryption-settings.json

  2. 运行create-cluster命令并使用encryption-info选项指向保存配置的文件JSON。示例如下:Replace(替换) {YOUR MSK VERSION} 其版本与 Apache Kafka 客户端版本相匹配。有关如何查找您的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 使用您在上一步中获得的代理端点之一。

    <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 客户端