Firma de código con AWS Signer - Garantizando la confianza en funciones Lambda e imágenes de contenedor

Aplicamos firma de código a funciones Lambda e imágenes de contenedor, imponemos la verificación de firmas en el despliegue e integramos con pipelines CI/CD.

Necesidad de la firma de código

La firma de código es un mecanismo que usa la criptografía para verificar que el código desplegado proviene de un editor de confianza y no ha sido alterado. Para el caso de que un pipeline de construcción sea comprometido en un ataque a la cadena de suministro, la verificación de firmas puede detener el despliegue de código sin una firma de confianza. Como en el incidente SolarWinds de 2020, hay casos en los que el entorno de construcción es objeto de intrusión, y la firma de código es una de las contramedidas. AWS Signer es un servicio de firma de código totalmente administrado que usted puede usar para firmar y verificar paquetes de despliegue de funciones Lambda e imágenes de contenedor.

Firma de código para Lambda

La configuración de firma de código de Lambda define los ARN de perfiles de firma de confianza (hasta 20) y la acción a tomar cuando la verificación falla (Warn o Enforce). En modo Enforce, el despliegue de funciones no firmadas o firmadas con perfiles no confiables se bloquea. El modo Warn registra los fallos de verificación mientras permite el despliegue, útil para una adopción gradual. En pipelines CI/CD, se construye un flujo donde CodeBuild genera un paquete ZIP, lo firma mediante la API StartSigningJob de Signer, y pasa la URL S3 del paquete firmado al UpdateFunctionCode de Lambda. Los trabajos de firma se ejecutan de forma asíncrona y pueden enviar notificaciones de finalización a EventBridge.

Firma de imágenes de contenedor e integración CI/CD

AWS Signer soporta la firma en formato Notation para imágenes de contenedor en ECR. En la etapa de construcción del pipeline CI/CD, las imágenes se construyen, se firman con Signer y luego se envían a ECR. Los controladores de admisión de EKS imponen la verificación de firmas, rechazando el despliegue de imágenes no firmadas. Los perfiles de firma definen el algoritmo criptográfico (ECDSA P-256 o RSA) y el período de validez; cuando un perfil expira, no se pueden generar nuevas firmas pero las existentes siguen siendo válidas. La revocación de firmas invalida el código firmado con un perfil comprometido. Después de la revocación, la verificación falla y el despliegue del código afectado se bloquea.

Diseño operativo de perfiles de firma

El diseño de perfiles de firma debe alinearse con la estructura de despliegue de la organización. Crear perfiles separados por equipo limita el radio de impacto cuando un perfil se compromete a los artefactos de ese equipo. Períodos de validez demasiado cortos aumentan la carga de rotación, mientras que períodos demasiado largos extienden la ventana de riesgo durante un compromiso; configúrelos según la tolerancia al riesgo organizacional. Si las políticas IAM restringen la ejecución de signer:StartSigningJob a roles específicos (roles de construcción del pipeline CI/CD) de modo que los desarrolladores individuales no puedan firmar, solo esos roles de construcción pueden firmar. CloudTrail registra las operaciones de firma y deja una pista de auditoría de quién firmó qué y cuándo.

Comparación con otros métodos de firma

Más allá de AWS Signer, existen varias alternativas para la firma de código. Cosign (proyecto Sigstore) es una herramienta de firma de contenedores de código abierto que soporta firma sin claves (certificados efímeros) pero requiere gestionar la infraestructura de firma y las claves por cuenta propia. AWS Signer proporciona generación, almacenamiento y rotación de claves administrados con integración KMS que asegura que las claves están protegidas por módulos de seguridad de hardware (HSM). La firma GPG se usa para firmar commits de git, mientras que la verificación en el despliegue de Lambda o ECR usa un mecanismo distinto. AWS Signer se combina con la configuración de firma de código de Lambda y los controladores de admisión de EKS para imponer la verificación en el despliegue sin infraestructura adicional. Sin embargo, para entornos multi-nube con políticas de firma unificadas, una opción es una configuración que usa Notation o Cosign.

Precios de Signer

Usar AWS Signer con servicios como AWS Lambda, Amazon ECR y Amazon EKS no tiene cargo adicional. La verificación de firmas es gratuita. No hay cargos adicionales por gestionar perfiles de firma.

Resumen

AWS Signer es un servicio totalmente administrado que proporciona firma de código para funciones Lambda e imágenes de contenedor para verificar la integridad del código desplegado. Firmar durante la etapa de construcción del pipeline CI/CD e imponer la verificación a través de la configuración de firma de código de Lambda o los controladores de admisión de EKS añade una capa de defensa contra ataques a la cadena de suministro. Un diseño que separa los perfiles de firma por equipo y restringe los permisos de firma con IAM reduce el radio de impacto cuando ocurre un compromiso.

Referencias (recursos oficiales de AWS)

Las fuentes primarias de esta página son el sitio web y la documentación oficiales de AWS. Consulta las páginas oficiales siguientes para conocer las especificaciones y los precios más recientes.

Si esta página y la documentación oficial difieren, prevalece la documentación oficial.

Compartir