

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.

# Configurer la rotation automatique pour les secrets non liés à la base de données AWS Secrets Manager
<a name="rotate-secrets_turn-on-for-other"></a>

Ce didacticiel explique comment configurer les secrets autres que [Rotation par fonction Lambda](rotate-secrets_lambda.md) ceux de base de données. La Rotation est le processus de mise à jour périodique d'un secret. 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.

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).

**Avertissement**  
Pour activer la rotation automatique, vous devez être autorisé à créer un rôle d'exécution IAM pour la fonction de rotation Lambda et à y associer une politique d'autorisation. Vous avez besoin des deux autorisations `iam:CreateRole` et `iam:AttachRolePolicy`. L'octroi de ces autorisations permet à une identité de s'octroyer toutes les autorisations.

**Topics**
+ [Étape 1 : Création d'une fonction de rotation générique](#rotate-secrets_turn-on-for-other_create)
+ [Étape 2 : écrire le code de la fonction de rotation](#rotate-secrets_turn-on-for-other_write)
+ [Étape 3 : Configuration du secret pour la rotation](#rotate-secrets_turn-on-for-other_configure)
+ [Étape 4 : Autoriser la fonction de rotation à accéder à Secrets Manager et à votre base de données ou service](#rotate-secrets_turn-on-for-other_perms)
+ [Étape 5 : Autoriser Secrets Manager à invoquer la fonction de rotation](#rotate-secrets_turn-on-for-other_perms2)
+ [Étape 6 : Configuration de l'accès au réseau pour la fonction de rotation](#rotate-secrets_turn-on-for-other_network)
+ [Étapes suivantes](#rotate-secrets_turn-on-for-other_stepnext)

## Étape 1 : Création d'une fonction de rotation générique
<a name="rotate-secrets_turn-on-for-other_create"></a>

Pour commencer, créez une fonction de rotation Lambda. Il ne contiendra pas le code nécessaire pour faire pivoter votre secret, vous l'écrirez donc ultérieurement. Pour plus d'informations sur le fonctionnement d'une fonction de rotation, consultez[Fonctions de rotation Lambda](rotate-secrets_lambda-functions.md).

Dans les régions prises en charge, vous pouvez l'utiliser AWS Serverless Application Repository pour créer la fonction à partir d'un modèle. Pour obtenir la liste des régions prises en charge, consultez les [AWS Serverless Application Repository FAQ](https://aws.amazon.com/serverless/serverlessrepo/faqs/). Dans d'autres régions, vous créez la fonction à partir de zéro et vous copiez le code du modèle dans la fonction.

**Pour créer une fonction de rotation générique**

1. Pour déterminer s'il AWS Serverless Application Repository est pris en charge dans votre région, consultez la section [AWS Serverless Application Repository Points de terminaison et quotas](https://docs.aws.amazon.com/general/latest/gr/serverlessrepo.html) dans le Guide de *référence AWS général*. 

1. Effectuez l’une des actions suivantes :
   + S'il AWS Serverless Application Repository est pris en charge dans votre région :

     1. Dans la console Lambda, choisissez **Applications**, puis **Create** application.

     1. Sur la page **Créer une application**, choisissez l'onglet **Application sans serveur**.

     1. Dans le champ de recherche sous **Applications publiques**, entrez**SecretsManagerRotationTemplate**.

     1. Sélectionnez **Afficher les applications qui créent des rôles IAM ou des politiques de ressources personnalisés**.

     1. Choisissez la vignette **SecretsManagerRotationTemplate**.

     1. Sur la page **Révision, configuration et déploiement**, dans la vignette **Paramètres de l'application**, renseignez les champs obligatoires. 
        + Pour **point de terminaison**, entrez le point de terminaison de votre région, y compris**https://**. Pour obtenir la liste des points de terminaison , consultez [AWS Secrets Manager points de terminaison](asm_access.md#endpoints).
        + ****Pour placer la fonction Lambda dans un VPC, incluez vpc et vpc. SecurityGroupIds SubnetIds****

     1. Choisissez **Déployer**.
   + S'il AWS Serverless Application Repository n'est pas pris en charge dans votre région :

     1. Dans la console Lambda, choisissez **Functions**, puis **Create** function.

     1. Sur la page **Create function** (Créer une fonction), procédez de la façon suivante :

        1. Choisissez **Créer à partir de zéro**.

        1. Dans **Function name** (Nom de la fonction), saisissez un nom pour votre fonction de rotation.

        1. Pour **Environnement d’exécution**, sélectionnez **Python 3.12**.

        1. Choisissez **Créer une fonction**.

## Étape 2 : écrire le code de la fonction de rotation
<a name="rotate-secrets_turn-on-for-other_write"></a>

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é. Pour plus d'informations sur le fonctionnement d'une fonction de rotation, y compris des conseils sur l'écriture de votre propre fonction de rotation, consultez[Fonctions de rotation Lambda](rotate-secrets_lambda-functions.md). Vous pouvez également utiliser le [Modèles de fonctions de rotation](reference_available-rotation-templates.md) comme référence.

## Étape 3 : Configuration du secret pour la rotation
<a name="rotate-secrets_turn-on-for-other_configure"></a>

Au cours de cette étape, vous définissez un calendrier de rotation pour votre secret et connectez la fonction de rotation au secret. 

**Pour configurer la rotation et créer une fonction de rotation vide**

1. Ouvrez la console Secrets Manager à l'adresse [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Sur la page **Secrets**, choisissez votre secret.

1. Sur la page **Secret details (Détails du secret)**, dans la section **Rotation configuration (Configuration de la rotation)**, choisissez **Edit rotation (Modifier la rotation)**. Dans la boîte de dialogue **Edit rotation configuration (Modifier la configuration de la rotation)**, suivez la procédure suivante :

   1. Activez **Automatic rotation** (Rotation automatique).

   1. Sous **Rotation schedule** (Planification de la rotation), saisissez votre planification dans le fuseau horaire UTC dans le **Schedule expression builder** (Générateur d'expressions de planification) ou sous la forme d'une **Schedule expression** (Expression de planification). Secrets Manager stocke votre planification sous la forme d'une expression `rate()` ou `cron()`. La fenêtre de rotation démarre automatiquement à minuit, sauf si vous spécifiez une **Start time** (Heure de début). Vous pouvez effectuer la rotation d’un secret toutes les quatre heures. Pour de plus amples informations, veuillez consulter [Horaires de rotation](rotate-secrets_schedule.md).

   1. (Facultatif) Pour **Window duration** (Durée de la fenêtre), choisissez la durée de la fenêtre pendant laquelle vous souhaitez que Secrets Manager effectue une rotation de votre secret, par exemple, **3h** pour une fenêtre de trois heures. La fenêtre ne doit pas s'étendre jusqu'à la fenêtre de rotation suivante. Si vous ne spécifiez pas **la durée de la fenêtre**, la fenêtre se ferme automatiquement au bout d'une heure si le programme de rotation est défini en heures. Pour un programme de rotation en jours, la fenêtre se ferme automatiquement à la fin de la journée. 

   1. (Facultatif) Sélectionnez **Rotate immediately when the secret is stored** (Effectuer immédiatement une rotation lorsque le secret est stocké) pour effectuer une rotation de votre secret lorsque vous enregistrez vos modifications. Si vous décochez la case, la première rotation commencera selon la planification que vous avez définie.

   1. Sous **Fonction de rotation**, choisissez la fonction Lambda que vous avez créée à l'étape 1.

   1. Choisissez **Enregistrer**.

## Étape 4 : Autoriser la fonction de rotation à accéder à Secrets Manager et à votre base de données ou service
<a name="rotate-secrets_turn-on-for-other_perms"></a>

La fonction de rotation Lambda a besoin d'une autorisation pour accéder au secret dans Secrets Manager, ainsi que pour accéder à votre base de données ou à votre service. Au cours de cette étape, vous accordez ces autorisations au rôle d'exécution Lambda. Si le secret est chiffré avec une clé KMS autre que la Clé gérée par AWS `aws/secretsmanager`, vous devez accorder au rôle d'exécution Lambda l'autorisation d'utiliser la clé. Vous pouvez utiliser le [contexte de chiffrement SecretARN](security-encryption.md#security-encryption-encryption-context) pour limiter l'utilisation de la fonction de déchiffrement, de sorte que le rôle de la fonction de rotation n'ait accès que pour déchiffrer le secret qu'il est chargé de faire pivoter. Pour obtenir des exemples de stratégie, consultez [Autorisations de rotation](rotating-secrets-required-permissions-function.md).

Pour obtenir des instructions, consultez [Rôle d'exécution Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) dans le *Guide du développeur AWS Lambda *.

## Étape 5 : Autoriser Secrets Manager à invoquer la fonction de rotation
<a name="rotate-secrets_turn-on-for-other_perms2"></a>

Pour permettre à Secrets Manager d'invoquer la fonction de rotation selon le calendrier de rotation que vous avez défini, vous devez `lambda:InvokeFunction` autoriser le responsable du service Secrets Manager dans la politique de ressources de la fonction Lambda.

Dans la stratégie de ressources de votre fonction de rotation, nous vous recommandons d'inclure la clé de contexte [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) afin d'éviter que Lambda ne soit utilisé comme un [adjoint confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Pour certains AWS services, afin d'éviter toute confusion dans le scénario adjoint, il est AWS recommandé d'utiliser à la fois les clés de condition [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)et les clés de condition [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)globale. Cependant, si vous incluez la condition `aws:SourceArn` dans votre stratégie de fonction de rotation Lambda, la fonction de rotation ne peut être utilisée que pour effectuer la rotation du secret spécifié par cet ARN. Nous vous recommandons d'inclure uniquement la clé de contexte `aws:SourceAccount` afin de pouvoir utiliser la fonction de rotation pour plusieurs secrets. 

Pour attacher une stratégie de ressources à une fonction Lambda, consultez [Utilisation de stratégies basées sur les ressources pour Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html).

La politique suivante permet à Secrets Manager d'appeler une fonction Lambda.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "default",
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Service": "secretsmanager.amazonaws.com"
            },
        "Action": "lambda:InvokeFunction",
        "Condition": {
            "StringEquals": {
                "AWS:SourceAccount": "{{123456789012}}"
            }
        },
        "Resource": "arn:aws:lambda:{{us-east-1}}:{{123456789012}}:function:{{function-name}}"
    }
    ]
}
```

------

## Étape 6 : Configuration de l'accès au réseau pour la fonction de rotation
<a name="rotate-secrets_turn-on-for-other_network"></a>

Au cours de cette étape, vous autorisez la fonction de rotation à se connecter à la fois à Secrets Manager et au service ou à la base de données auxquels le secret est destiné. La fonction de rotation doit avoir accès aux deux pour pouvoir faire pivoter le secret. Consultez [Accès au réseau pour la fonction AWS Lambda de rotation](rotation-function-network-access.md).

## Étapes suivantes
<a name="rotate-secrets_turn-on-for-other_stepnext"></a>

Lorsque vous avez configuré la rotation à l'étape 3, vous définissez un calendrier pour la rotation du secret. Si la rotation échoue lorsqu'elle est planifiée, Secrets Manager essaiera de la faire plusieurs fois. Vous pouvez également démarrer une rotation immédiatement en suivant les instructions figurant dans[Mettre immédiatement un secret en rotation](rotate-secrets_now.md).

Si la rotation échoue, voir[Résolution des problèmes de rotation](troubleshoot_rotation.md).