Résoudre la rotation d'AWS Secrets Manager - AWS Secrets Manager

Résoudre la rotation d'AWS Secrets Manager

Secrets Manager utilise une fonction Lambda afin d'effectuer la rotation des secrets. Pour de plus amples informations, veuillez consulter Fonctionnement de la rotation. La fonction de rotation Lambda interagit avec la base de données ou le service auquel le secret est destiné, ainsi qu'avec Secrets Manager. Lorsque la rotation ne fonctionne pas comme prévu, vous devez avant toute chose vérifier les CloudWatch Logs.

Pour afficher les CloudWatch logs de votre fonction Lambda
  1. Ouvrez la console Secrets Manager en suivant le lien https://console.aws.amazon.com/secretsmanager/.

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

  3. Dans la page Monitor (Contrôle), choisissez Logs (Journaux), puis View logs in CloudWatch (Afficher les journaux dans CloudWatch).

    La console CloudWatch s'ouvre et affiche les journaux de votre fonction.

Aucune activité après « Found credentials in environment variables » (Informations d'identification trouvées dans les variables d'environnement)

Si rien ne se passe après « Found credentials in environment variables » (Informations d'identification trouvées dans les variables d'environnement) et que la durée de la tâche est longue, par exemple si elle dépasse le délai Lambda par défaut de 30 000 ms, il se peut que la fonction Lambda expire alors qu'elle essaie d'atteindre le point de terminaison Secrets Manager.

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 Points de terminaison AWS Secrets Manager.

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.

Aucune activité après « createSecret »

Les problèmes suivants peuvent entraîner l'arrêt de la rotation après createSecret :

Les ACL de réseau VPC n'autorisent pas le trafic HTTPS entrant et sortant.

Pour plus d'informations, consultez la rubrique Contrôle du trafic vers les sous-réseaux avec des ACL de réseau dans le Guide de l'utilisateur Amazon VPC.

La configuration du délai d'expiration de la fonction Lambda est trop courte pour effectuer la tâche.

Pour plus d'informations, consultez Configuration des options de fonction Lambda dans le Guide du développeur AWS Lambda.

Le point de terminaison d'un VPC Secrets Manager n'autorise pas les CIDR du VPC à l'entrée dans les groupes de sécurité attribués.

Pour plus d'informations, consultez la rubrique Contrôler le trafic vers les ressources à l'aide de groupes de sécurité dans le Guide de l'utilisateur Amazon VPC.

La stratégie de point de terminaison d'un VPC Secrets Manager n'autorise pas Lambda à utiliser le point de terminaison d'un VPC.

Pour de plus amples informations, veuillez consulter Utilisation d'un point de terminaison d'un VPC AWS Secrets Manager.

Le secret utilise la rotation des utilisateurs en alternance, le secret du superutilisateur est géré par Amazon RDS et la fonction Lambda ne peut pas accéder à l'API RDS.

Pour la rotation des utilisateurs en alternance lorsque le secret du superutilisateur est géré par Amazon RDS, la fonction de rotation Lambda doit pouvoir appeler le point de terminaison du service Amazon RDS pour obtenir les informations de connexion à la base de données. Nous vous recommandons de configurer un point de terminaison d'un VPC pour Amazon RDS. Pour de plus amples informations, veuillez consulter la section API Amazon RDS et points de terminaison d'un VPC d'interface dans le Guide de l'utilisateur Amazon RDS.

Erreur : « L'accès à KMS n'est pas autorisé »

Si vous voyez ClientError: An error occurred (AccessDeniedException) when calling the GetSecretValue operation: Access to KMS is not allowed, la fonction de rotation n'est pas autorisée à déchiffrer le secret à l'aide de la clé KMS qui a été utilisée pour le chiffrer. La stratégie d'autorisation peut contenir une condition qui limite le contexte de chiffrement à un secret spécifique. Pour plus d'informations sur l'autorisation requise, veuillez consulter la rubrique Déclaration de stratégie pour une clé gérée par le client.

Erreur : « Key is missing from secret JSON » (Le fichier JSON secret ne contient pas de clé)

Une fonction de rotation Lambda nécessite que la valeur de secret se trouve dans une structure JSON spécifique. Si vous voyez cette erreur, il se peut que le fichier JSON ne dispose pas d'une clé à laquelle la fonction de rotation a essayé d'accéder. Pour plus d'informations sur la structure JSON de chaque type de secret, consultez Structure JSON des AWS Secrets Manager secrets .

Erreur : « SetSecret: Unable to log into database » (SetSecret : connexion à la base de données impossible)

Les problèmes suivants peuvent entraîner cette erreur :

La fonction de rotation ne peut pas accéder à la base de données.

Si la durée de la tâche est longue, par exemple plus de 5 000 ms, il est possible que la fonction de rotation Lambda ne parvienne pas à accéder à la base de données via le réseau.

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.

