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 des identifiants de connexion avec AWS Secrets Manager
Vous pouvez contrôler l'accès à vos clusters Amazon MSK à l'aide d'informations de connexion stockées et sécurisées à l'aide de AWS Secrets Manager. Le stockage des informations d'identification des utilisateurs dans Secrets Manager réduit les coûts liés à l'authentification du cluster, comme l'audit, la mise à jour et la rotation des informations d'identification. Secrets Manager vous permet également de partager les informations d'identification des utilisateurs entre les clusters.
Cette rubrique contient les sections suivantes :
Comment ça marche
L'authentification des informations d'identification pour Amazon MSK utilise l'authentification SASL/SCRAM (Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism). Pour configurer l'authentification des informations d'identification de connexion pour un cluster, vous devez créer une ressource secrète dans AWS Secrets Manager et associer les informations d'identification de connexion à ce secret.
L'authentification SASL/SCRAM est définie dans RFC 5802.
Note
Lorsque vous configurez l'authentification SASL/SCRAM pour votre cluster, Amazon MSK active le chiffrement TLS pour tout le trafic entre les clients et les agents.
Configuration de l'authentification SASL/SCRAM pour un cluster Amazon MSK
Pour configurer un secret dans AWS Secrets Manager, suivez le didacticiel de création et de récupération d'un secret figurant dans le guide de l'utilisateur de AWS Secrets Manager.
Tenez compte des exigences suivantes lors de la création d'un secret pour un cluster Amazon MSK :
Choisissez Autre type de secrets (p. ex. clé d'API) pour le type de secret.
Votre nom secret doit commencer par le préfixe AmazonMSK_.
Vous devez soit utiliser une AWS KMS clé personnalisée existante, soit créer une nouvelle AWS KMS clé personnalisée pour votre secret. Secrets Manager utilise la AWS KMS clé par défaut pour un secret.
Important
Un secret créé avec la AWS KMS clé par défaut ne peut pas être utilisé avec un cluster Amazon MSK.
Vos informations d'identification de connexion doivent être au format suivant pour saisir des paires clé-valeur à l'aide de l'option Texte brut.
{ "username": "alice", "password": "alice-secret" }
Enregistrez la valeur ARN (Amazon Resource Name) de votre secret.
-
Important
Vous ne pouvez pas associer un secret de Secrets Manager à un cluster qui dépasse les limites décrites dans Dimensionnez correctement votre cluster : nombre de partitions par agent.
Si vous utilisez le AWS CLI pour créer le secret, spécifiez un ID de clé ou un ARN pour le
kms-key-id
paramètre. Ne spécifiez pas d'alias.-
Pour associer le secret à votre cluster, utilisez soit la console Amazon MSK, soit l' BatchAssociateScramSecretopération.
Important
Lorsque vous associez un secret à un cluster, Amazon MSK associe une politique de ressource au secret qui permet à votre cluster d'accéder aux valeurs secrètes que vous avez définies et de les lire. Vous ne devez pas modifier cette politique de ressource. Cela peut empêcher votre cluster d'accéder à votre secret.
L'exemple d'entrée JSON suivant pour l'opération
BatchAssociateScramSecret
associe un secret à un cluster :{ "clusterArn" : "arn:aws:kafka:us-west-2:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4", "secretArnList": [ "arn:aws:secretsmanager:us-west-2:0123456789019:secret:AmazonMSK_MyClusterSecret" ] }
Connexion à votre cluster à l'aide des informations d'identification de connexion
Après avoir créé un secret et l'avoir associé à votre cluster, vous pouvez connecter votre client au cluster. Les exemples d'étapes suivants montrent comment connecter un client à un cluster qui utilise l'authentification SASL/SCRAM, et comment produire vers et consommer à partir d'un exemple de rubrique.
Exécutez la commande suivante sur une machine sur laquelle la AWS CLI est installée, en remplaçant
ClusterArn
par l'ARN de votre cluster.aws kafka get-bootstrap-brokers --cluster-arn clusterARN
Pour créer un exemple de rubrique, exécutez la commande suivante en remplaçant
BootstrapServerString
par l'un des points de terminaison du broker que vous avez obtenus à l'étape précédente.<path-to-your-kafka-installation>
/bin/kafka-topics.sh --create --bootstrap-server BootstrapServerString --replication-factor 3 --partitions 1 --topic ExampleTopicNameSur votre ordinateur client, créez un fichier de configuration JAAS contenant les informations d'identification d'utilisateur stockées dans votre secret. Par exemple, pour l'utilisateur alice, créez un fichier appelé
users_jaas.conf
avec le contenu suivant.KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="alice-secret"; };
Utilisez la commande suivante pour exporter votre fichier de configuration JAAS en tant que paramètre d'environnement
KAFKA_OPTS
.export KAFKA_OPTS=-Djava.security.auth.login.config=
<path-to-jaas-file>
/users_jaas.confCréez un fichier nommé
kafka.client.truststore.jks
dans un répertoire./tmp
.-
Utilisez la commande suivante pour copier le fichier de stockage de clés JDK de votre dossier
cacerts
JVM dans le fichierkafka.client.truststore.jks
que vous avez créé à l'étape précédente. RemplacezJDKFolder
par le nom du dossier JDK de votre instance. Par exemple, votre dossier JDK peut être nomméjava-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64
.cp /usr/lib/jvm/
JDKFolder
/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks Dans le répertoire
bin
de votre installation d'Apache Kafka, créez un fichier de propriétés client appeléclient_sasl.properties
avec le contenu suivant. Ce fichier définit le mécanisme et le protocole SASL.security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-512 ssl.truststore.location=
<path-to-keystore-file>
/kafka.client.truststore.jksRécupérez la chaîne de votre agent d'amorçage à l'aide de la commande suivante.
ClusterArn
Remplacez-le par le Amazon Resource Name (ARN) de votre cluster :aws kafka get-bootstrap-brokers --cluster-arn
ClusterArn
À partir du résultat JSON de la commande, enregistrez la valeur associée à la chaîne nommée
BootstrapBrokerStringSaslScram
.Pour produire un exemple de rubrique que vous avez créé, exécutez la commande suivante sur votre ordinateur client. Remplacez
BootstrapBrokerStringSaslScram
par la valeur que vous avez récupérée à l'étape précédente.<path-to-your-kafka-installation>
/bin/kafka-console-producer.sh --broker-listBootstrapBrokerStringSaslScram
--topicExampleTopicName
--producer.config client_sasl.propertiesPour consommer à partir de la rubrique que vous avez créée, exécutez la commande suivante sur votre ordinateur client. Remplacez
BootstrapBrokerStringSaslScram
par la valeur que vous avez obtenue précédemment.<path-to-your-kafka-installation>
/bin/kafka-console-consumer.sh --bootstrap-serverBootstrapBrokerStringSaslScram
--topicExampleTopicName
--from-beginning --consumer.config client_sasl.properties
Utilisation des utilisateurs
Création d'utilisateurs : vous créez des utilisateurs dans votre secret sous forme de paires valeur-clé. Lorsque vous utilisez l'option Texte brut dans la console Secrets Manager, vous devez spécifier les informations d'identification de connexion au format suivant.
{ "username": "alice", "password": "alice-secret" }
Révocation de l'accès utilisateur : pour révoquer les informations d'identification d'un utilisateur lui permettant d'accéder à un cluster, nous vous recommandons de supprimer ou d'appliquer une liste de contrôle d'accès (ACL) sur le cluster, puis de dissocier le secret. Ceci pour les raisons suivantes :
La suppression d'un utilisateur ne ferme pas les connexions existantes.
Les modifications de votre secret prennent jusqu'à 10 minutes pour se propager.
Pour en savoir plus sur l'utilisation d'une liste de contrôle d'accès (ACL) avec Amazon MSK, consultez Listes de contrôle d'accès (ACL) Apache Kafka.
Pour les clusters utilisant ZooKeeper le mode, nous vous recommandons de restreindre l'accès à vos ZooKeeper nœuds afin d'empêcher les utilisateurs de modifier les ACL. Pour de plus amples informations, consultez Contrôle de l'accès à Apache ZooKeeper.
Limites
Notez les limitations suivantes lorsque vous utilisez des secrets SCRAM :
Amazon MSK prend uniquement en charge l'authentification SCRAM-SHA-512.
Un cluster Amazon MSK peut avoir jusqu'à 1 000 utilisateurs.
Vous devez utiliser un AWS KMS key avec votre secret. Vous ne pouvez pas utiliser un secret qui utilise la clé de chiffrement par défaut de Secrets Manager avec Amazon MSK. Pour plus d'informations sur la création d'une clé KMS, consultez Création de clés de chiffrements symétriques.
Vous ne pouvez pas utiliser une clé KMS asymétrique avec Secrets Manager.
Vous pouvez associer jusqu'à 10 secrets à un cluster à la fois à l'aide de cette BatchAssociateScramSecretopération.
Le nom des secrets associés à un cluster Amazon MSK doit comporter le préfixe AmazonMSK_.
Les secrets associés à un cluster Amazon MSK doivent se trouver dans le même compte Amazon Web Services et dans la même AWS région que le cluster.