Authentification TLS mutuelle - Amazon Managed Streaming for Apache Kafka

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Authentification TLS mutuelle

Vous pouvez activer l'authentification client avec TLS pour les connexions entre vos applications et vos courtiers Amazon MSK. Pour utiliser l'authentification client, vous avez besoin d'une Autorité de certification privée AWS. Ils Autorité de certification privée AWS peuvent se trouver dans le même compte Compte AWS que celui de votre cluster ou dans un autre compte. Pour plus d'informations sur Autorité de certification privée AWS s, voir Création et gestion d'un Autorité de certification privée AWS.

Note

L'authentification TLS n'est pas disponible pour l'instant dans les régions Pékin et Ningxia.

Amazon MSK ne prend pas en charge les listes de révocation des certificats (CRL). Pour contrôler l'accès aux rubriques de votre cluster ou bloquer les certificats compromis, utilisez les ACL et les groupes de AWS sécurité Apache Kafka. Pour en savoir plus sur l'utilisation des listes de contrôle d'accès (ACL) Apache Kafka, consultez Listes de contrôle d'accès (ACL) Apache Kafka.

Pour créer un cluster prenant en charge l'authentification client

Cette procédure explique comment activer l'authentification du client à l'aide d'un Autorité de certification privée AWS.

Note

Nous vous recommandons vivement d'utiliser le protocole indépendant Autorité de certification privée AWS pour chaque cluster MSK lorsque vous utilisez le protocole TLS mutuel pour contrôler l'accès. Cela garantira que les certificats TLS signés par les PCA ne s'authentifient qu'auprès d'un seul cluster MSK.

  1. Créez un fichier nommé clientauthinfo.json avec les contenus suivants. Remplacez Private-CA-ARN par l'ARN de votre PCA.

    { "Tls": { "CertificateAuthorityArnList": ["Private-CA-ARN"] } }
  2. Créez un fichier nommé brokernodegroupinfo.json comme décrit à la section Création d'un cluster à l'aide du AWS CLI.

  3. L'authentification du client nécessite également l'activation du chiffrement lors du transit entre les clients et les brokers. Créez un fichier nommé encryptioninfo.json avec les contenus suivants. Remplacez KMS-KEY-ARN par l'ARN de votre clé KMS. Vous pouvez définir ClientBroker sur TLS ou TLS_PLAINTEXT.

    { "EncryptionAtRest": { "DataVolumeKMSKeyId": "KMS-Key-ARN" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }

    iPour de plus amples informations sur le chiffrement, veuillez consulter Chiffrement Amazon MSK.

  4. Sur une machine sur laquelle vous l'avez AWS CLI installé, exécutez la commande suivante pour créer un cluster sur lequel l'authentification et le chiffrement en transit sont activés. Enregistrez l'ARN de cluster fourni dans la réponse.

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

Pour configurer un client pour utiliser l'authentification

  1. Créez une instance Amazon EC2 à utiliser en tant qu'ordinateur client. Pour plus de simplicité, créez cette instance dans le même VPC que celui utilisé pour le cluster. Consultez Étape 3 : Créer un ordinateur client pour un exemple de création d'une machine client.

  2. Créer une rubrique. Pour obtenir un exemple, consultez les instructions dans Étape 4 : créer une rubrique.

  3. Sur une machine sur laquelle vous l'avez AWS CLI installé, exécutez la commande suivante pour obtenir les courtiers bootstrap du cluster. Remplacez Cluster-ARN par l'ARN de votre cluster.

    aws kafka get-bootstrap-brokers --cluster-arn Cluster-ARN

    Enregistrez la chaîne associée à BootstrapBrokerStringTls dans la réponse.

  4. Sur votre ordinateur client, exécutez la commande suivante pour utiliser le magasin de confiance JVM pour créer votre magasin de confiance client. Si votre chemin JVM est différent, ajustez la commande en conséquence.

    cp /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64/jre/lib/security/cacerts kafka.client.truststore.jks
  5. Sur votre ordinateur client, exécutez la commande suivante pour créer une clé privée pour votre client. Remplacez Distinguished-Name, Example-Alias, Your-Store-Pass, et Your-Key-Pass par des chaînes de votre choix.

    keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass Your-Store-Pass -keypass Your-Key-Pass -dname "CN=Distinguished-Name" -alias Example-Alias -storetype pkcs12
  6. Sur votre ordinateur client, exécutez la commande suivante pour créer une demande de certificat avec la clé privée que vous avez créée à l'étape précédente.

    keytool -keystore kafka.client.keystore.jks -certreq -file client-cert-sign-request -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
  7. Ouvrez le fichier client-cert-sign-request et assurez-vous qu'il commence par -----BEGIN CERTIFICATE REQUEST----- et se termine par -----END CERTIFICATE REQUEST-----. Si elle commence par -----BEGIN NEW CERTIFICATE REQUEST-----, supprimez le mot NEW (et l'espace unique qui le suit) du début et de la fin du fichier.

  8. Sur une machine sur laquelle vous l'avez AWS CLI installé, exécutez la commande suivante pour signer votre demande de certificat. Remplacez Private-CA-ARN par l'ARN de votre PCA. Vous pouvez modifier la valeur de validité si vous le souhaitez. Ici, nous utilisons 300 comme exemple.

    aws acm-pca issue-certificate --certificate-authority-arn Private-CA-ARN --csr fileb://client-cert-sign-request --signing-algorithm "SHA256WITHRSA" --validity Value=300,Type="DAYS"

    Enregistrez l'ARN de certificat fourni dans la réponse.

    Note

    Pour récupérer votre certificat client, utilisez la commande acm-pca get-certificate et spécifiez l'ARN de votre certificat. Pour plus d'informations, consultez get-certificate dans la Référence des commandes AWS CLI .

  9. Exécutez la commande suivante pour obtenir le certificat Autorité de certification privée AWS signé pour vous. Remplacez Certificate-ARN par l'ARN obtenu à partir de la réponse à la commande précédente.

    aws acm-pca get-certificate --certificate-authority-arn Private-CA-ARN --certificate-arn Certificate-ARN
  10. À partir du résultat JSON de l'exécution de la commande précédente, copiez les chaînes associées à Certificate et CertificateChain. Collez ces deux chaînes dans un nouveau fichier nommé signed-certificate-from-acm. Collez la chaîne associée à Certificate en premier, suivie de la chaîne associée à CertificateChain. Remplacez les caractères \n par de nouvelles lignes. Voici la structure du fichier après avoir collé le certificat et la chaîne de certificats.

    -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
  11. Exécutez la commande suivante sur l’ordinateur client pour ajouter ce certificat à votre magasin de clés afin que vous puissiez le présenter lorsque vous parlez aux agents MSK.

    keytool -keystore kafka.client.keystore.jks -import -file signed-certificate-from-acm -alias Example-Alias -storepass Your-Store-Pass -keypass Your-Key-Pass
  12. Créez un fichier nommé client.properties avec les contenus suivants. Ajustez les emplacements du magasin de confiance et du magasin de clés aux chemins d'accès où vous avez enregistré kafka.client.truststore.jks. Remplacez la version de votre client Kafka par les espaces réservés {VOTRE VERSION KAFKA}.

    security.protocol=SSL ssl.truststore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.truststore.jks ssl.keystore.location=/tmp/kafka_2.12-{YOUR KAFKA VERSION}/kafka.client.keystore.jks ssl.keystore.password=Your-Store-Pass ssl.key.password=Your-Key-Pass

Pour produire et consommer des messages à l'aide de l'authentification

  1. Exécutez la commande suivante pour créer une rubrique. Le fichier nommé client.properties est celui que vous avez créé lors de la procédure précédente.

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBroker-String --replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties
  2. Exécutez la commande suivante pour démarrer un producteur de console. Le fichier nommé client.properties est celui que vous avez créé lors de la procédure précédente.

    <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --producer.config client.properties
  3. Dans une nouvelle fenêtre de commande sur votre ordinateur client, exécutez la commande suivante pour démarrer un consommateur de console.

    <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBroker-String --topic ExampleTopic --consumer.config client.properties
  4. Tapez des messages dans la fenêtre du producteur et regardez-les apparaître dans la fenêtre du consommateur.