Configurer la rotation automatique pour les secrets non liés à la base de données AWS Secrets Manager - 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.

Configurer la rotation automatique pour les secrets non liés à la base de données AWS Secrets Manager

Ce didacticiel explique comment configurer les secrets autres que Rotation par fonction Lambda 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).

Avertissement

Pour activer la rotation automatique, vous devez être autorisé à créer un rôle d'IAMexécution 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.

Étape 1 : Création d'une fonction de rotation générique

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, consultezFonctions de rotation Lambda.

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 AWS Serverless Application Repository 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 dans le Guide de référence AWS général.

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

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

      3. Dans le champ de recherche sous Applications publiques, entrezSecretsManagerRotationTemplate.

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

      5. Choisissez le SecretsManagerRotationTemplatecarreau.

      6. 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 comprishttps://. Pour obtenir la liste des points de terminaison , consultez AWS Secrets Manager points de terminaison.

        • Pour placer la fonction Lambda dans unVPC, incluez vpcSecurityGrouples identifiants et. vpcSubnetIds

      7. Choisissez Deploy (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.

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

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

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

        3. Pour Runtime (Environnement d'exécution), choisissez Python 3.9.

        4. Choisissez Créer une fonction.

Étape 2 : écrire le code de la fonction de rotation

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, consultezFonctions de rotation Lambda. Vous pouvez également utiliser le Modèles de fonctions de rotation comme référence.

Étape 3 : Configuration du secret pour la rotation

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

  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). 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 Calendrier de rotation, entrez votre calendrier dans le UTC fuseau horaire dans le générateur d'expressions de calendrier ou sous forme d'expression de calendrier. 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 plus d’informations, consultez Horaires de rotation.

    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.

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

    6. Choisissez Enregistrer.

Étape 4 : Autoriser la fonction de rotation à accéder à Secrets Manager et à votre base de données ou à votre service

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 KMS clé autre que le Clé gérée par AWS aws/secretsmanager, vous devez autoriser le rôle d'exécution Lambda à utiliser la clé. Vous pouvez utiliser le contexte de ARN chiffrement secret pour limiter l'utilisation de la fonction de déchiffrement, de sorte que le rôle de la fonction de rotation n'a accès qu'au déchiffrement du secret qu'il est chargé de faire pivoter. Pour obtenir des exemples de stratégie, consultez Autorisations de rotation.

Pour obtenir des instructions, consultez Rôle d'exécution Lambda dans le Guide du développeur AWS Lambda .

Étape 5 : Autoriser Secrets Manager à invoquer la fonction de rotation

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 aws:SourceAccount afin d'éviter que Lambda ne soit utilisé comme un adjoint confus. 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 aws:SourceArnet les clés de condition aws:SourceAccountglobale. Toutefois, si vous incluez la aws:SourceArn condition dans votre politique de fonction de rotation, celle-ci ne peut être utilisée que pour faire pivoter le secret spécifié par celle-ciARN. 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.

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

{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "secretsmanager.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Condition": { "StringEquals": { "AWS:SourceAccount": "123456789012" } }, "Resource": "LambdaRotationFunctionARN" } ] }

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

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. veuillez consulter Accès au réseau pour la fonction de rotation Lambda.

Étapes suivantes

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 dansMettre immédiatement un secret en rotation.

Si la rotation échoue, voirRésoudre la rotation d'.