J'ai essayé d'utiliser les assistants de chiffrement AWS Lambda pour déchiffrer les variables d'environnement pour AWS Key Management Service (AWS KMS) et j'ai reçu l'erreur « InvalidCiphertextException ».
Brève description
L'erreur d'action de l'API AWS KMS InvalidCiphertextException indique que la demande de déchiffrement a échoué car Lambda a mis à jour la procédure de chiffrement des variables d'environnement. Lambda transmet le nom de la fonction en tant que contexte de chiffrement qui a effectué l'appel de chiffrement à AWS KMS. Pour les fonctions de déchiffrement créées avant cette modification, vous devez mettre à jour le code de déchiffrement et transmettre le nom de la fonction Lambda comme contexte de chiffrement.
Résolution
Pour obtenir le code contenant l'appel de déchiffrement à AWS KMS pour un SDK spécifique avec le contexte de chiffrement, procédez comme suit :
- Ouvrez la console Lambda, puis sélectionnez Fonctions.
- Pour le Nom de fonction, choisissez la fonction Lambda, puis choisissez l'onglet Configuration.
- Pour les variables d'environnement, choisissez Modifier, puis choisissez Ajouter une variable d'environnement.
- Entrez une clé et une valeur, puis développez la configuration de chiffrement.
- Choisissez Activer les assistants pour le chiffrement en transit, puis choisissez Chiffrer.
- Développez Déchiffrer un extrait de secrets, puis saisissez un extrait de code similaire au suivant :
DECRYPTED = boto3.client('kms').decrypt( CiphertextBlob=b64decode(ENCRYPTED),
EncryptionContext={'LambdaFunctionName': os.environ['AWS_LAMBDA_FUNCTION_NAME']}
)['Plaintext'].decode('utf-8')
Utilisez l'extrait de code précédent pour déchiffrer les nouvelles variables d'environnement chiffrées à l'aide des assistants de chiffrement.
Veillez à rechiffrer les anciennes variables d'environnement afin qu'elles fonctionnent avec les nouvelles variables d'environnement.
Pour plus d'informations, consultez la sectionUtiliser les variables d'environnement Lambda.
Informations connexes
Comment vérifier que le chiffrement authentifié avec le chiffrement des données associé est utilisé lors de l'appel d'API AWS KMS ?