Les informations d'identification contenues dans le secret sont incorrectes.

Si la durée de la tâche est courte, il se peut que la fonction de rotation Lambda ne parvienne pas à s'authentifier à l'aide des informations d'identification contenues dans le secret. Vérifiez les informations d'identification en vous connectant manuellement avec les informations contenues dans les versions AWSCURRENT et AWSPREVIOUS du secret à l'aide de la commande get-secret-value de l'AWS CLI.

La base de données utilise scram-sha-256 pour crypter les mots de passe.

Si votre base de données est Aurora PostgreSQL version 13 ou une version plus récente et utilise scram-sha-256 pour crypter les mots de passe, mais que la fonction de rotation utilise la libpq version 9 ou une version moins récente qui ne prend pas en charge scram-sha-256, la fonction de rotation ne peut pas se connecter à la base de données.

Pour déterminer quels utilisateurs de base de données utilisent le chiffrement scram-sha-256
Pour déterminer quelle version de libpq votre fonction de rotation utilise
  1. Sur un ordinateur Linux, sur la console Lambda, accédez à votre fonction de rotation et téléchargez le package de déploiement. Décompressez le fichier zip dans un répertoire de travail.

  2. Dans le répertoire de travail d'une ligne de commande, exécutez :

    readelf -a libpq.so.5 | grep RUNPATH

  3. Si vous voyez la chaîne PostgreSQL-9.4.x, ou toute version majeure inférieure à 10, cela signifie que la fonction de rotation n'est pas prise en charge scram-sha-256.

    • Sortie pour une fonction de rotation qui ne prend pas en charge scram-sha-256 :

      0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/PostgreSQL-9.4.x_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib]

    • Sortie pour une fonction de rotation prenant en charge scram-sha-256 :

      0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/PostgreSQL-10.x_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib]

Note

Si vous avez configuré la rotation automatique des secrets avant le 30 décembre 2021, votre fonction de rotation a intégré une ancienne version de libpq qui ne prend pas en charge scram-sha-256. Afin de prendre en charge scram-sha-256, vous devez recréer votre fonction de rotation.

La base de données nécessite un accès SSL/TLS.

Si votre base de données nécessite une connexion SSL/TLS, mais que la fonction de rotation utilise une connexion non chiffrée, la fonction de rotation ne peut pas se connecter à la base de données. Les fonctions de rotation pour Amazon RDS (sauf Oracle) 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.

Note

Si vous avez configuré la rotation automatique des secrets avant le 20 décembre 2021, votre fonction de rotation peut être basée sur un modèle plus ancien qui ne prenait pas en charge les protocoles SSL/TLS. Pour prendre en charge les connexions utilisant les protocoles SSL/TLS, vous devez recréer votre fonction de rotation.

Pour déterminer quand votre fonction de rotation a été créée
  1. Dans la console Secrets Manager à l'adresse https://console.aws.amazon.com/secretsmanager/, ouvrez votre secret. Dans la section Rotation configuration (Configuration de la rotation), sous Lambda rotation function (Fonction de rotation Lambda), vous pouvez voir Lambda function ARN (ARN de la fonction Lambda), par exemple, arn:aws:lambda:aws-region:123456789012:function:SecretsManagerMyRotationFunction . Copiez le nom de la fonction à partir de la fin de l'ARN. Dans l'exemple présent, il s'agit de SecretsManagerMyRotationFunction .

  2. Dans la console AWS Lambda disponible à la page https://console.aws.amazon.com/lambda/, sous Functions (Fonctions), collez le nom de votre fonction Lambda dans la zone de recherche, appuyez sur Entrée, puis sélectionnez la fonction Lambda.

  3. Dans la page des détails de la fonction, dans l'onglet Configuration, sous Tags (Balises), copiez la valeur à côté de la clé aws:cloudformation:stack-name.

  4. Dans la console AWS CloudFormation https://console.aws.amazon.com/cloudformation, sous Stacks (Piles), collez la valeur clé dans la zone de recherche, puis appuyez sur Entrée.

  5. La liste des piles est filtrée afin que seule la pile qui a créé la fonction de rotation Lambda apparaisse. Dans la colonne Created date (Date de création), affichez la date à laquelle la pile a été créée. Il s'agit de la date à laquelle la fonction de rotation Lambda a été créée.

Erreur : « Impossible d'importer le module ''lambda_function'' »

Cette erreur peut s'afficher si vous exécutez une fonction Lambda antérieure qui a été automatiquement mise à niveau de Python 3.7 vers une version plus récente de Python. Pour résoudre l'erreur, vous pouvez rétablir la version de la fonction Lambda vers Python 3.7, puis redéployer la fonction Lambda. Pour plus d'informations, veuillez consulter la rubrique Pourquoi la rotation de ma fonction Lambda Secrets Manager a-t-elle échoué avec le message d'erreur « module pg introuvable » ? dans AWS re:Post.