Comment résoudre les erreurs « KMSAccessDeniedException » provenant d'AWS Lambda ?
Ma fonction AWS Lambda a renvoyé une erreur « KMSAccessDeniedException ».
Brève description
Mettez à jour les autorisations AWS Key Management Service (AWS KMS) de votre identité AWS Identity and Access Management (IAM) en fonction du message d'erreur.
Important : Si la clé AWS KMS et le rôle IAM appartiennent à des comptes AWS différents, la politique IAM et la politique clé AWS KMS doivent être mises à jour.
Pour plus d'informations sur les clés AWS KMS et la gestion des politiques, consultez la section Clés AWS KMS.
Résolution
Remarque : Si des erreurs surviennent lors de l’exécution des commandes de l’interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez bien la version la plus récente de l’AWS CLI.
Pour résoudre les erreurs « KMS Exception: UnrecognizedClientExceptionKMS Message »
L'erreur suivante se produit généralement lorsque le rôle d'exécution d'une fonction Lambda est supprimé, puis recréé sous le même nom, mais avec un principal différent :
Calling the invoke API action failed with this message: Lambda was unable to decrypt the environment variables because KMS access was denied. Please check the function's AWS KMS key settings. KMS Exception: UnrecognizedClientExceptionKMS Message: The security token included in the request is invalid.
Pour résoudre l'erreur, vous devez réinitialiser l'octroi AWS KM pour le rôle d'exécution de la fonction en procédant comme suit :
Remarque : L'utilisateur IAM qui crée et met à jour la fonction Lambda doit être autorisé à utiliser la clé AWS KMS.
1. Obtenez l'Amazon Resource Name (ARN) du rôle d'exécution actuel de la fonction et de la clé AWS KMS, en exécutant la commande AWS CLI suivante :
Remarque : Remplacez yourFunctionName par le nom de votre fonction.
$ aws lambda get-function-configuration --function-name yourFunctionName
2. Réinitialisez l’octroi AWS KMS en effectuant l'une des opérations suivantes :
Mettez à jour le rôle d'exécution de la fonction vers une valeur temporaire différente en exécutant la commande update-fonction-configuration suivante :
Important : Remplacez temporaryValue par l’ARN du rôle d'exécution temporaire.
$ aws lambda update-function-configuration --function-name yourFunctionName --role temporaryValue
Puis, remettez à jour le rôle d'exécution de la fonction vers le rôle d'exécution d'origine en exécutant la commande suivante :
Important : Remplacez originalValue par l’ARN du rôle d'exécution d'origine.
$ aws lambda update-function-configuration --function-name yourFunctionName --role originalValue
-ou-
Mettez à jour la clé AWS KMS de la fonction vers une valeur temporaire différente en exécutant la commande update-function-configuration suivante :
Important : Remplacez temporaryValue par un ARN de clé AWS KMS temporaire. Pour utiliser une clé de service par défaut, définissez le paramètre kms-key-arn sur "".
$ aws lambda update-function-configuration --function-name yourFunctionName --kms-key-arn temporaryValue
Puis, mettez à jour la clé AWS KMS de la fonction vers l'ARN de la clé AWS KMS d'origine en exécutant la commande suivante :
Important : Remplacez originalValue par l'ARN de la clé AWS KMS d'origine.
$ aws lambda update-function-configuration --function-name yourFunctionName --kms-key-arn originalValue
Pour en savoir plus, consultez la section Politiques de clés AWS KMS.
Pour résoudre les erreurs « KMS Exception: AccessDeniedException KMS Message »
L'erreur suivante indique que votre identité IAM ne dispose pas des autorisations requises pour exécuter l'action d'API kms:Decrypt :
Lambda was unable to decrypt your environment variables because the KMS access was denied. Please check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.
Pour résoudre l'erreur, ajoutez l’instruction de politique suivante à votre utilisateur ou à votre rôle IAM :
Important : Remplacez "your-KMS-key-arn" par l'ARN de votre clé AWS KMS.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "your-KMS-key-arn" } ] }
Pour obtenir des instructions, consultez les sections Ajouter des autorisations à un utilisateur (console) ou Modifier la politique d'autorisations d'un rôle (console), en fonction de votre cas d'utilisation.
Pour résoudre les erreurs « Vous n'êtes pas autorisé à exécuter »
Les erreurs suivantes indiquent que votre identité IAM ne dispose pas de l'une des autorisations requises pour accéder à la clé AWS KMS :
You are not authorized to perform: kms:Encrypt.
You are not authorized to perform: kms:CreateGrant.
User: user-arn is not authorized to perform: kms:ListAliases on resource: * with an explicit deny.
Remarque : Les autorisations AWS KMS ne sont pas requises pour votre identité IAM ou le rôle d'exécution de la fonction si vous utilisez la politique de clé par défaut.
Pour résoudre ces types d'erreurs, vérifiez que votre utilisateur ou votre rôle IAM dispose des autorisations requises pour effectuer les actions d'API AWS KMS suivantes :
Pour obtenir des instructions, consultez les sections Ajout d’autorisations à un utilisateur (console) ou Modification de la politique d'autorisations d'un rôle (console), en fonction de votre cas d'utilisation.
Exemple d’instruction de politique IAM qui accorde les autorisations requises pour accéder à une clé AWS KMS gérée par le client
Important : La valeur de Ressource doit être « * ». L'action kms:ListAliases ne prend pas en charge les autorisations de bas niveau. Assurez-vous également de remplacer « your-kms-key-arn » par votre ARN de clé AWS KMS.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:CreateGrant" ], "Resource": "your-kms-key-arn" }, { "Sid": "statement2", "Effect": "Allow", "Action": "kms:ListAliases", "Resource": "*" } ] }
Pour résoudre les erreurs « L'accès à KMS n'est pas autorisé »
L'erreur suivante indique qu'une entité IAM n'est pas autorisée à obtenir des secrets AWS Secrets Manager :
Access to KMS is not allowed (Service: AWSSecretsManager; Status Code: 400; Error Code: AccessDeniedException; Request ID: 123a4bcd-56e7-89fg-hij0-1kl2m3456n78)
Assurez-vous que votre utilisateur ou votre rôle IAM dispose des autorisations requises pour effectuer les actions d'API AWS KMS suivantes :
Pour plus d'informations, consultez la section Comment résoudre les problèmes d'accès à un secret AWS Secrets Manager chiffré ?
Informations connexes
Comment puis-je corriger les défaillances de la fonction Lambda ?
Vidéos associées


Contenus pertinents
- demandé il y a 2 anslg...
- demandé il y a 6 moislg...
- demandé il y a 5 moislg...
- demandé il y a un anlg...
- demandé il y a 2 anslg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans