

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.

# Configurez la rotation automatique à l'aide du AWS CLI
<a name="rotate-secrets_turn-on-cli"></a>

Ce didacticiel explique comment procéder à la configuration [Rotation par fonction Lambda](rotate-secrets_lambda.md) à l'aide du AWS CLI. Lorsque vous effectuez une rotation de secret, vous mettez à jour les informations d'identification dans le secret et dans la base de données ou le service que le secret concerne. 

Vous pouvez également configurer la rotation à l'aide de la console. Pour les secrets de base de données, consultez [Rotation automatique pour les secrets de base de données (console)](rotate-secrets_turn-on-for-db.md). Pour tout autre type de secrets, consultez [Rotation automatique pour les secrets non liés à la base de données (console)](rotate-secrets_turn-on-for-other.md).

Pour configurer la rotation à l'aide du AWS CLI, si vous faites pivoter un secret de base de données, vous devez d'abord choisir une stratégie de rotation. Si vous choisissez la stratégie des utilisateurs en alternance, vous devez stocker un secret distinct avec les informations d'identification d'un super-utilisateur de la base de données. Ensuite, vous écrivez le code de la fonction de rotation. Secrets Manager fournit des modèles de base pour écrire votre fonction. Vous créez ensuite une fonction Lambda avec votre code et définissez des autorisations pour la fonction Lambda et le rôle d'exécution Lambda. L'étape suivante consiste à s'assurer que la fonction Lambda peut accéder à la fois à Secrets Manager et à votre base de données ou à votre service via le réseau. Enfin, vous configurez le secret de la rotation.

**Topics**
+ [Prérequis pour les secrets de base de données : Choisissez une stratégie de rotation](#rotate-secrets_turn-on-cli_step1)
+ [Étape 1 : Écrire le code de la fonction de rotation](#rotate-secrets_turn-on-cli_write)
+ [Étape 2 : Création de la fonction Lambda](#w2aac21c11c25c15)
+ [Étape 3 : configurer l'accès au réseau](#w2aac21c11c25c17)
+ [Étape 4 : Configuration du secret pour la rotation](#w2aac21c11c25c19)
+ [Étapes suivantes](#w2aac21c11c25c21)

## Prérequis pour les secrets de base de données : Choisissez une stratégie de rotation
<a name="rotate-secrets_turn-on-cli_step1"></a>

Pour plus d'informations sur les stratégies proposées par Secrets Manager, consultez[Stratégies de rotation des fonctions Lambda](rotation-strategy.md).

### Option 1 : stratégie utilisateur unique
<a name="w2aac21c11c25c11b5"></a>

Si vous choisissez la *stratégie utilisateur unique*, vous pouvez passer à l'étape 1. 

### Option 2 : stratégie d'utilisation alternée
<a name="w2aac21c11c25c11b7"></a>

Si vous optez pour la *stratégie d'alternance des utilisateurs*, vous devez :
+ [Créez un secret et stockez-y](create_secret.md#create_secret_cli) les informations d'identification du superutilisateur de la base de données. Vous avez besoin d'un secret avec des informations d'identification de superutilisateur, car la rotation des utilisateurs permet de cloner le premier utilisateur, et la plupart des utilisateurs n'ont pas cette autorisation. 
+ Ajoutez l'ARN du secret du superutilisateur au secret d'origine. Pour de plus amples informations, veuillez consulter [Structure JSON des AWS Secrets Manager secrets](reference_secret_json_structure.md). 

Notez qu'Amazon RDS Proxy ne prend pas en charge la stratégie des utilisateurs alternatifs.

## Étape 1 : Écrire le code de la fonction de rotation
<a name="rotate-secrets_turn-on-cli_write"></a>

Pour effectuer la rotation d'un secret, vous avez besoin d'une fonction de rotation. Une fonction de rotation est une fonction Lambda que Secrets Manager appelle pour effectuer la rotation de votre secret. Pour de plus amples informations, veuillez consulter [Rotation par fonction Lambda](rotate-secrets_lambda.md). Au cours de cette étape, vous écrivez le code qui met à jour le secret et le service ou la base de données auxquels le secret est destiné.

Secrets Manager fournit des modèles pour les secrets de base de données Amazon RDS, Amazon Aurora, Amazon Redshift et Amazon DocumentDB dans. [Modèles de fonctions de rotation](reference_available-rotation-templates.md) 

**Pour écrire le code de la fonction de rotation**

1. Effectuez l’une des actions suivantes :
   + Consultez la liste des [modèles de fonctions de rotation](reference_available-rotation-templates.md). S'il y en a un qui correspond à votre stratégie de service et de rotation, copiez-le. 
   + Pour les autres types de secrets, vous écrivez votre propre fonction de rotation. Pour obtenir des instructions, veuillez consulter [Fonctions de rotation Lambda](rotate-secrets_lambda-functions.md). 

1. Enregistrez le fichier dans un fichier ZIP {{my-function.zip}} avec toutes les dépendances requises.

## Étape 2 : Création de la fonction Lambda
<a name="w2aac21c11c25c15"></a>

Au cours de cette étape, vous allez créer la fonction Lambda à l'aide du fichier ZIP que vous avez créé à l'étape 1. Vous définissez également le [rôle d'exécution Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html), qui est le rôle que Lambda assume lorsque la fonction est invoquée.

**Pour créer une fonction de rotation Lambda et un rôle d'exécution**

1. Créez une stratégie d'approbation pour le rôle d'exécution Lambda et enregistrez-la dans un fichier JSON. Pour plus d’informations et d’exemples, consultez [Autorisations de rôle d'exécution de la fonction de rotation Lambda pour AWS Secrets Manager](rotating-secrets-required-permissions-function.md). La stratégie doit :
   + autoriser le rôle à appeler les opérations Secrets Manager sur le secret ; 
   + Autorisez le rôle à appeler le service auquel le secret est destiné, par exemple, pour créer un nouveau mot de passe. 

1. Créez le rôle d'exécution Lambda et appliquez la politique de confiance que vous avez créée à l'étape précédente en appelant. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

   ```
   aws iam create-role \
       --role-name {{rotation-lambda-role}} \
       --assume-role-policy-document file://{{trust-policy.json}}
   ```

1. Créez la fonction Lambda à partir du fichier ZIP en appelant [https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html).

   ```
   aws lambda create-function \
     --function-name {{my-rotation-function}} \
     --runtime python3.12 \
     --zip-file fileb://{{my-function.zip}} \
     --handler lambda_function.lambda_handler \
     --role arn:aws:iam::{{123456789012}}:role/service-role/{{rotation-lambda-role}}
   ```

1. Définissez une stratégie de ressources sur la fonction Lambda afin de permettre à Secrets Manager de l'invoquer en appelant [https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html).

   ```
   aws lambda add-permission \
     --function-name {{my-rotation-function}} \
     --action lambda:InvokeFunction \
     --statement-id SecretsManager \
     --principal secretsmanager.amazonaws.com \
     --source-account {{123456789012}}
   ```

## Étape 3 : configurer l'accès au réseau
<a name="w2aac21c11c25c17"></a>

Pour de plus amples informations, veuillez consulter [Accès au réseau pour la fonction AWS Lambda de rotation](rotation-function-network-access.md).

## Étape 4 : Configuration du secret pour la rotation
<a name="w2aac21c11c25c19"></a>

Pour activer la rotation automatique de votre secret, appelez [https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/rotate-secret.html](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/rotate-secret.html). Vous pouvez définir une planification de rotation avec une expression de planification `cron()` ou `rate()`, et définir la durée d'une fenêtre de rotation. Pour de plus amples informations, veuillez consulter [Horaires de rotation](rotate-secrets_schedule.md).

```
aws secretsmanager rotate-secret \
    --secret-id MySecret \
    --rotation-lambda-arn arn:aws:lambda:{{{{aws-region}}}}:{{123456789012}}:function:{{my-rotation-function}} \
    --rotation-rules "{\"ScheduleExpression\": \"{{cron(0 16 1,15 * ? *)}}\", \"Duration\": \"{{2h}}\"}"
```

## Étapes suivantes
<a name="w2aac21c11c25c21"></a>

Consultez [Résoudre les problèmes de rotation AWS Secrets Manager](troubleshoot_rotation.md).