Comment puis-je masquer les variables d'environnement et le texte non chiffré de ma fonction Lambda à un utilisateur IAM ?

Date de la dernière mise à jour : 07/07/2021

Je souhaite empêcher les utilisateurs AWS Identity and Access Management (IAM) ayant accès à ma fonction AWS Lambda de voir les variables d'environnement et le texte non chiffré. Comment puis-je procéder ?

Résolution

Remarque : la solution suivante empêche les identités IAM de voir les variables d'environnement d'une fonction Lambda uniquement dans la console Lambda et l'API Lambda. Elle n'empêche pas ces identités IAM d'accéder aux variables d'environnement déchiffrées à l'aide du code de la fonction, ni de générer les valeurs des variables d'environnement dans Amazon CloudWatch Logs.

Pour empêcher les identités IAM d'accéder aux mots de passe, aux clés ou à d'autres informations sensibles dans vos variables d'environnement Lambda, procédez comme suit :

Utilisez une clé principale client (CMK) AWS Key Management Service (AWS KMS) pour chiffrer les variables d'environnement. Pour configurer un CMK, suivez les instructions de la section Sécurisation des variables d'environnement.

Important : assurez-vous de modifier la politique de clé du CMK afin que la politique refuse l'accès aux identités IAM qui n'ont pas besoin d'accès.

Exemple de politique de clé CMK qui refuse à des utilisateurs IAM spécifiques l'autorisation de voir les variables d'environnement Lambda

Remarque : remplacez arn:aws:iam::1234567890:User1DeniedAccess et arn:aws:iam::1234567890:User2DeniedAccess par les Amazon Resource Names (ARN) des identités IAM auxquelles vous souhaitez refuser l'accès. Vous pouvez ajouter d'autres ARN IAM à la politique de clé si nécessaire.

{
    "Id": "MyCustomKey",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Deny IAM users permission to see Lambda environment variables",
            "Effect": "Deny",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::1234567890:User1DeniedAccess",
                    "arn:aws:iam::1234567890:User2DeniedAccess"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        }
    ]
}

Exemple de message d'erreur que l'utilisateur IAM refusé voit s'il tente d'afficher les variables d'environnement de la fonction

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

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?