Configurar la firma de código para AWS Lambda - AWS Lambda

Configurar la firma de código para AWS Lambda

La firma de código de AWS Lambda ayuda a garantizar que solo se ejecute código de confianza en sus funciones de Lambda. Cuando habilita la firma de código para una función, Lambda comprueba todas las implementaciones de código y comprueba que el paquete de código está firmado por una fuente de confianza.

nota

Las funciones definidas como imágenes de contenedor no admiten la firma de código.

Para verificar la integridad del código, utilice AWS Signer para crear paquetes de código firmados digitalmente para funciones y capas. Cuando un usuario intenta implementar un paquete de código, Lambda realiza comprobaciones de validación en el paquete de código antes de aceptar la implementación. Dado que las comprobaciones de validación de firma de código se ejecutan en tiempo de implementación, no hay impacto en el rendimiento en la ejecución de funciones.

También se utiliza AWS Signer para crear perfiles de firma. Utilice un perfil de firma para crear el paquete de código firmado. Utilice AWS Identity and Access Management (IAM) para controlar quién puede firmar paquetes de código y crear perfiles de firma. Para obtener más información, consulte Autenticación y control de acceso en la Guía del desarrollador de AWS Signer.

Para habilitar la firma de código para una función, debe crear una configuración de firma de código y adjuntarla a la función. Una configuración de firma de código define una lista de perfiles de firma permitidos y la acción de directiva que se debe realizar si falla alguna de las comprobaciones de validación.

Lambda siguen el mismo formato de paquete de código firmado que los paquetes de código de función. Cuando agrega una capa a una función que tiene habilitada la firma de código, Lambda comprueba que la capa está firmada por un perfil de firma permitido. Cuando habilita la firma de código para una función, todas las capas que se agregan a la función también deben estar firmadas por uno de los perfiles de firma permitidos.

Utilice IAM para controlar quién puede crear configuraciones de firma de código. Normalmente, se permite que solo usuarios administrativos específicos tengan esta capacidad. Además, puede configurar políticas de IAM para exigir que los desarrolladores solo creen funciones que tengan habilitada la firma de código.

Puede configurar la firma de código para registrar los cambios en AWS CloudTrail. Las implementaciones exitosas y bloqueadas en funciones se registran en CloudTrail con información sobre las comprobaciones de firma y validación.

Puede configurar la firma de código para sus funciones mediante la consola de Lambda, el AWS Command Line Interface (AWS CLI), AWS CloudFormation y el AWS Serverless Application Model (AWS SAM).

No hay ningún cargo adicional por usar AWS Signer o firma de código para AWS Lambda.

Validación de firmas

Lambda realiza las siguientes comprobaciones de validación cuando implementa un paquete de código firmado en su función:

  1. Integridad: valida que el paquete de código no se ha modificado desde que se firmó. Lambda compara el hash del paquete con el hash de la firma.

  2. Caducidad: valida que la firma del paquete de código no ha caducado.

  3. No coincidencia: valida que el paquete de código está firmado con uno de los perfiles de firma permitidos para la función de Lambda. También se produce una falta de coincidencia si una firma no está presente.

  4. Revocación: valida que la firma del paquete de código no se ha revocado.

La directiva de validación de firmas definida en la configuración de firma de código determina cuál de las siguientes acciones de Lambda se lleva a cabo si falla alguna de las comprobaciones de validación:

  • Advertencia: Lambda permite la implementación del paquete de código, pero emite una advertencia. Lambda emite una nueva métrica de Amazon CloudWatch y también almacena la advertencia en el registro de CloudTrail.

  • Forzar: Lambda emite una advertencia (lo mismo que para la acción Advertencia) y bloquea la implementación del paquete de código.

Puede configurar la directiva para las comprobaciones de validación de caducidad, discordancia y revocación. Tenga en cuenta que no puede configurar una directiva para la comprobación de integridad. Si falla la comprobación de integridad, Lambda bloquea la implementación.

Requisitos previos de configuración

Antes de configurar la firma de código para una función de Lambda, utilice AWS Signer para hacer lo siguiente:

  • Cree uno o varios perfiles de firma.

  • Utilice un perfil de firma para crear un paquete de código firmado para su función.

Para obtener más información, consulte Creación de perfiles de firma (Console) en la Guía del desarrollador de AWS Signer.

