View a markdown version of this page

Migration de l'authentification par mot de passe (AUTH) vers l'authentification IAM - Amazon ElastiCache

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.

Migration de l'authentification par mot de passe (AUTH) vers l'authentification IAM

Ce guide explique comment migrer votre cluster ElastiCache basé sur un nœud Amazon ou votre cache sans serveur de l'authentification par mot de passe (AUTH) vers l'authentification (IAM) sans interruption de service Gestion des identités et des accès AWS .

Note

Nous vous recommandons de tester cette migration dans un environnement hors production avant d'appliquer des modifications à votre environnement de production.

Présentation de

L'authentification IAM améliore la sécurité en éliminant le besoin de mots de passe à longue durée de vie. Au lieu de cela, les applications génèrent des jetons d'authentification de courte durée (valables jusqu'à 15 minutes) à l'aide du processus de AWS signature Signature version 4.

Conditions préalables

Avant de commencer, vérifiez les éléments suivants :

  • Votre cache exécute Redis OSS 7.0 ou version ultérieure, ou Valkey. L'authentification IAM n'est pas prise en charge sur les versions antérieures du moteur.

  • In-transit le chiffrement (TLS) est activé sur votre cache. L'authentification IAM nécessite le protocole TLS. Pour de plus amples informations, veuillez consulter ElastiCache chiffrement en transit (TLS).

  • Vous disposez des autorisations IAM nécessaires pour créer des utilisateurs et modifier des groupes d'utilisateurs. Pour de plus amples informations, veuillez consulter Comment Amazon ElastiCache travaille avec IAM.

  • Le rôle ou l'utilisateur IAM utilisé par votre application dispose d'une politique IAM qui autorise l'elasticache:Connectaction pour le cache cible et l'utilisateur IAM. Pour de plus amples informations, veuillez consulter Authentification avec IAM.

  • Aucune limite d'authentification IAM supplémentaire ne s'applique à votre application. Pour la liste complète des limitations, voirAuthentification avec IAM.

Processus de migration

Le processus de migration implique la création d'un IAM-authenticated utilisateur et d'un mot de passe, la vérification de la connectivité, puis la transition de vos applications vers l'authentification IAM.

Étape 1 : créer des utilisateurs

Créez deux ElastiCache utilisateurs pour que votre cache prenne en charge à la fois l'authentification par mot de passe et l'authentification IAM pendant la période de migration.

Création d'un utilisateur d'authentification par mot de passe

Note

Si vous avez déjà configuré un utilisateur basé sur un mot de passe, vous pouvez ignorer la création d'un nouvel utilisateur et utiliser votre utilisateur existant.

Utilisez la AWS CLI commande suivante pour créer un utilisateur basé sur un mot de passe.

Pour Linux, macOS ou Unix :

aws elasticache create-user \ --user-id <user-id> \ --user-name default \ --engine <engine> \ --passwords "<your-existing-auth-password>" \ --access-string "on ~* +@all"

Pour Windows :

aws elasticache create-user ^ --user-id <user-id> ^ --user-name default ^ --engine <engine> ^ --passwords "<your-existing-auth-password>" ^ --access-string "on ~* +@all"

Remplacez :

  • <user-id>— Un identifiant unique pour cet utilisateur.

  • <engine>— Le moteur utilisé par votre cache : valkey ouredis.

  • <your-existing-auth-password>— Le jeton AUTH actuellement configuré sur votre cache.

Création d'un IAM-authenticated utilisateur

Utilisez la AWS CLI commande suivante pour créer un IAM-authenticated utilisateur.

Pour Linux, macOS ou Unix :

aws elasticache create-user \ --user-id <iam-user-id> \ --user-name <iam-user-name> \ --authentication-mode Type=iam \ --engine <engine> \ --access-string "on ~* +@all"

Pour Windows :

aws elasticache create-user ^ --user-id <iam-user-id> ^ --user-name <iam-user-name> ^ --authentication-mode Type=iam ^ --engine <engine> ^ --access-string "on ~* +@all"

Remplacez :

  • <iam-user-id>— Un identifiant unique pour l'utilisateur IAM.

  • <iam-user-name>— Le nom d'utilisateur de l'utilisateur IAM.

  • <engine>— Le moteur utilisé par votre cache : valkey ouredis.

Étape 2 : créer et associer un groupe d'utilisateurs

Si vous avez déjà un groupe d'utilisateurs contenant votre utilisateur basé sur un mot de passe, ajoutez-le à ce groupe existant : IAM-authenticated

Pour Linux, macOS ou Unix :

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-add <iam-user-id>

Pour Windows :

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-add <iam-user-id>

Remplacez :

  • <user-group-id>— L'ID de votre groupe d'utilisateurs existant.

  • <iam-user-id>— L'ID utilisateur de l' IAM-authenticated utilisateur créé à l'étape 1.

Passez ensuite à Étape 3 : vérifier les deux méthodes d'authentification.

Sinon, créez un nouveau groupe d'utilisateurs, ajoutez les deux utilisateurs et attachez le groupe à votre cache.

Utilisez les AWS CLI commandes suivantes pour créer un groupe d'utilisateurs comprenant les deux utilisateurs :

Pour Linux, macOS ou Unix :

aws elasticache create-user-group \ --user-group-id <user-group-id> \ --engine <engine> \ --user-ids <user-id> <iam-user-id>

Pour Windows :

aws elasticache create-user-group ^ --user-group-id <user-group-id> ^ --engine <engine> ^ --user-ids <user-id> <iam-user-id>

Remplacez :

  • <user-group-id>— Un identifiant unique pour le groupe d'utilisateurs.

  • <engine>— Le moteur utilisé par votre cache : valkey ouredis.

  • <user-id>, <iam-user-id> — Les identifiants utilisateur créés à l'étape 1.

Modifiez ensuite votre cache pour utiliser le nouveau groupe d'utilisateurs.

Pour les clusters basés sur des nœuds :

Pour Linux, macOS ou Unix :

aws elasticache modify-replication-group \ --replication-group-id <replication-group-id> \ --auth-token-update-strategy DELETE \ --user-group-ids-to-add <user-group-id>

Pour Windows :

aws elasticache modify-replication-group ^ --replication-group-id <replication-group-id> ^ --auth-token-update-strategy DELETE ^ --user-group-ids-to-add <user-group-id>

Remplacez :

  • <replication-group-id>— L'ID de votre groupe de réplication.

  • <user-group-id>— L'ID du groupe d'utilisateurs que vous avez créé ci-dessus.

Pour les caches sans serveur :

Pour Linux, macOS ou Unix :

aws elasticache modify-serverless-cache \ --serverless-cache-name <serverless-cache-name> \ --user-group-id <user-group-id>

Pour Windows :

aws elasticache modify-serverless-cache ^ --serverless-cache-name <serverless-cache-name> ^ --user-group-id <user-group-id>

Remplacez :

  • <serverless-cache-name>— Le nom de votre cache sans serveur.

  • <user-group-id>— L'ID du groupe d'utilisateurs que vous avez créé ci-dessus.

Étape 3 : vérifier les deux méthodes d'authentification

Une fois l'étape 2 terminée, votre cache prend en charge les deux méthodes d'authentification. Vérifiez que les applications peuvent se connecter en utilisant les deux méthodes avant de continuer.

  • Les applications utilisant l'authentification par mot de passe peuvent continuer à se connecter avec le mot de passe.

  • Les applications configurées pour l'authentification IAM peuvent se connecter à l'aide de jetons IAM.

Étape 4 : Connectez-vous à IAM

Générer un jeton d'authentification IAM

Générez un jeton d'authentification IAM de courte durée à l'aide d'une demande AWS SigV4 pré-signée. L'exemple Python suivant illustre la génération de jetons.

import boto3 from botocore.auth import SigV4QueryAuth from botocore.awsrequest import AWSRequest cache_name = "<cache-name>" user = "<username>" region = "<region>" expires = 900 session = boto3.Session() credentials = session.get_credentials().get_frozen_credentials() req = AWSRequest( method="GET", url=f"http://{cache_name}/", params={"Action": "connect", "User": user} ) SigV4QueryAuth(credentials, "elasticache", region, expires=expires).add_auth(req) token = req.url.replace("http://", "") print(token)
Note

Le jeton généré est valide jusqu'à 15 minutes après sa création.

Connectez-vous à l'aide de valkey-cli

Connectez-vous à votre ElastiCache cache à l'aide du jeton généré. Vous pouvez utiliser l'un valkey-cli ou redis-cli l'autre ou vous connecter aux clusters Valkey. Pour les clusters Redis OSS, utilisezredis-cli.

valkey-cli -h <host> -p 6379 --tls

Pour les clusters activés en mode cluster, ajoutez l'--clusterindicateur :

valkey-cli -h <host> -p 6379 --tls --cluster

Authentifiez-vous ensuite à l'aide de la commande suivante :

AUTH <username> <token>

Remplacez :

  • <host>— Le point de terminaison de votre cache.

  • <username>— Le nom d'utilisateur de l' IAM-authenticated utilisateur.

  • <token>— Le jeton d'authentification IAM que vous avez généré.

Sortie attendue :

OK

Exécutez la commande suivante pour valider le nom d'utilisateur :

ACL WHOAMI

Étape 5 : Intégration des applications

Pour les applications Java, utilisez la chaîne de fournisseurs AWS d'informations d'identification par défaut pour générer des informations d'identification de sécurité temporaires. Pour de plus amples informations, veuillez consulter Authentification avec IAM. Pour les autres langues, générez le jeton d'authentification IAM à l'aide du processus de AWS signature Signature version 4 et transmettez-le comme mot de passe dans la AUTH commande de votre client.

Finalisation de la migration

Une fois que vos applications peuvent se connecter à l'aide de l'authentification IAM, effectuez les étapes suivantes pour finaliser la migration.

Étape 1 : Configuration de l'authentification IAM avec solution de secours

Avant de supprimer l'utilisateur basé sur un mot de passe, mettez à jour le code de votre application pour utiliser l'authentification IAM comme méthode principale tout en conservant l'utilisateur basé sur un mot de passe comme solution de secours.

Dans le code de votre application :

  • Configurez votre client pour qu'il s'authentifie à l'aide de IAM-generated jetons comme méthode principale.

  • Ajoutez un mécanisme de secours afin qu'en cas d'échec de l'authentification IAM (par exemple, en raison de l'expiration du jeton ou d'une erreur de génération), le client réessaie en utilisant les informations d'identification AUTH basées sur un mot de passe.

  • Consignez toutes les tentatives d'authentification, y compris les tentatives de secours et les nouvelles tentatives, afin de vérifier si certaines connexions sont de nouveau authentifiées par mot de passe.

Étape 2 : Surveiller et vérifier

Passez en revue les journaux de vos applications IamAuthenticationExpirations et les CloudWatch indicateurs IamAuthenticationThrottling Amazon pendant au moins 24 à 48 heures pour vous assurer que toutes les connexions se font via IAM.

Une valeur différente de zéro pour l'un ou l'autre des indicateurs justifie une enquête :

  • IamAuthenticationExpirations— Une connexion authentifiée IAM est automatiquement déconnectée au bout de 12 heures. La connexion peut être prolongée en envoyant une HELLO commande AUTH or avec un nouveau jeton d'authentification IAM.

  • IamAuthenticationThrottling— Indique un trop grand nombre de demandes d'authentification, ce qui peut signifier que votre application génère des jetons de manière trop agressive ou qu'elle présente des problèmes de regroupement de connexions.

Pour les clusters basés sur des nœuds, vous pouvez effectuer des vérifications supplémentaires au niveau du moteur :

  • ACL LOG— Vérifiez les tentatives d'authentification infructueuses. Recherchez les entrées avecreason=auth.

  • CLIENT LIST— Vérifiez les utilisateurs connectés. Vérifiez le user= champ pour confirmer que les clients utilisent l'utilisateur IAM.

ACL LOGet CLIENT LIST ne sont disponibles que sur les clusters basés sur des nœuds. Pour les déploiements ElastiCache sans serveur, fiez-vous à la journalisation côté application et aux métriques Amazon. CloudWatch

Étape 3 : supprimer l'utilisateur basé sur un mot de passe

Une fois que vous avez confirmé que toutes les applications utilisent l'authentification IAM, supprimez l'utilisateur basé sur un mot de passe du groupe d'utilisateurs.

Caches de vallée

Supprimez directement l'utilisateur basé sur un mot de passe :

Pour Linux, macOS ou Unix :

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-remove <password-user-id>

Pour Windows :

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-remove <password-user-id>

Caches Redis OSS

Pour les caches Redis OSS, le groupe d'utilisateurs doit toujours contenir un utilisateur avec le nom d'utilisateur. default Si l'utilisateur basé sur un mot de passe que vous avez créé à l'étape 1 possède le nom d'utilisateurdefault, vous devez créer un utilisateur réservé désactivé pour le remplacer avant de le supprimer :

Pour Linux, macOS ou Unix :

aws elasticache create-user \ --user-id <disabled-default-id> \ --user-name default \ --engine redis \ --no-password-required \ --access-string "off ~* -@all"

Pour Windows :

aws elasticache create-user ^ --user-id <disabled-default-id> ^ --user-name default ^ --engine redis ^ --no-password-required ^ --access-string "off ~* -@all"

Ajoutez ensuite l'utilisateur désactivé au groupe et supprimez l'utilisateur basé sur un mot de passe :

Pour Linux, macOS ou Unix :

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-add <disabled-default-id> \ --user-ids-to-remove <password-user-id>

Pour Windows :

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-add <disabled-default-id> ^ --user-ids-to-remove <password-user-id>

Si l'utilisateur basé sur un mot de passe que vous avez créé à l'étape 1 n'a pas le nom d'utilisateurdefault, vous pouvez le supprimer directement à l'aide de la même commande que celle indiquée pour les caches Valkey ci-dessus.

Remplacez :

  • <disabled-default-id>— Un identifiant unique pour l'utilisateur de l'espace réservé désactivé (Redis OSS uniquement).

  • <user-group-id>— L'ID du groupe d'utilisateurs associé à votre cache.

  • <password-user-id>— L'ID utilisateur de l'utilisateur basé sur le mot de passe à supprimer.

Note

Ne supprimez pas l'utilisateur basé sur un mot de passe après l'avoir retiré du groupe d'utilisateurs. Gardez-le disponible au cas où vous auriez besoin de revenir à l'authentification par mot de passe.

Étape 4 : Confirmer après le retrait

Après avoir supprimé l'utilisateur basé sur un mot de passe du groupe d'utilisateurs, surveillez la métrique AmazonAuthenticationFailures. CloudWatch Une valeur constante de zéro confirme qu'aucun échec d'authentification ne se produit, y compris toute tentative résiduelle basée sur un mot de passe. Définissez une CloudWatch alarme sur cette métrique pour détecter les tentatives inattendues.

Pour les clusters basés sur des nœuds, vous pouvez également vérifier à l'aide ACL LOG de et. CLIENT LIST Pour les caches sans serveur, utilisez la journalisation et les métriques côté application. CloudWatch

Procédure de rétrogradation

Re-add de l'utilisateur basé sur un mot de passe au groupe d'utilisateurs, puis restaurez l'authentification par mot de passe dans votre application pendant que vous étudiez.

Pour les caches Valkey :

Pour Linux, macOS ou Unix :

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-add <password-user-id>

Pour Windows :

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-add <password-user-id>

Pour les caches Redis OSS où l'utilisateur basé sur un mot de passe n'a pas le nom d'utilisateurdefault, utilisez la même commande ci-dessus.

Pour les caches Redis OSS dans lesquels vous avez créé un utilisateur d'espace réservé désactivéÉtape 3 : supprimer l'utilisateur basé sur un mot de passe, ajoutez l'utilisateur basé sur un mot de passe et supprimez l'utilisateur d'espace réservé désactivé en une seule opération :

Pour Linux, macOS ou Unix :

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-add <password-user-id> \ --user-ids-to-remove <disabled-default-id>

Pour Windows :

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-add <password-user-id> ^ --user-ids-to-remove <disabled-default-id>

Remplacez :

  • <user-group-id>— L'ID du groupe d'utilisateurs associé à votre cache.

  • <password-user-id>— L'ID utilisateur de l'utilisateur basé sur le mot de passe à ajouter à nouveau.

  • <disabled-default-id>— L'ID utilisateur de l'utilisateur de l'espace réservé désactivé (Redis OSS uniquement).