Définir la rotation automatique pour les secrets Amazon RDS, Amazon Aurora, Amazon Redshift ou Amazon DocumentDB à l'aide de la console - AWS Secrets Manager

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éfinir la rotation automatique pour les secrets Amazon RDS, Amazon Aurora, Amazon Redshift ou Amazon DocumentDB à l'aide de la console

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. Dans Secrets Manager, vous pouvez définir la rotation automatique de vos secrets de base de données.

Secrets Manager utilise des fonctions Lambda pour effectuer les rotations de secrets. Pour avoir une présentation, consultez Fonctionnement de la rotation.

Astuce

Pour certains Secrets gérés par d'autres services, vous utilisez la rotation gérée. Pour utiliser Rotation gérée, vous devez d'abord créer le secret via le service de gestion.

Pour configurer la rotation à l'aide de la console, vous devez d'abord choisir une stratégie de rotation. Vous configurez ensuite le secret pour la rotation, ce qui crée une fonction de rotation Lambda si vous n'en avez pas déjà une. La console définit également les autorisations pour le rôle d'exécution de la fonction Lambda. La dernière étape consiste à s'assurer que la fonction de rotation Lambda peut accéder à la fois à Secrets Manager et à votre base de données via le réseau.

Pour activer la rotation automatique, vous devez disposer de l'autorisation de créer le rôle d'exécution IAM et d'y attacher une politique d'autorisation. Vous avez besoin des deux autorisations iam:CreateRole et iam:AttachRolePolicy.

Avertissement

Accorder une identité à la fois iam:CreateRole et iam:AttachRolePolicy les autorisations permettent à l'identité de s'accorder des autorisations.

Étape 1 : choisir une stratégie de rotation et (éventuellement) créer un secret de super-utilisateur

Pour Amazon RDS, Amazon Redshift et Amazon DocumentDB, Secrets Manager propose deux stratégies de rotation :

Stratégie de rotation utilisateur unique

Cette stratégie met à jour les informations d'identification d'un utilisateur dans un seul secret. Pour les instances Amazon RDS Db2, étant donné que les utilisateurs ne peuvent pas modifier leurs propres mots de passe, vous devez fournir des informations d'identification d'administrateur dans un secret distinct. Il s'agit de la stratégie de rotation la plus simple, qui convient à la plupart des cas d'utilisation. Nous vous recommandons en particulier d'utiliser cette stratégie pour les informations d'identification des utilisateurs ponctuels (ad hoc) ou interactifs.

Lorsque le secret effectue une rotation, les connexions de base de données ouvertes ne sont pas supprimées. Pendant la rotation, peu de temps s'écoule entre le moment où le mot de passe dans la base de données change et le moment où le secret est mis à jour. Pendant cette durée, le risque que la base de données refuse les appels utilisant les informations d'identification mises en rotation est faible. Pour pallier ce risque, vous pouvez utiliser une stratégie de nouvelle tentative appropriée. Après la rotation, les nouvelles connexions utilisent les nouvelles informations d'identification.

Stratégie de rotation des utilisateurs en alternance

Cette stratégie met à jour les informations d'identification de deux utilisateurs dans un seul secret. Vous créez le premier utilisateur et lors de la première rotation, la fonction de rotation le clone pour créer le second utilisateur. Chaque fois que le secret effectue une rotation, la fonction de rotation alterne l'utilisateur dont elle met à jour le mot de passe. Comme la plupart des utilisateurs n'ont pas l'autorisation de se cloner eux-mêmes, vous devez fournir les informations d'identification pour un superuser dans un autre secret. Nous recommandons d'utiliser la stratégie de rotation d'utilisateur unique lorsque les utilisateurs clonés de votre base de données ne disposent pas des mêmes autorisations que l'utilisateur d'origine, ainsi que pour les informations d'identification des utilisateurs ponctuels (ad hoc) ou interactifs.

Cette stratégie est appropriée pour les bases de données avec modèles d'autorisations où un rôle possède les tables de base de données et un second rôle est autorisé à accéder aux tables de la base de données. Elle convient également aux applications qui requièrent une haute disponibilité. Si une application récupère le secret pendant la rotation, elle obtient quand même un ensemble d'informations d'identification valide. Après la rotation, les informations d'identification user et user_clone sont valides. Il y a même moins de chances que les applications obtiennent un refus pendant ce type de rotation qu'avec la rotation utilisateur unique. Si la base de données est hébergée sur une batterie de serveurs où la propagation de la modification du mot de passe à tous les serveurs prend du temps, la base de données risque de refuser les appels utilisant les nouvelles informations d'identification. Pour pallier ce risque, vous pouvez utiliser une stratégie de nouvelle tentative appropriée.

