Cifrado de los paquetes de implementación .zip de Lambda
AWS Lambda siempre proporciona cifrado en reposo del lado del servidor para los paquetes de implementación .zip y los detalles de configuración de las funciones mediante AWS KMS key. De forma predeterminada, Lambda utiliza una Clave propiedad de AWS. Si este comportamiento predeterminado se ajusta a su flujo de trabajo, no tiene que configurar nada más. AWS no cobra por usar esta clave.
Si lo prefiere, puede proporcionar una clave administrada por el cliente de AWS KMS en su lugar. Puede hacerlo para tener control sobre la rotación de la clave de KMS o para cumplir con los requisitos de su organización para administrar claves de KMS. Cuando usa una clave administrada por el usuario, solo los usuarios de su cuenta con acceso a la clave de KMS pueden ver o administrar el código o la configuración de la función.
Las claves administradas por el cliente ocasionan cargos de AWS KMS estándar. Para más información, consulte Precios de AWS Key Management Service
Crear una clave administrada por el cliente
Puede crear una clave simétrica administrada por el cliente a través de la Consola de administración de AWS o las API de AWS KMS.
Para crear una clave simétrica administrada por el cliente
Siga los pasos de Creación de cifrado simétrico y creación de claves de KMS simétricas en la Guía para desarrolladores de AWS Key Management Service.
Permisos
Política de claves
Las políticas de clave controlan el acceso a la clave administrada por el cliente. Cada clave administrada por el cliente debe tener exactamente una política de clave, que contiene instrucciones que determinan quién puede usar la clave y cómo puede utilizarla. Para obtener más información, consulte Cómo cambiar una política de claves en la Guía para desarrolladores de AWS Key Management Service.
Cuando se utiliza una clave administrada por el cliente para cifrar un paquete de implementación de .zip, Lambda no agrega ninguna concesión a la clave. En su lugar, su política de claves de AWS KMS debe permitir a Lambda llamar a las siguientes operaciones de la API de AWS KMS en su nombre:
El siguiente ejemplo de política de claves permite que todas las funciones de Lambda de la cuenta 111122223333 llamen a las operaciones de AWS KMS requeridas para la clave administrada por el cliente especificada:
ejemplo AWS KMSPolítica de claves de
Para obtener información sobre la solución de problemas de acceso a las claves, consulte la Guía para desarrolladores de AWS Key Management Service.
Permisos de entidades principales
Cuando se utiliza una clave administrada por el cliente para cifrar un paquete de implementación .zip, solo las entidades principales con acceso a esa clave pueden acceder al paquete de implementación .zip. Por ejemplo, las entidades principales que no tienen acceso a la clave administrada por el cliente no pueden descargar el paquete .zip mediante la URL de S3 prefirmada que se incluye en la respuesta de GetFunction. Se devuelve una AccessDeniedException en la sección Code de la respuesta.
ejemplo AWS KMS AccessDeniedException
{ "Code": { "RepositoryType": "S3", "Error": { "ErrorCode": "AccessDeniedException", "Message": "KMS access is denied. Check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: User: arn:aws:sts::111122223333:assumed-role/LambdaTestRole/session is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:us-east-1:111122223333:key/key-id with an explicit deny in a resource-based policy" }, "SourceKMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id" }, ...
Para obtener más información sobre los permisos para las claves de AWS KMS, consulte Autenticación y control de acceso para AWS KMS.
Uso de una clave administrada por el cliente para el paquete de implementación .zip
Utilice los siguientes parámetros de la API para configurar las claves administradas por el cliente para los paquetes de implementación .zip:
-
SourceKMSKeyArn: cifra el paquete de implementación .zip de origen (el archivo que se carga).
-
KMSKeyArn: cifra las variables de entorno y las instantáneas de Lambda SnapStart.
-
DurableConfig.KMSKeyArn: cifra los datos de ejecución duradera. Esta clave es independiente de
KMSKeyArnen el nivel de función.
Cuando SourceKMSKeyArn y KMSKeyArn se especifican, Lambda utiliza la clave KMSKeyArn para cifrar la versión descomprimida del paquete que Lambda usa para invocar la función. Cuando se especifica SourceKMSKeyArn, pero no KMSKeyArn, Lambda utiliza una Clave administrada de AWS para cifrar la versión descomprimida del paquete.
nota
En el caso de las funciones y capas que usan almacenamiento autoadministrado de código en S3, Lambda no almacena una copia del código fuente. El código permanece en el bucket de S3, y el cifrado en reposo del código fuente se administra mediante la configuración del bucket de S3. Lambda usará KMSKeyArn para cifrar la versión descomprimida del paquete que utiliza para invocar la función. Para obtener más información, consulte Protección de datos mediante el cifrado del lado del servidor en la Guía del usuario de Amazon Simple Storage Service.