Creación de configuraciones de firma de código

Una configuración de firma de código define una lista de perfiles de firma permitidos y la directiva de validación de firmas.

Para crear una configuración de firma de código (consola)

  1. Abra la página Configuraciones de firma de código de la consola de Lambda.

  2. Seleccione Create configuration (Crear configuración).

  3. En Descripción, introduzca un nombre descriptivo para la configuración.

  4. En Perfiles de firma, agregue hasta 20 perfiles de firma a la configuración.

    1. Para Firmar versión de perfil ARN, elija el Nombre de recurso de Amazon (ARN) de una versión de perfil o introduzca el ARN.

    2. Para agregar un perfil de firma adicional, elija Agregar perfiles de firma.

  5. En Política de validación de firmas, seleccione Advertir o Aplicar.

  6. Seleccione Create configuration (Crear configuración).

Actualización de una configuración de firma de código

Cuando actualiza una configuración de firma de código, los cambios afectan a las futuras implementaciones de funciones que tienen adjunta la configuración de firma de código.

Para actualizar una configuración de firma de código (consola)

  1. Abra la página Configuraciones de firma de código de la consola de Lambda.

  2. Seleccione una configuración de firma de código para actualizar y, a continuación, elija Editar.

  3. En Descripción, introduzca un nombre descriptivo para la configuración.

  4. En Perfiles de firma, agregue hasta 20 perfiles de firma a la configuración.

    1. Para Firmar versión de perfil ARN, elija el Nombre de recurso de Amazon (ARN) de una versión de perfil o introduzca el ARN.

    2. Para agregar un perfil de firma adicional, elija Agregar perfiles de firma.

  5. En Política de validación de firmas, seleccione Advertir o Aplicar.

  6. Elija Save changes.

Eliminación de una configuración de firma de código

Puede eliminar una configuración de firma de código solo si no hay funciones que la utilicen.

Para eliminar una configuración de firma de código (consola)

  1. Abra la página Configuraciones de firma de código de la consola de Lambda.

  2. Seleccione una configuración de firma de código que desea eliminar y, a continuación, elija Eliminar.

  3. Para confirmar, vuelva a seleccionar Eliminar.

Habilitar la firma de código para una función

Para habilitar la firma de código para una función, asocie una configuración de firma de código con la función.

Para asociar una configuración de firma de código con una función (consola)

  1. .Abra la página de Functions (Funciones) en la consola de Lambda.

  2. Elija la función para la que desea habilitar la firma de código.

  3. En Configuración de firma de código, elija Editar.

  4. En Editar firma de código, elija una configuración de firma de código para esta función.

  5. Seleccione Save.

Configuración de políticas de IAM

Para conceder permiso a un usuario para acceder a las operaciones de la API de firma de código, adjunte una o varias instrucciones de directiva a la directiva de usuario. Para obtener más información sobre las políticas de usuario, consulte Políticas de IAM basadas en identidad para Lambda.

En la siguiente declaración de directiva de ejemplo se concede permiso para crear, actualizar y recuperar configuraciones de firma de código.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CreateCodeSigningConfig", "lambda:UpdateCodeSigningConfig", "lambda:GetCodeSigningConfig" ], "Resource": "*" } ] }

Los administradores pueden usar la clave de CodeSigningConfigArn condición para especificar las configuraciones de firma de código que los desarrolladores deben utilizar para crear o actualizar sus funciones.

En la siguiente declaración de política de ejemplo se concede permiso para crear una función. La declaración de política incluye una condición lambda:CodeSigningConfigArn para especificar la configuración de firma de código permitida. Lambda bloquea cualquier solicitud de API CreateFunction si su parámetro CodeSigningConfigArn no está o no coincide con el valor de la condición.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReferencingCodeSigningConfig", "Effect": "Allow", "Action": [ "lambda:CreateFunction", ], "Resource": "*", "Condition": { "StringEquals": { "lambda:CodeSigningConfigArn": “arn:aws:lambda:us-west-2:123456789012:code-signing-config:csc-0d4518bd353a0a7c6” } } } ] }

Configuración de la firma de código con la API de Lambda

Para administrar configuraciones de firma de código con AWS CLI o AWS SDK, utilice las siguientes operaciones de API:

Para administrar la configuración de firma de código de una función, utilice las siguientes operaciones de API: