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.
Cette rubrique contient les sections suivantes :
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.
-
Créez un fichier nommé
clientauthinfo.json
avec les contenus suivants. RemplacezPrivate-CA-ARN
par l'ARN de votre PCA.{ "Tls": { "CertificateAuthorityArnList": ["
Private-CA-ARN
"] } } -
Créez un fichier nommé
brokernodegroupinfo.json
comme décrit à la section Création d'un cluster à l'aide du AWS CLI. -
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. RemplacezKMS-KEY-ARN
par l'ARN de votre clé KMS. Vous pouvez définirClientBroker
surTLS
ouTLS_PLAINTEXT
.{ "EncryptionAtRest": { "DataVolumeKMSKeyId": "
KMS-Key-ARN
" }, "EncryptionInTransit": { "InCluster": true, "ClientBroker": "TLS" } }iPour de plus amples informations sur le chiffrement, veuillez consulter Chiffrement Amazon MSK.
-
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
-
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.
-
Créer une rubrique. Pour obtenir un exemple, consultez les instructions dans Étape 4 : créer une rubrique.
-
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. -
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
-
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
, etYour-Key-Pass
par des chaînes de votre choix.keytool -genkey -keystore kafka.client.keystore.jks -validity 300 -storepass
Your-Store-Pass
-keypassYour-Key-Pass
-dname "CN=Distinguished-Name
" -aliasExample-Alias
-storetype pkcs12 -
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
-storepassYour-Store-Pass
-keypassYour-Key-Pass
-
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 motNEW
(et l'espace unique qui le suit) du début et de la fin du fichier. -
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-certificatedans la Référence des commandes AWS CLI . -
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-arnCertificate-ARN
-
À partir du résultat JSON de l'exécution de la commande précédente, copiez les chaînes associées à
Certificate
etCertificateChain
. 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-----
-
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
-storepassYour-Store-Pass
-keypassYour-Key-Pass
-
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
-
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-serverBootstrapBroker-String
--replication-factor 3 --partitions 1 --topic ExampleTopic --command-config client.properties -
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-serverBootstrapBroker-String
--topic ExampleTopic --producer.config client.properties -
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-serverBootstrapBroker-String
--topic ExampleTopic --consumer.config client.properties -
Tapez des messages dans la fenêtre du producteur et regardez-les apparaître dans la fenêtre du consommateur.