

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.

# Déplacez les informations d'identification codées en dur vers AWS Secrets Manager
<a name="hardcoded-db-creds"></a>

Si vous avez des informations d'identification de base de données en texte brut dans votre code, nous vous recommandons de les déplacer vers Secrets Manager, puis de les faire tourner immédiatement. Le déplacement des informations d'identification vers Secrets Manager résout le problème de la visibilité des informations d'identification par toute personne qui voit le code, car à l'avenir, votre code récupère les informations d'identification directement depuis Secrets Manager. La rotation du secret met à jour le mot de passe, puis révoque le mot de passe actuellement codé en dur pour qu'il ne soit plus valide. 

Pour les bases de données Amazon RDS, Amazon Redshift et Amazon DocumentDB, suivez les étapes de cette page pour déplacer les informations d'identification codées en dur vers Secrets Manager. Pour d'autres types d'informations d'identification et d'autres secrets, consultez [Déplacez les secrets codés en dur vers AWS Secrets Manager](hardcoded.md).

Avant de commencer, déterminez qui a besoin d'accéder au secret. Nous vous recommandons d'utiliser deux rôles IAM pour gérer les autorisations d'accès à votre secret :
+ Un rôle qui gère les secrets de votre organisation. Pour de plus amples informations, veuillez consulter [Secrets Manager](auth-and-access.md#auth-and-access_admin). Vous allez créer et faire tourner le secret à l'aide de ce rôle.
+ *RoleToRetrieveSecretAtRuntime*Dans ce didacticiel, un rôle qui peut utiliser les informations d'identification lors de l'exécution. Votre code assume ce rôle pour récupérer le secret.

**Topics**
+ [Étape 1 : créer le secret](#hardcoded-db-creds_step2)
+ [Étape 2 : mettre à jour votre code](#hardcoded-db-creds_step3)
+ [Étape 3 : effectuer la rotation du secret](#hardcoded-db-creds_step5)
+ [Étapes suivantes](#hardcoded-db-creds_nextsteps)

## Étape 1 : créer le secret
<a name="hardcoded-db-creds_step2"></a>

La première étape consiste à copier les informations d'identification codées en dur existantes dans un secret dans Secrets Manager. Pour la latence la plus faible, stockez le secret dans la même région que la base de données. 

**Pour créer un secret**

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

1. Choisissez **Store a new secret** (Stocker un nouveau secret).

1. Sur la page **Choose secret type** (Choisir un type de secret), procédez comme suit :

   1. Pour **Secret type** (Type de secret), choisissez le type d'informations d'identification de base de données à stocker :
      + **Bases de données Amazon RDS**
      + **Base de données Amazon DocumentDB**
      + Entrepôt de **données Amazon Redshift**.
      + Pour d'autres types de secrets, consultez [Remplacer les secrets codés en dur](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html).

   1. Pour **Informations d'identification**, saisissez les informations d'identification codées en dur existantes de la base de données.

   1. Pour **Encryption key** (clé de cryptage), choisissez **aws/secretsmanager** pour utiliser la Clé gérée par AWS pour Secrets Manager. L'utilisation de cette clé n'entraîne aucun coût. Vous pouvez également utiliser votre propre clé gérée par le client, par exemple pour [accéder au secret d'un autre Compte AWS](auth-and-access_examples_cross.md). Pour plus d'informations sur les coûts d'utilisation d'une clé gérée par le client, consultez [Tarification](intro.md#asm_pricing).

   1. Pour **Database** (Base de données), choisissez votre base de données.

   1. Choisissez **Suivant**.

1. Sur la page **Configure secret** (Configurer le secret), procédez comme suit :

   1. Saisissez un **Secret name** (Nom de secret) descriptif et une **Description**. 

   1. Dans **Resource permissions** (Autorisations des ressources), choisissez **Edit permissions** (Modifier les autorisations). Collez la politique suivante, qui *RoleToRetrieveSecretAtRuntime* permet de récupérer le secret, puis choisissez **Enregistrer**.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/RoleToRetrieveSecretAtRuntime"
                  },
                  "Action": "secretsmanager:GetSecretValue",
                  "Resource": "*"
              }
          ]
      }
      ```

------

   1. Au bas de la page, sélectionnez **Next**.

1. Sur la page **Configure rotation** (Configurer la rotation), maintenez la rotation désactivée pour le moment. Vous l'activerez plus tard. Choisissez **Suivant**.

1. Dans la page **Review (Révision)**, passez en revue vos paramètres, puis choisissez **Store (Stocker)**.

## Étape 2 : mettre à jour votre code
<a name="hardcoded-db-creds_step3"></a>

Votre code doit assumer le rôle IAM *RoleToRetrieveSecretAtRuntime* pour pouvoir récupérer le secret. Pour plus d'informations, consultez la section [Passage à un rôle IAM (AWS API).](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html)

Ensuite, mettez à jour votre code pour récupérer le secret à partir de Secrets Manager à l'aide de l'exemple de code fourni par Secrets Manager. 

**Pour trouver l'exemple de code**

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. Faites défiler la page vers le bas jusqu'à **Sample code** (Exemple de code). Choisissez votre langue, puis copiez l'extrait de code. 

Dans votre application, supprimez les informations d'identification codées en dur et collez l'extrait de code. Selon la langue de votre code, vous devrez peut-être ajouter un appel à la fonction ou à la méthode dans l'extrait de code.

Vérifiez que votre application fonctionne comme prévu avec le secret à la place des informations d'identification codées en dur.

## Étape 3 : effectuer la rotation du secret
<a name="hardcoded-db-creds_step5"></a>

La dernière étape consiste à révoquer les informations d'identification codées en dur en faisant tourner le secret. 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 la base de données. Secrets Manager peut faire tourner automatiquement un secret pour vous selon une planification que vous définissez.

Une partie de la configuration de la rotation consiste à s'assurer que la fonction de rotation Lambda peut accéder à la fois à Secrets Manager et à votre base de données. Lorsque vous activez la rotation automatique, Secrets Manager crée la fonction de rotation Lambda dans le même VPC que votre base de données afin qu'elle ait un accès réseau à la base de données. La fonction de rotation Lambda doit également pouvoir appeler Secrets Manager pour mettre à jour le secret. Nous vous recommandons de créer un point de terminaison Secrets Manager dans le VPC afin que les appels de Lambda à Secrets Manager ne quittent pas l'infrastructure. AWS Pour obtenir des instructions, veuillez consulter [Utilisation d'un point de AWS Secrets Manager terminaison VPC](vpc-endpoint-overview.md).

**Pour activer la rotation**

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

1. 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 rotation), saisissez votre planification dans le fuseau horaire UTC. 

   1. Choisissez **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.

   1. Sous **Rotation function** (Fonction de rotation), choisissez **Create a new Lambda function** (Créer une fonction Lambda) et saisissez le nom de votre nouvelle fonction. Secrets Manager ajoute « SecretsManager » au début du nom de votre fonction.

   1. Pour **Stratégie de rotation**, choisissez **Utilisateur unique**.

   1. Choisissez **Enregistrer**.

**Pour vérifier que le secret a tourné**

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

1. Choisissez **Secrets**, puis choisissez le secret.

1. Sur la page **Secret details** (Détails secrets), faites défiler l'écran vers le bas et choisissez **Retrieve secret value** (Récupération d'une valeur de secret).

   Si la valeur secrète a changé, la rotation a réussi. Si la valeur secrète n'a pas changé, vous devez consulter [Résolution des problèmes de rotation](troubleshoot_rotation.md) les CloudWatch journaux de la fonction de rotation.

Vérifiez que votre application fonctionne comme prévu avec le secret provenant de la rotation.

## Étapes suivantes
<a name="hardcoded-db-creds_nextsteps"></a>

Après avoir supprimé un secret codé en dur de votre code, voici quelques idées à considérer pour la suite :
+ Vous pouvez améliorer les performances et réduire les coûts en mettant en cache des secrets. Pour de plus amples informations, veuillez consulter [Obtenez des secrets auprès de AWS Secrets Manager](retrieving-secrets.md).
+ Vous pouvez choisir une planification de rotation différente. Pour de plus amples informations, veuillez consulter [Horaires de rotation](rotate-secrets_schedule.md).
+ Pour trouver des secrets codés en dur dans vos applications Java et Python, nous vous recommandons [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html).