Passer au contenu

Comment résoudre l'erreur « invalid username-password pair or user is disabled » lorsque je me connecte à mon cluster ElastiCache avec l'authentification IAM ?

Lecture de 7 minute(s)
0

Lorsque j'utilise l'authentification Gestion des identités et des accès AWS (AWS IAM) pour me connecter à mon cluster Amazon ElastiCache Valkey et Redis OSS, le message d'erreur « AuthenticationError: invalid username-password pair or user is disabled » s’affiche.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Créer des utilisateurs

Procédez comme suit :

  1. Ouvrez la console ElastiCache.
  2. Dans Configurations, choisissez Gestion des utilisateurs.
  3. Sélectionnez Créer un utilisateur, puis saisissez les informations suivantes :
    Dans ID utilisateur, entrez un nom d'utilisateur.
    Dans Nom d’utilisateur, saisissez un nom d'utilisateur.
    Remarque : Pour les utilisateurs IAM, l'ID utilisateur et le nom d'utilisateur doivent être identiques et en minuscules.
    Sélectionnez votre moteur dans la liste déroulante.
    Dans Mode d'authentification, sélectionnez Authentification IAM.
    Dans le champ Chaîne d’accès, saisissez on ~* +@all.
    Remarque : Pour permettre à un utilisateur actif d'accéder à toutes les touches et commandes disponibles, utilisez la chaîne d’accès on ~*+@all. Il est recommandé de créer des chaînes d'accès restrictives qui fournissent uniquement les autorisations dont vos utilisateurs ont besoin. Pour plus d'informations, consultez la section Spécifier des autorisations à l'aide d'une chaîne d'accès.
  4. Sélectionnez Créer.

Créer des groupes d'utilisateurs

Procédez comme suit :

  1. Ouvrez la console ElastiCache.
  2. Dans Configurations, choisissez Gestion des groupes d'utilisateurs.
  3. Sélectionnez Créer un groupe d'utilisateurs.
  4. Dans ID du groupe d'utilisateurs, entrez l'ID du groupe d'utilisateurs.
  5. Sélectionnez votre moteur dans la liste déroulante.
  6. Pour la section Utilisateurs sélectionnés, choisissez Gérer.
  7. Dans la liste d’utilisateurs, sélectionnez l'utilisateur que vous avez créé précédemment.
    Important : Si vous choisissez Redis pour le moteur, sélectionnez l'utilisateur nommé Par défaut. ElastiCache crée automatiquement un utilisateur par défaut avec toutes les autorisations d'accès Redis qui ne nécessite pas de mot de passe pour l'authentification. Pour modifier les paramètres utilisateur par défaut, consultez la section Création d'utilisateurs et de groupes d'utilisateurs à l'aide de la console et de l'interface de ligne de commande.
  8. Sélectionnez Créer.

Autoriser l’authentification IAM

Activez le chiffrement en transit (TLS) sur votre cluster ElastiCache.

Configurer le contrôle d'accès basé sur les rôles pour votre cluster

Procédez comme suit :

  1. Ouvrez la console ElastiCache.
  2. Dans la liste de clusters, sélectionnez votre cluster.
  3. Choisissez Actions, puis Modifier.
  4. Dans Contrôle d'accès, choisissez Liste de contrôle d'accès des groupes d'utilisateurs, puis sélectionnez votre groupe d'utilisateurs.
  5. Choisissez Prévisualiser les modifications.
  6. Sélectionnez Enregistrer.

Configurer votre politique IAM

Ajoutez l'action elasticache:Connect à l'identité IAM que vous utilisez pour vous connecter au cluster ElastiCache. Exemple de politique IAM :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticache:Connect"
      ],
      "Resource": [
        "AWS_RESOURCE_ARN_1",
        "AWS_RESOURCE_ARN_2"
      ]
    }
  ]
}

Remarque : Remplacez AWS_RESOURCE_ARN_1 par l’Amazon Resource Name (ARN) de votre cluster ElastiCache Valkey ou Redis OSS, et remplacez AWS_RESOURCE_ARN_2 par l'ARN de votre utilisateur IAM pour ElastiCache.

Puis, associez le rôle IAM à l'instance Amazon Elastic Compute Cloud (Amazon EC2) ou à la fonction AWS Lambda qui se connecte au cluster ElastiCache. Pour plus d'informations, consultez la section Authentification avec IAM.

Remarque : Si votre politique IAM est correcte mais que l'erreur AuthenticationError persiste, vérifiez les restrictions des autres types de politiques de votre organisation. Pour plus d'informations, consultez la section Autres types de politiques dans Gestion de l'accès à l'aide de politiques.

Vérifier la connectivité réseau

Vérifiez la connectivité réseau entre votre cluster ElastiCache et la ressource cliente.

Générer un jeton d'authentification

Si vous utilisez une authentification IAM pour vous connecter à vos clusters ElastiCache, utilisez un jeton d'authentification au lieu d'un mot de passe. Le jeton d'authentification IAM est valide pendant 15 minutes.

