He intentado usar los asistentes de cifrado de AWS Lambda para descifrar las variables de entorno de AWS Key Management Service (AWS KMS) y recibí el error «InvalidCiphertextException».
Breve descripción
El error de acción de la API de AWS KMS InvalidCiphertextException indica que la solicitud de descifrado ha fallado porque Lambda ha actualizado la forma de cifrar las variables de entorno. Lambda pasa el nombre de la función como contexto de cifrado, de manera que realiza la llamada de cifrado a AWS KMS. Para las funciones de descifrado que se han creado antes de este cambio, debe actualizar el código de descifrado y pasar el nombre de la función de Lambda como contexto de cifrado.
Resolución
Para obtener el código con la llamada de descifrado a AWS KMS para un SDK específico con el contexto de cifrado, realice estos pasos:
- Abra la consola de Lambda y, a continuación, seleccione Funciones.
- En Nombre de función, elija la función de Lambda y, a continuación, elija la pestaña Configuración.
- En Variables de entorno, elija Editar y, a continuación, seleccione Agregar variable de entorno.
- Introduzca una clave y un valor y, a continuación, expanda la Configuración de cifrado.
- Elija Habilitar los asistentes para el cifrado en tránsito y, a continuación, seleccione Cifrar.
- Amplíe el Fragmento de secretos de descifrado y, a continuación, introduzca un fragmento de código similar al siguiente:
DECRYPTED = boto3.client('kms').decrypt( CiphertextBlob=b64decode(ENCRYPTED),
EncryptionContext={'LambdaFunctionName': os.environ['AWS_LAMBDA_FUNCTION_NAME']}
)['Plaintext'].decode('utf-8')
Utilice el fragmento de código anterior para descifrar nuevas variables de entorno cifradas con asistentes de cifrado.
Asegúrese de volver a cifrar las variables de entorno antiguas para que funcionen con las nuevas variables de entorno.
Para obtener más información, consulte Uso de variables de entorno de AWS Lambda.
Información relacionada
¿Cómo puedo comprobar que se utiliza el cifrado autenticado con el cifrado de datos asociado al llamar a las API de AWS KMS?