Secrets Manager crée l'utilisateur cloné avec les mêmes autorisations que l'utilisateur d'origine. Si vous modifiez les autorisations de l'utilisateur d'origine après la création du clone, vous devez également modifier les autorisations de l'utilisateur cloné.

Important

Si vous choisissez la stratégie des utilisateurs en alternance, vous devez Création d'un secret de base de données et y stocker les informations d'identification du super-utilisateur de la base de données. Vous avez besoin d'un code secret avec les informations d'identification du super-utilisateur, car la rotation clone le premier utilisateur, et la plupart des utilisateurs ne disposent pas de cette autorisation.

Étape 2 : configurer la rotation et créer une fonction de rotation

Les fonctions de rotation pour Amazon RDS (sauf Oracle et Db2) et Amazon DocumentDB utilisent automatiquement le protocole SSL (Secure Socket Layer) ou le protocole TLS (Transport Layer Security) pour se connecter à votre base de données, si elle est disponible. Sinon, elles utilisent une connexion non chiffrée.

Pour activer la rotation d'un secret Amazon RDS, Amazon DocumentDB ou Amazon Redshift
  1. Ouvrez la console Secrets Manager en suivant le lien https://console.aws.amazon.com/secretsmanager/.

  2. Sur la page Secrets, choisissez votre secret.

  3. Sur la page Secret details (Détails du secret), dans la section Rotation configuration (Configuration de la rotation), choisissez Edit rotation (Modifier la rotation).

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

    2. 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 Expressions de planification.

    3. (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.

    4. (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.

      Si la rotation échoue, par exemple parce que les étapes 3 et 4 ne sont pas encore terminées, Secrets Manager tente à nouveau le processus de rotation plusieurs fois.

    5. Sous Rotation function (Fonction de rotation), effectuez l'une des actions suivantes :

      • Sélectionnez Create a new Lambda function (Créer une fonction Lambda) et saisissez le nom de votre fonction. Secrets Manager ajoute SecretsManager au début du nom de votre fonction. Secrets Manager crée la fonction en se basant sur le modèle approprié et définit les autorisations nécessaires pour le rôle d'exécution Lambda.

      • Choisissez Use an existing Lambda function (Utiliser une fonction Lambda existante) pour réutiliser une fonction de rotation que vous avez utilisée pour un autre secret. Les fonctions de rotation répertoriées sous Recommended VPC configurations (Configurations de VPC recommandées) ont le même VPC et le même groupe de sécurité que la base de données, ce qui permet à la fonction d'accéder à la base de données.

    6. Pour la Stratégie de rotation, choisissez la stratégie Utilisateur unique ou Utilisateurs en alternance. Pour de plus amples informations, veuillez consulter Étape 1 : choisir une stratégie de rotation et (éventuellement) créer un secret de super-utilisateur.

  5. Choisissez Save (Enregistrer).

Étape 3 : (facultative) définir des conditions d'autorisation supplémentaires pour la fonction de rotation

Dans la stratégie de ressources de votre fonction de rotation, nous vous recommandons d'inclure la clé de contexte aws:SourceAccount afin d'éviter que Lambda ne soit utilisé comme un adjoint confus. Pour certains services AWS, afin d'éviter le scénario de l'adjoint confus, AWS vous recommande d'utiliser les deux clés de condition globales aws:SourceArn et aws:SourceAccount. 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 mettre à jour la stratégie de ressources de votre fonction de rotation
  1. Dans la console Secrets Manager, choisissez votre secret, puis sur la page des détails, sous Rotation configuration (Configuration de la rotation), choisissez la fonction de rotation Lambda. La console Lambda s'ouvre.

  2. Suivez les instructions de la rubrique Utilisation de stratégies basées sur les ressources pour Lambda pour ajouter une condition aws:sourceAccount.

    "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" } },

Si le secret est chiffré avec une clé KMS autre que la Clé gérée par AWS aws/secretsmanager, Secrets Manager accorde au rôle d'exécution Lambda l'autorisation d'utiliser la clé. Vous pouvez utiliser le contexte de chiffrement SecretARN 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 mettre à jour le rôle d'exécution de votre fonction de rotation
  1. Dans la fonction de rotation Lambda, choisissez Configuration, puis sous Rôle d'exécution, choisissez le Nom du rôle.

  2. Suivez les instructions de la rubrique Modification de la stratégie d'autorisations d'un rôle pour ajouter une condition kms:EncryptionContext:SecretARN.

    "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "SecretARN" } },

Étape 4 : configurer l'accès au réseau pour la fonction de rotation

Pour effectuer la rotation d'un secret, la fonction de rotation Lambda doit pouvoir accéder à la fois au secret et à la base de données ou au service.

Pour accéder à un secret

Votre fonction de rotation Lambda doit être en mesure d'accéder à un point de terminaison Secrets Manager. Si votre fonction Lambda peut accéder à Internet, vous pouvez utiliser un point de terminaison public. Pour trouver un point de terminaison, consultez AWS Secrets Manager points de terminaison.

Si votre fonction Lambda s'exécute dans un VPC qui ne dispose pas d'un accès Internet, nous vous recommandons de configurer les points de terminaison privés du service Secrets Manager dans votre VPC. Votre VPC peut ensuite intercepter les demandes adressées au point de terminaison régional public et les rediriger vers le point de terminaison privé. Pour de plus amples informations, veuillez consulter Point de terminaison d’un VPC.

Vous pouvez accorder à votre fonction Lambda un accès au point de terminaison public Secrets Manager en ajoutant une Passerelle NAT ou une passerelle Internet à votre VPC, ce qui permet au trafic de votre VPC d'atteindre le point de terminaison public. En procédant ainsi, votre VPC est exposé à certains risques dans la mesure où une adresse IP pour la passerelle peut être attaquée depuis le réseau Internet public.

Pour accéder à la base de données ou au service

Si votre base de données ou votre service est en cours d'exécution sur une instance Amazon EC2 dans un VPC, nous vous recommandons de configurer votre fonction Lambda de sorte qu'elle s'exécute dans le même VPC. La fonction de rotation peut alors communiquer directement avec votre service. Pour plus d'informations, consultez Configuring VPC access (Configuration de l'accès VPC).

Pour permettre à la fonction Lambda d'accéder à la base de données ou au service, vous devez vous assurer que les groupes de sécurité attachés à votre fonction de rotation Lambda autorisent les connexions sortantes vers la base de données ou le service. Vous devez également vous assurer que les groupes de sécurité attachés à votre base de données ou service autorisent les connexions entrantes depuis la fonction de rotation Lambda.

Pour la rotation des utilisateurs en alternance lorsque le secret du superutilisateur est géré par un autre service AWS, la fonction de rotation Lambda doit pouvoir appeler le point de terminaison du service pour obtenir les informations de connexion à la base de données. Nous vous recommandons de configurer un point de terminaison d'un VPC pour le service de base de données. Pour plus d'informations, consultez :

Étape 5 : (Facultatif) personnaliser la fonction de rotation

Dans de rares cas, vous souhaiterez peut-être personnaliser la fonction de rotation. Par exemple, avec une rotation des utilisateurs en alternance, Secrets Manager crée l'utilisateur cloné en copiant les paramètres de configuration d'exécution du premier utilisateur. Si vous souhaitez inclure d'autres attributs ou modifier ceux qui sont accordés à l'utilisateur cloné, vous devez mettre à jour le code de la fonction set_secret.

Autre exemple, pour Amazon RDS MySQL, lors de la rotation des utilisateurs en alternance, Secrets Manager crée un utilisateur cloné dont le nom ne dépasse pas 16 caractères. Vous pouvez modifier la fonction de rotation pour autoriser des noms d'utilisateur plus longs. MySQL version 5.7 et versions ultérieures prend en charge les noms d'utilisateur jusqu'à 32 caractères, mais Secrets Manager ajoute « _clone » (six caractères) à la fin du nom d'utilisateur. Vous devez donc limiter le nom d'utilisateur à 26 caractères maximum.

Pour ouvrir et modifier votre fonction de rotation Lambda
  1. Dans la console Secrets Manager, choisissez votre secret.

  2. Dans la section Rotate configuration (Configuration de la rotation), sous Lambda rotation function (Fonction de rotation Lambda), choisissez votre fonction de rotation.

    La console Lambda s'ouvre.

    • Pour modifier le code de la fonction, faites défiler la page jusqu'à la section Source du code.

    • Pour MySQL version 5.7 et versions ultérieures, pour la rotation alternée des utilisateurs, pour modifier la longueur maximale du nom d'utilisateur, sous Variables d'environnement, modifiez USERNAME_CHARACTER_LIMIT.

Étapes suivantes

Consultez Résoudre les problèmes de rotation AWS Secrets Manager.