Pour les connexions de longue durée, il est recommandé d'utiliser un client Valkey ou Redis OSS qui prend en charge une interface de fournisseur d'informations d'identification. Pour prolonger une connexion de 12 heures, envoyez un message AUTH ou HELLO avec un nouveau jeton.

Pour générer un jeton d'authentification IAM et vous connecter à votre cluster ElastiCache, procédez comme suit :

  1. Configurez l'instance Amazon EC2 pour exécuter l'application de démonstration. Pour obtenir des instructions, consultez l'application de démonstration d'authentification Elasticache IAM sur le site Web de GitHub.

  2. Pour générer le jeton lorsque vous utilisez l'application de démonstration, exécutez la commande Java CLI suivante :

    java -cp target/ElastiCacheIAMAuthDemoApp-1.0-SNAPSHOT.jar \
    com.amazon.elasticache.IAMAuthTokenGeneratorApp --region REGION --replication-group-id REPLICATION-GROUP-ID --user-id USER-ID

    Remarque : Remplacez REGION par votre région AWS, REPLICATION-GROUP-ID par l'ID de votre groupe de réplication ElastiCache et USER-ID par votre ID utilisateur IAM pour ElastiCache.

  3. Utilisez le jeton comme mot de passe pour vous connecter au cluster ElastiCache. Vous pouvez utiliser la CLI Valkey ou Redis ou ses bibliothèques d'API clientes pour vous connecter à votre cluster ElastiCache.
    Exemple de commande CLI Valkey :

    valkey-cli -h PRIMARY-ENDPOINT -p 6379 --tls -c --user USER ID -a TEMPORARY-SECURITY-CREDENTIAL

    Exemple de commande CLI Redis :

    redis6-cli -h PRIMARY-ENDPOINT -p 6379 --tls -c --user USER-ID -a TEMPORARY-SECURITY-CREDENTIAL

    Remarque : Remplacez PRIMARY-ENDPOINT par le point de terminaison principal de votre cluster ElastiCache, USER-ID par votre ID utilisateur IAM et TEMPORARY-SECURITY-CREDENTIAL par votre jeton d'authentification IAM.

    Important : Lorsque vous utilisez les commandes valkey-cli ou redis-cli, vous devez inclure les arguments --tls et -a. Si vous ne fournissez pas ces arguments ou si vous entrez des informations d'identification incorrectes, vous recevez un message d'erreur NOAUTH ou AUTH failed. Si vous utilisez les commandes valkey-cli ou redis-cli avec uniquement l'argument --tls, utilisez AUTH user-id temporary-security-credential après vous être connecté pour terminer l'authentification.

    Exemple de client Lettuce Redis OSS :

    RedisURI redisURI = RedisURI.builder()
                .withHost(CACHE-NAME)
                .withPort(6379)
                .withSsl(true)
                .withAuthentication(USER-ID, TEMPORARY-SECURITY-CREDENTIAL)
                .build();
    return RedisClient.create(redisURI);

Examiner les composants de votre configuration client Redis OSS ou Valkey

Vérifiez les configurations suivantes dans votre client Redis OSS ou Valkey :

  • Votre client Valkey ou Redis OSS utilise le port et le point de terminaison de cluster ElastiCache appropriés.
  • Votre client Valkey ou Redis OSS prend en charge le protocole SSL/TLS.
  • Votre nom d'utilisateur est un utilisateur IAM activé pour ElastiCache.
  • Vous disposez de la dernière version du client Valkey ou Redis OSS qui correspond à la configuration, au type de moteur et aux paramètres de version de votre cluster ElastiCache. Les versions de client obsolètes ou incompatibles entraînent des erreurs d'authentification.
  • Vous avez configuré les paramètres de délai d'expiration du client en fonction de vos besoins. Des paramètres de délai d'expiration incorrects peuvent mettre fin prématurément aux connexions et provoquer des erreurs d'authentification.

Vérifier les métriques Amazon CloudWatch

Utilisez les métriques Amazon CloudWatch pour surveiller l'état et l'activité de votre cluster ElastiCache. Pour identifier les problèmes d'authentification, il est recommandé de surveiller les métriques suivantes :

  • Vérifiez vos métriques Connections, telles que CurrConnections et NewConnections. Une diminution du nombre de nouvelles connexions signifie que des erreurs d'authentification ont provoqué l'échec de la tentative de connexion. ElastiCache utilise de 2 à 6 connexions pour surveiller le cluster dans chaque cas. Pour plus d'informations, consultez la section Métriques pour Valkey et Redis OSS.
  • Vérifiez IAMAuthenticationExpirations pour surveiller les jetons d'authentification IAM expirés susceptibles d'entraîner un échec de connexion.
  • Consultez IAMAuthenticationThrottling pour connaître le nombre de tentatives d'authentification avec des informations d'identification IAM qu'ElastiCache a limitées.

Informations connexes

Simplifier la gestion de l'accès aux clusters Amazon ElastiCache for Redis avec IAM

Application de démonstration d'authentification IAM ElastiCache sur le site Web de GitHub

Comment se connecter à Redis à l'aide du fournisseur d'informations d'identification ElastiCache IAM sur le site Web de Redisson

AWS OFFICIELA mis à jour il y a un an