Como começo a usar a criptografia? - Amazon Managed Streaming for Apache Kafka

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como começo a usar a criptografia?

Ao criar um cluster do MSK, você pode especificar configurações de criptografia no formato JSON. Veja um exemplo a seguir.

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

Para DataVolumeKMSKeyId, é possível especificar uma chave gerenciada pelo cliente ou a Chave gerenciada pela AWS para o MSK na sua conta (alias/aws/kafka). Se você não especificarEncryptionAtRest, o Amazon MSK ainda criptografa seus dados em repouso sob o. Chave gerenciada pela AWS Para determinar qual chave o cluster está usando, envie uma solicitação GET ou invoque a operação de API DescribeCluster.

Para EncryptionInTransit, o valor padrão de InCluster é verdadeiro, mas será possível defini-lo como falso se não quiser que o Amazon MSK criptografe seus dados conforme eles passam pelos agentes.

Para especificar o modo de criptografia para dados em trânsito entre clientes e agentes, defina ClientBroker como um dos três valores: TLS, TLS_PLAINTEXT ou PLAINTEXT.

Como especificar configurações de criptografia ao criar um cluster
  1. Salve o conteúdo do exemplo anterior em um arquivo e dê ao arquivo qualquer nome que desejar. Por exemplo, nomeie-o como encryption-settings.json.

  2. Execute o comando create-cluster e use a opção encryption-info para apontar para o arquivo onde você salvou a configuração JSON. Veja um exemplo a seguir. Substitua {YOUR MSK VERSION} por uma versão que corresponda à versão do cliente Apache Kafka. Para obter informações sobre como encontrar a versão de cluster do MSK, consulte To find the version of your MSK cluster. Esteja ciente de que usar uma versão do cliente Apache Kafka que não seja igual à sua versão de cluster do MSK pode resultar em corrupção, perda e tempo de inatividade dos dados do 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

    Veja a seguir um exemplo de uma resposta bem-sucedida após a execução desse comando.

    { "ClusterArn": "arn:aws:kafka:us-east-1:123456789012:cluster/SecondTLSTest/abcdabcd-1234-abcd-1234-abcd123e8e8e", "ClusterName": "ExampleClusterName", "State": "CREATING" }
Como testar a criptografia por TLS
  1. Crie uma máquina de cliente seguindo as orientações em Etapa 3: criar uma máquina cliente.

  2. Instale o Apache Kafka na máquina de cliente.

  3. Execute o comando a seguir em uma máquina que tenha o AWS CLI instalado, substituindo clusterARN pelo ARN do seu cluster (um cluster ClientBroker criado com TLS set como o exemplo no procedimento anterior).

    aws kafka describe-cluster --cluster-arn clusterARN

    No resultado, procure o valor de ZookeeperConnectString e salve-o porque você precisará dele na próxima etapa.

  4. Para criar um tópico, execute o comando a seguir em sua máquina cliente. ZookeeperConnectStringSubstitua pelo valor obtido ZookeeperConnectString na etapa anterior.

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --zookeeper ZookeeperConnectString --replication-factor 3 --partitions 1 --topic TLSTestTopic
  5. Neste exemplo, o armazenamento confiável da JVM para se comunicar com o cluster do MSK. Para fazer isso, crie primeiramente uma pasta chamada /tmp na máquina cliente. Depois, acesse a pasta bin da instalação do Apache Kafka e execute o comando a seguir. (Seu caminho da JVM pode ser diferente.)

    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
  6. Enquanto ainda estiver na pasta bin da instalação do Apache Kafka na máquina cliente, crie um arquivo de texto chamado client.properties com o conteúdo a seguir.

    security.protocol=SSL ssl.truststore.location=/tmp/kafka.client.truststore.jks
  7. Execute o comando a seguir em uma máquina que tenha o AWS CLI instalado, substituindo clusterARN pelo ARN do seu cluster.

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

    Um resultado bem-sucedido tem a aparência a seguir. Salve este resultado porque você precisará dele na próxima etapa.

    { "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" }
  8. Execute o seguinte comando da para criar um produtor de console em sua máquina cliente. BootstrapBrokerStringTlsSubstitua pelo valor obtido na etapa anterior. Deixe este comando de produtor em execução.

    <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringTls --producer.config client.properties --topic TLSTestTopic
  9. Abra uma nova janela de comando e conecte-se à mesma máquina cliente. Depois, execute o comando a seguir para criar um consumidor de console.

    <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringTls --consumer.config client.properties --topic TLSTestTopic
  10. Na janela do produtor, digite uma mensagem de texto seguida de um retorno e procure a mesma mensagem na janela do consumidor. O Amazon MSK criptografou essa mensagem em trânsito.

Para obter mais informações sobre como configurar clientes do Apache Kafka para trabalhar com dados criptografados, consulte Configurar clientes do Kafka.