View a markdown version of this page

Seguridad y permisos para las funciones duraderas de Lambda - AWS Lambda

Seguridad y permisos para las funciones duraderas de Lambda

Las funciones duraderas de AWS Lambda requieren permisos de IAM específicos para ejecutar y administrar las ejecuciones duraderas. Siga el principio de privilegio mínimo; para ello, otorgue solo los permisos que necesita cada entidad principal.

Permisos de IAM para funciones duraderas

Para la mayoría de las acciones de la API de ejecuciones duraderas, Lambda autoriza la solicitud con el ARN de la ejecución duradera, no con el ARN de la función. Una ejecución duradera es un subrecurso de una versión de función y su ARN amplía el ARN de la función:

arn:aws:lambda:region:account-id:function:function-name:qualifier/durable-execution/execution-name/execution-id

El calificador en el ARN de una ejecución duradera es siempre $LATEST o un número de versión.

Si su política especifica el ARN no cualificado de una función en el elemento Resource, Lambda deniega la solicitud porque un ARN no cualificado nunca coincide con el ARN de una ejecución duradera. Para conceder acceso, agregue un patrón de calificador al ARN de la función:

  • arn:aws:lambda:us-east-1:123456789012:function:my-function:*: coincide con las ejecuciones duraderas de todas las versiones.

  • arn:aws:lambda:us-east-1:123456789012:function:my-function:1/durable-execution/*: coincide con las ejecuciones duraderas solo de la versión 1.

La mayoría de las políticas utilizan la forma :* porque los números de versión pueden cambiar con cada implementación.

Los alias no se aplican a los permisos de ejecución duradera

Puede invocar una función duradera mediante un alias, pero el ARN de la ejecución resultante contiene el número de versión resuelto.

Permisos de rol de ejecución

El rol de ejecución de la función duradera debe tener permisos para crear puntos de control y recuperar el estado de ejecución. La siguiente política muestra los permisos mínimos necesarios:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecution", "lambda:GetDurableExecutionState" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name:*" } ] }

Cuando crea una función duradera mediante la consola, Lambda añade automáticamente estos permisos al rol de ejecución. Si crea la función con la AWS CLI o AWS CloudFormation, añada estos permisos a su rol de ejecución.

Para que Lambda asuma su rol de ejecución, la política de confianza del rol debe especificar la entidad principal de servicio de Lambda (lambda.amazonaws.com) como un servicio de confianza. El siguiente ejemplo muestra una política de confianza que concede a Lambda los permisos necesarios para asumir el rol.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Principio de privilegio mínimo

Delimite el elemento de Resource a los ARN de funciones específicas en lugar de utilizar caracteres comodín. Esto limita el rol de ejecución a las operaciones de puntos de control únicamente para las funciones que las necesitan.

ejemplo Permisos delimitados para varias funciones
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecution", "lambda:GetDurableExecutionState" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:orderProcessor:*", "arn:aws:lambda:us-east-1:123456789012:function:paymentHandler:*" ] } ] }

Como alternativa, puede utilizar la política administrada de AWS AWSLambdaBasicDurableExecutionRolePolicy, que incluye los permisos de ejecución duradera necesarios junto con los permisos básicos de ejecución de Lambda para Registros de Amazon CloudWatch.

Permisos para administrar las ejecuciones duraderas

Lambda autoriza las acciones lambda:GetDurableExecution, lambda:GetDurableExecutionHistory y lambda:StopDurableExecution con el ARN de la ejecución duradera.

Para enumerar las ejecuciones duraderas de una función, utilice lambda:ListDurableExecutionsByFunction. Lambda autoriza esta acción con el ARN de la función de la solicitud. Las siguientes reglas se aplican a la coincidencia de ARN:

  • Una política que concede el ARN no cualificado de una función solo coincide con las solicitudes que usan el nombre no cualificado de una función.

  • Una política que concede un ARN cualificado solo coincide con las solicitudes que utilizan un nombre cualificado de una función.

Para obtener más información, consulte Hacer referencia a las funciones en la sección de recursos de las políticas.

Para hacer coincidir las solicitudes realizadas con cualquiera de las formas del nombre de la función, incluya los ARN no cualificado y cualificado de la función, tal y como se indica en la siguiente política:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageDurableExecutions", "Effect": "Allow", "Action": [ "lambda:GetDurableExecution", "lambda:GetDurableExecutionHistory", "lambda:StopDurableExecution" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:*" }, { "Sid": "ListDurableExecutions", "Effect": "Allow", "Action": "lambda:ListDurableExecutionsByFunction", "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction", "arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:*" ] } ] }

Permisos para enviar devoluciones de llamada

El sistema externo que envía el resultado de una devolución de llamada utiliza las acciones lambda:SendDurableExecutionCallbackSuccess, lambda:SendDurableExecutionCallbackFailure y lambda:SendDurableExecutionCallbackHeartbeat.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SendCallbacks", "Effect": "Allow", "Action": [ "lambda:SendDurableExecutionCallbackSuccess", "lambda:SendDurableExecutionCallbackFailure", "lambda:SendDurableExecutionCallbackHeartbeat" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:*" } ] }

Lambda autoriza las solicitudes de devolución de llamada según el ARN de la ejecución duradera que creó la devolución de llamada.

Cifrado de estado

Las funciones duraderas de Lambda cifran los datos en reposo de ejecución. La ejecución de cada función mantiene un estado aislado al que no pueden acceder las demás ejecuciones. Puede configurar una clave administrada por el cliente para cifrar los datos de ejecución duradera. Para obtener más información, consulte Cifrado de los datos de ejecución duradera de AWS Lambda.

Los datos de los puntos de control incluyen los siguientes:

  • Resultados y errores de los pasos

  • Entradas de invocaciones encadenadas

Para consultar la lista completa de los datos de ejecución duradera que se cifran en reposo, consulte Qué se cifra.

Todos los datos se cifran en tránsito mediante TLS cuando Lambda lee o escribe datos de puntos de control.

Cifrado personalizado con serializadores y deserializadores personalizados

Para los requisitos de seguridad críticos, puede implementar su propio mecanismo de cifrado y descifrado mediante serializadores y deserializadores (SerDer) personalizados mediante un SDK duradero. Este enfoque le proporciona un control total de las claves y los algoritmos de cifrado utilizados para proteger los datos de los puntos de control.

importante

Cuando utiliza el cifrado personalizado, pierde la visibilidad de los resultados de la operación en la consola de Lambda y en las respuestas de la API. Los datos de los puntos de control aparecen cifrados en el historial de ejecución y no se pueden inspeccionar sin descifrarlos.

El rol de ejecución de la función necesita permisos de kms:Encrypt y kms:Decrypt para la clave de AWS KMS utilizada en la implementación personalizada de SerDer.

Registros de CloudTrail

Lambda registra las operaciones de los puntos de control como eventos de datos en AWS CloudTrail. Puede usar CloudTrail para auditar cuándo se crean los puntos de control, realizar un seguimiento de los cambios en el estado de ejecución y supervisar el acceso a los datos de la ejecución duradera.

Las operaciones de puntos de control aparecen en los registros de CloudTrail con los siguientes nombres de eventos:

  • CheckpointDurableExecution: se registra cuando se completa un paso y se crea un punto de control.

  • GetDurableExecutionState: se registra cuando Lambda recupera el estado de ejecución durante la reproducción.

Para habilitar el registro de eventos de datos para funciones duraderas, configure un registro de CloudTrail para registrar los eventos de datos de Lambda. Para obtener más información, consulte Registro de eventos de datos en la Guía del usuario de CloudTrail.

Ejemplo: entrada de registro de CloudTrail para la operación de puntos de control

{ "eventVersion": "1.08", "eventTime": "2024-11-16T10:30:45Z", "eventName": "CheckpointDurableExecution", "eventSource": "lambda.amazonaws.com", "requestParameters": { "functionName": "myDurableFunction", "executionId": "exec-abc123", "stepId": "step-1" }, "responseElements": null, "eventType": "AwsApiCall" }

Consideraciones sobre el acceso entre cuentas

Si invoca funciones duraderas en todas las cuentas de AWS, la cuenta que realiza la llamada necesita permiso de lambda:InvokeFunction, pero las operaciones de puntos de control siempre utilizan el rol de ejecución en la cuenta de la función. La cuenta que realiza la llamada no puede acceder directamente a los datos de los puntos de control ni al estado de ejecución.

Este aislamiento garantiza que los datos de los puntos de control permanezcan seguros en la cuenta de la función, incluso cuando se invoquen desde cuentas externas.

Características heredadas de seguridad de Lambda

Las funciones duraderas heredan todas las características de seguridad, gobernanza y cumplimiento de Lambda. Estas incluyen la conectividad de la VPC, el cifrado de variables de entorno, las colas de mensajes fallidos, la simultaneidad reservada, las URL de función, la firma de código y las certificaciones de cumplimiento, como SOC, PCI DSS e HIPAA.

Para obtener información detallada sobre las características de seguridad de Lambda, consulte Seguridad en AWS Lambda en la Guía para desarrolladores de Lambda. Las únicas consideraciones de seguridad adicionales para las funciones duraderas son los permisos de IAM documentados en esta guía.