Passer au contenu

Comment résoudre les erreurs d'autorisation « KMS Exception » de la fonction Lambda ?

Lecture de 5 minute(s)
0

Ma fonction AWS Lambda a renvoyé une erreur « Exception KMS », « You are not authorized to perform » ou « Access to KMS is not allowed ».

Résolution

Mettez à jour les autorisations AWS Key Management Service (AWS KMS) de votre identité Gestion des identités et des accès AWS (AWS IAM) en fonction du message d'erreur. Si la clé AWS KMS et le rôle IAM se trouvent dans des comptes AWS différents, mettez à jour la politique IAM et la stratégie de clé AWS KMS.

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Résoudre les erreurs « KMS Exception: UnrecognizedClientExceptionKMS Message »

Si un rôle d’une fonction Lambda est supprimé, puis recréé sous le même nom, mais avec un principal différent, le message d’erreur suivant s’affiche :

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

Remarque : L'utilisateur IAM qui crée et met à jour la fonction Lambda doit être autorisé à utiliser la clé AWS KMS.

  1. Pour obtenir l’Amazon Resource Name (ARN) du rôle d'exécution actuel de la fonction et la clé AWS KMS, exécutez la commande get-function-configuration suivante :
    aws lambda get-function-configuration --function-name your-function-name
    Remarque : Remplacez your-function-name par le nom de votre fonction.
  2. Pour mettre à jour le rôle d'exécution de la fonction vers une valeur temporaire différente, exécutez la commande update-fonction-configuration suivante :
    aws lambda update-function-configuration --function-name yourFunctionName --role temporary-value
    Remarque : Remplacez temporary-value par l’ARN du rôle d'exécution temporaire.
  3. Pour remettre le rôle d'exécution de la fonction au rôle d'exécution d'origine, exécutez la commande update-function-configuration suivante :
    aws lambda update-function-configuration --function-name yourFunctionName --role originalValue
    Remarque : Remplacez originalValue par l’ARN du rôle d'exécution d'origine.

Résoudre les erreurs « KMS Exception: AccessDeniedException KMS Message »

Si votre identité IAM ne dispose pas des autorisations requises pour exécuter l'action d'API kms:Decrypt, le message d’erreur suivant s’affiche :

« 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, utilisez la console IAM pour ajouter l’instruction de politique suivante à votre utilisateur ou rôle IAM :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "your-KMS-key-arn"
        }
    ]
}

Remarque : Remplacez your-KMS-key-arn par l'ARN de votre clé AWS KMS.

Résoudre les erreurs « You are not authorized to perform »

Si votre identité IAM ne dispose pas des autorisations requises pour accéder à la clé AWS KMS, vous recevez l'un des messages d'erreur suivants :

« 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 stratégie de clé par défaut.

Pour résoudre ces erreurs, assurez-vous que votre utilisateur ou votre rôle IAM dispose des autorisations requises pour effectuer les actions d'API AWS KMS suivantes :

Si votre utilisateur ou votre rôle IAM ne dispose pas des autorisations précédentes, utilisez la console IAM pour ajouter les autorisations.

Exemple de politique IAM qui accorde des autorisations d'accès à une clé AWS KMS gérée par le client

{
    "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": "*"
        }
    ]
}

Remarque : 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.

Résoudre les erreurs « Access to KMS is not allowed »

Si une entité IAM n'est pas autorisée à obtenir les secrets d'AWS Secrets Manager, le message d'erreur suivant s'affiche :

« Access to KMS is not allowed (Service: AWSSecretsManager; Status Code: 400; Error Code: AccessDeniedException; Request ID: 123a4bcd-56e7-89fg-hij0-1kl2m3456n78) »

Pour résoudre cette erreur, assurez-vous que votre utilisateur ou votre rôle IAM dispose des autorisations requises pour effectuer les actions d'API AWS KMS suivantes :

Si votre utilisateur ou votre rôle IAM ne dispose pas des autorisations précédentes, utilisez la console IAM pour ajouter les autorisations.

Pour en savoir plus, consultez la section Comment puis-je résoudre les erreurs d'accès à la clé AWS KMS après avoir essayé de récupérer un secret Secrets Manager chiffré ?

Informations connexes

Comment puis-je résoudre les erreurs de code de statut HTTP 502 et HTTP 500 provenant d'AWS Lambda ?

Comment puis-je corriger les échecs de la fonction Lambda ?

AWS OFFICIELA mis à jour il y a 8 mois