Je n'arrive pas à connecter mes clients producteurs, consommateurs ou connecteurs Amazon Managed Streaming pour Apache Kafka (Amazon MSK) à un cluster MSK avec l'authentification client activée. La tentative d'authentification échoue avec des erreurs.
Résolution
Erreurs d'authentification du client IAM
Échec de l'authentification, accès refusé
Si vous utilisez Gestion des identités et des accès AWS (AWS IAM) pour vous authentifier, l'un des messages d'erreur suivants peut s'afficher :
- « Connection to node -1 (b-1.your-cluster.abc123.c2.kafka.us-east-1.amazonaws.com) failed authentication due to: Access denied »
- « org.apache.kafka.common.errors.SaslAuthenticationException: Access denied »
Les erreurs précédentes se produisent lorsque les politiques d'accès, les limites d'autorisations et les politiques de contrôle des services (SCP) bloquent les utilisateurs qui ne transmettent pas l'autorisation requise.
Pour résoudre ce problème, utilisez le contrôle d'accès IAM pour vous assurer que le rôle IAM peut effectuer des opérations de cluster.
SaslAuthenticationException
L'un des messages d'erreur suivants s'affiche :
- « org.apache.kafka.common.errors.SaslAuthenticationException: Too many connects »
- « org.apache.kafka.common.errors.SaslAuthenticationException: Internal error »
Les erreurs précédentes se produisent lorsque vous exécutez votre cluster sur le type d’agent kafka.t3.small avec contrôle d'accès IAM et que vous dépassez le quota de connexion. Le type d’instance kafka.t3.small n’accepte qu’une seule connexion TCP par agent et par seconde. Lorsque vous dépassez le quota de connexion, votre test de création échoue. Pour en savoir plus, consultez la section Fonctionnement d’Amazon MSK avec IAM.
Pour résoudre ce problème, mettez à jour les valeurs des champs reconnect.backoff.ms et reconnect.backoff.max.ms à 1000 ou plus dans la configuration de l’environnement de travail Amazon MSK Connect. Puis, effectuez une mise à niveau vers un type d’instance d’agent plus important, tel que kafka.m5.large. Pour plus d'informations, consultez la section Dimensionner correctement votre cluster : Nombre de partitions par agent standard.
Erreurs d'authentification du client SASL/SCRAM
Le mécanisme SASL du client n'est pas activé
L'un des messages d'erreur suivants s'affiche :
- « Connection to node -1 (b-1-testcluster.abc123.c7.kafka.us-east-1.amazonaws.com/3.11.111.123:9098) failed authentication due to: Client SASL mechanism 'SCRAM-SHA-512' not enabled in the server, enabled mechanisms are [AWS_MSK_IAM] »
- « Connection to node -1 (b-1-testcluster.abc123.c7.kafka.us-east-1.amazonaws.com/3.11.111.123:9096) failed authentication due to: Client SASL mechanism 'AWS_MSK_IAM' not enabled in the server, enabled mechanisms are [SCRAM-SHA-512] »
Les erreurs précédentes se produisent lorsque le numéro de port ne correspond pas au mécanisme SASL/SCRAM (Authentication and Security Layer/Salted Challenge Response Authentication Mechanism) figurant dans le fichier de propriétés du client dans la commande pour exécuter les opérations de cluster.
Pour communiquer avec les agents d'un cluster qui utilise l’authentification SASL, utilisez les ports 9096 pour l'accès depuis AWS et le port 9196 pour l'accès public.
Pour communiquer avec les agents qui utilisent le contrôle d'accès IAM, utilisez les ports 9098 pour l'accès depuis AWS et le port 9198 pour l'accès public.
Erreur d'authentification des informations d'identification SASL
Le message d’erreur suivant s’affiche :
« Connection to node -1 (b-3.testcluster.abc123.c2.kafka.us-east-1.amazonaws.com/10.11.111.123:9096) failed authentication due to: Authentication failed during authentication due to invalid credentials with SASL mechanism SCRAM-SHA-512 »
L'erreur précédente se produit, car les informations d'identification que vous avez utilisées ne sont pas valides. Assurez-vous d’avoir enregistré les informations d’identification de l’utilisateur dans AWS Secrets Manager et de les avoir associées au cluster MSK.
Lorsque vous accédez au cluster via le port 9096, l'utilisateur et le mot de passe dans Secrets Manager doivent être identiques aux propriétés du client.
Lorsque vous exécutez la commande get-secret-value pour récupérer les clés secrètes, assurez-vous que le mot de passe utilisé dans Secrets Manager ne contient pas de caractères spéciaux.
ClusterAuthorizationException
Le message d’erreur suivant s’affiche :
« org.apache.kafka.common.errors.ClusterAuthorizationException: Request Request(processor=11, connectionId=INTERNAL_IP-INTERNAL_IP-0, session=Session(User:ANONYMOUS,/INTERNAL_IP), listenerName=ListenerName(REPLICATION_SECURE), securityProtocol=SSL, buffer=null) is not authorized »
L'erreur précédente se produit lorsque vous activez l'authentification SASL/SCRAM pour votre cluster MSK et que vous définissez resourceType sur CLUSTER et operation sur CLUSTER_ACTION dans les listes de contrôle d'accès (ACL) de votre cluster.
Le cluster MSK ne prend pas en charge les paramètres précédents car ceux-ci empêchent la réplication interne d'Apache Kafka. L'identité des agents apparaît comme ANONYME pour la communication entre les agents. Si votre cluster doit prendre en charge les ACL et utiliser l'authentification SASL/SCRAM, autorisez l'utilisateur ANONYME à utiliser l’opération TOUT.
Pour les clusters ZooKeeper, exécutez la commande suivante pour concéder à l’utilisateur ANONYME l’opération TOUT :
./kafka-acls.sh --authorizer-properties zookeeper.connect=example-ZookeeperConnectString --add --allow-principal User:ANONYMOUS --operation ALL --cluster
Pour les clusters en mode KRaft, exécutez la commande suivante pour concéder à l’utilisateur ANONYME l’opération TOUT :
./kafka-acls.sh --bootstrap-server BootstrapBrokerString --command-config client.properties --add --allow-principal User:ANONYMOUS --operation All --cluster
Informations connexes
Comment puis-je résoudre les erreurs qui s’affichent lorsque j'essaie de me connecter à mon cluster Amazon MSK ?