

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
<a name="auth-to-iam-migration"></a>

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
<a name="auth-to-iam-overview"></a>

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](https://docs.aws.amazon.com//general/latest/gr/signature-version-4.html).

## Conditions préalables
<a name="auth-to-iam-prereqs"></a>

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)](in-transit-encryption.md).
+ 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](security_iam_service-with-iam.md).
+ Le rôle ou l'utilisateur IAM utilisé par votre application dispose d'une politique IAM qui autorise l'`elasticache:Connect`action pour le cache cible et l'utilisateur IAM. Pour de plus amples informations, veuillez consulter [Authentification avec IAM](auth-iam.md).
+ Aucune limite d'authentification IAM supplémentaire ne s'applique à votre application. Pour la liste complète des limitations, voir[Authentification avec IAM](auth-iam.md).

## Processus de migration
<a name="auth-to-iam-process"></a>

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
<a name="auth-to-iam-create-users"></a>

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` ou`redis`.
+ {{<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` ou`redis`.

### Étape 2 : créer et associer un groupe d'utilisateurs
<a name="auth-to-iam-user-group"></a>

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](#auth-to-iam-verify-dual).

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` ou`redis`.
+ {{<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
<a name="auth-to-iam-verify-dual"></a>

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
<a name="auth-to-iam-connect"></a>

**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](https://docs.aws.amazon.com//general/latest/gr/sigv4-signed-request-examples.html). 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, utilisez**redis-cli**.

```
valkey-cli -h {{<host>}} -p 6379 --tls
```

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

```
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
<a name="auth-to-iam-app-integration"></a>

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](auth-iam.md). Pour les autres langues, générez le jeton d'authentification IAM à l'aide du [processus de AWS signature Signature version 4](https://docs.aws.amazon.com//general/latest/gr/signature-version-4.html) et transmettez-le comme mot de passe dans la `AUTH` commande de votre client.

## Finalisation de la migration
<a name="auth-to-iam-completing"></a>

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
<a name="auth-to-iam-fallback"></a>

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
<a name="auth-to-iam-monitor"></a>

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 avec`reason=auth`.
+ `CLIENT LIST`— Vérifiez les utilisateurs connectés. Vérifiez le `user=` champ pour confirmer que les clients utilisent l'utilisateur IAM.

`ACL LOG`et `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
<a name="auth-to-iam-remove-user"></a>

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'utilisateur`default`, 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'utilisateur`default`, 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
<a name="auth-to-iam-confirm"></a>

Après avoir supprimé l'utilisateur basé sur un mot de passe du groupe d'utilisateurs, surveillez la métrique Amazon`AuthenticationFailures`. 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
<a name="auth-to-iam-rollback"></a>

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'utilisateur`default`, 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](#auth-to-iam-remove-user), 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).