Keyfactor Days 2027: participa en la conferencia sobre seguridad y confianza que se celebrará en San Diego ¡Inscríbete ya!

Integración de firma de código seguro en sus prácticas de CI/CD

Eric Mizell Eric Mizell VP, Field Engineering
Integración de firma de código seguro en sus prácticas de CI/CD

En nuestro mundo cada vez más digital, la confianza lo es todo.

Los usuarios finales necesitan confiar en el Software con el que interactúan, los desarrolladores e ingenieros deben ser capaces de generar esa confianza, y los equipos de seguridad deben establecer los controles adecuados para habilitar todo el ciclo.

Por supuesto, como ya sabemos, establecer y mantener la confianza digital no siempre es fácil.

One of the best ways to establish digital trust is through the use of identities and, more specifically, code signing, which verifies the authenticity of new releases. But how exactly is code signing used in organizations today? What are some of the top challenges teams face in implementing code signing, and what happens when those processes aren’t secure? Perhaps most importantly, how can you ensure secure code signing in your CI/CD pipeline?

We recently answered these questions and more during our webinar Integrating Secure Code Signing in the CI/CD Pipeline. Read on for the highlights of this discussion, or click here to watch the full recording.

Establecer la confianza digital: Cada máquina necesita una identidad, y cada identidad debe ser gestionada

En primer lugar, hablemos de establecer la confianza digital. Cuando se trata de la firma de código, cada organización necesita crear un entorno de confianza donde los equipos de seguridad se sientan cómodos con los controles establecidos y donde los desarrolladores e ingenieros puedan trabajar como y donde quieran sin crear riesgos innecesarios.

Lograr ese equilibrio, especialmente para los equipos de DevOps, no es fácil. Entre los desarrolladores que trabajan de forma remota, las cargas de trabajo que se ejecutan en múltiples entornos y las cadenas de herramientas de DevOps que se vuelven más complejas, cada vez es más difícil saber qué es de confianza y qué no lo es. 

This is where identity becomes so important – especially for machines. Quite simply, every machine, every device, and every workload needs an identity, and every one of those identities must be protected and managed.

Code signing certificates are no different: They are the identity behind your software since they’re used to authenticate everything from software builds and artifacts to container images and even firmware and IoT settings. As a result, if that code signing identity is compromised, it undermines trust.

Comprender los casos de uso de la firma de código: El componente integral para la confianza digital

En los últimos años, el papel de la firma de código en el establecimiento de la confianza digital ha adquirido una importancia cada vez mayor. Los usuarios finales que descargan Software de internet esperan que dicho Software esté firmado. 

Esa realidad, combinada con el auge de los entornos de confianza cero, significa que casi todos los activos que produce una empresa deben estar firmados; cualquier cosa que sea desplegable (piense en scripts, código de infraestructura, imágenes de contenedores, aplicaciones, archivos WAR, archivos EAR, DLL, ejecutables, macros, lo que sea) necesita ser firmada porque la actividad maliciosa puede ocurrir en cualquier lugar.

Teniendo esto en cuenta, algunos de los casos de uso más comunes de la firma de código incluyen:

  • Protecting infrastructure: Preventing unauthorized downloads and ransomware by allowing only trusted applications to run on your infrastructure.
  • Securing devices and firmware: Preventing unauthorized device access by securing firmware and firmware updates with digital signatures and verification.
  • Safeguarding software: Ensuring published and distributed software is signed and that keys are protected.
  • Trusting containers: Establishing trusted and digitally signed base images for containers and virtual machines deployed in your environment.
  • Enabling DevSecOps: Establishing trust in the CI/CD pipeline, from digitally signing source code checked into repositories to signing packages post-build.
  • Preventing malicious macros: Preventing unauthorized or malicious macros on internal devices by ensuring that only signed macros are allowed to run.

Construyendo confianza y reduciendo riesgos: El modelo de madurez de la firma de código

Dada la importancia de la firma de código para establecer la confianza digital y la amplia variedad de casos de uso de la firma de código, las organizaciones deben prestar mucha atención a sus prácticas de firma de código. Aquí es donde entra en juego la idea de un modelo de madurez de la firma de código. Ese modelo se presenta de la siguiente manera:

Nivel 0: Sin firma

  • No firmar los entregables de Software
  • Vulnerable al acceso no autorizado al código
  • Sin auditabilidad ni integridad detrás del Software

Nivel 1: Fragmentado

  • Firma de entregables de Software, pero con herramientas fragmentadas
  • Los desarrolladores gestionan sus propias claves privadas sin control centralizado
  • Las claves de firma son vulnerables a un uso indebido o a un compromiso

Nivel 2: Centralizado

  • Uso de una plataforma centralizada para la política de firma de código, el flujo de trabajo y la auditabilidad
  • Protección de claves de firma sensibles en un HSM seguro
  • No integrado con procesos o flujos de trabajo de CI/CD y no todos los casos de uso están cubiertos

Nivel 3: Integrado con CI/CD

  • Firma de todos los contenedores, artefactos y entregables de Software
  • Integrado con herramientas y flujos de trabajo de firma nativos
  • Auditabilidad y gobernanza completas sobre todos los procesos de firma

Lamentablemente, muchas organizaciones se encuentran hoy en día entre el Nivel 0 y el Nivel 1 de este modelo de madurez. El problema no es que los equipos no reconozcan la importancia de la firma de código, sino que no saben cómo firmar o no están al día con las mejores prácticas de firma.

Por ejemplo, a menudo vemos claves que se transfieren mediante unidades USB, lo que genera riesgos de exposición. O vemos a diferentes equipos utilizando distintas soluciones puntuales, lo que significa que los procesos están fragmentados y no se trasladan bien a toda la organización. 

Esto ocurre porque la firma de código segura es un desafío: es necesario que las claves sean accesibles para los equipos que las necesitan, dondequiera que estén, pero inaccesibles para aquellos que no deberían firmar con esas claves. Puede parecer un dilema sin solución (Catch-22).

Encontrar una solución: Cómo Keyfactor Signum resuelve los obstáculos comunes para la firma de código segura

¿Cómo se logra la centralización y se avanza en el modelo de madurez de la firma de código? Normalmente, los equipos deben resolver tres desafíos principales. Afortunadamente, Keyfactor Signum ofrece soluciones a estos desafíos a través de características como la protección de claves, los controles de políticas, los registros de eventos, las interfaces nativas, la autenticación y la atestación. 

Protección de claves

The challenge: To start, where are your code signing keys stored? Too often, they’re stored on flash drives, build servers, or workstations – all places vulnerable to third-party, unauthorized access.

The solution: Keyfactor Signum protects these sensitive keys by generating and storing them within an HSM. Notably, Keyfactor prevents these keys from leaving that HSM once generated.

Why it matters: Going forward, this key attestation (or the ability to provide proof to your Public CA that keys are generated on an HSM) will be highly critical, as the CAB Forum will soon be enforcing that Public CAs must have this proof to sign any certificates.

Auditabilidad

The challenge: Next, who has access to actually sign code, and is there an audit trail of who signed what, when they signed, and what they signed with? It’s not enough to store and generate keys in a secure place, as you also need to control who has access to them.

The solution: Keyfactor Signum establishes this auditability by enforcing rules and policies around who has access to keys, who can use them, and what they can be used for. It also provides a complete audit trail for visibility into everything going on in the environment.

Why it matters: As the volume of use cases that require code signing continues to grow, this level of visibility to verify and validate signing activities will be essential to scaling securely.

Necesidad de velocidad

The challenge: Finally, developers want something easy to use and won’t change their process. So if you’re storing keys in a secure location and have tight controls over access, how do you still make those keys easily accessible for the teams that need them to sign code?

The solution: Keyfactor Signum makes these protections operationally effective by integrating into native signing tools and dropping into existing build and delivery processes; that way, developers don’t have to change their workflows.

Why it matters: Allowing your developers to continue working the way they already work by introducing native integrations to their existing tools makes it easy for them to get keys as needed (therefore avoiding slowdowns and/or workarounds) while still maintaining security by authenticating through an identity provider.

Comprendiendo la solución: La arquitectura de la solución de Keyfactor Signum

Saber qué es Keyfactor Signum es una cosa; comprender cómo funciona exactamente y cómo se ve en la práctica es otra. Con esto en mente, a continuación se presenta un flujo de trabajo típico con Keyfactor Signum:

Una vez que el código se ha confirmado, independientemente de su origen y naturaleza, debe ser firmado. Keyfactor Signum proporciona integraciones con herramientas de firma comunes (por ejemplo, SignTool, jarsigner, Cosign, etc.) para respaldar este proceso. Dado que Keyfactor está alojado en la nube, permite a los usuarios firmar de forma segura desde cualquier lugar.

Keyfactor Signum also offers different authentication models through a SAML/OAuth agent and an admin console. Through the console, admins have control over and visibility into signing policies and can grant approvals for who can do what, and have access to audit trails to see actual activity.

En conjunto, esta arquitectura ofrece una solución potente que facilita el proceso de firma de código a los desarrolladores, al tiempo que otorga a los administradores todo el control necesario para centralizar la gestión y garantizar que las claves estén debidamente protegidas.

Integración completa: Incorporación de la firma segura de código en la cadena de CI/CD

Finalmente, ¿cómo encaja todo esto en la cadena de CI/CD? Con una solución como Keyfactor Signum, es posible garantizar que cualquier binario que entre en su repositorio esté firmado, sin excepción. Así es como se desarrolla el proceso:

Una vez que un desarrollador envía código a la cadena de CI/CD, este se dirige al repositorio de código fuente y su servidor de CI (ya sea Jenkins, Azure DevOps o cualquier otro) ejecuta pruebas unitarias. A partir de ahí, el código se firma utilizando el cliente Keyfactor Signum y luego se almacena en el repositorio.

En adelante, cada vez que alguien extraiga código del repositorio, este se verificará. Herramientas como SignTool, jarsigner y Cosign incorporan un componente de verificación para comprobar que el código está firmado por un certificado verificado basado en la raíz de confianza correcta. Esto significa que, incluso si alguien creara su propio certificado de firma, este estaría fuera de la raíz de confianza designada, por lo que cualquier código firmado con dicho certificado fallaría en la etapa de verificación.

Una vez que el código supera la etapa de verificación, pueden comenzar las pruebas de integración y carga, y, en última instancia, ese código puede pasar a producción. El componente clave de todo esto es que, independientemente de cuándo alguien extraiga código del repositorio, siempre hay un paso de verificación previo antes de que pueda ocurrir cualquier otra cosa.

¿Qué viene a continuación? Vea Keyfactor Signum en acción

Ready for even more on integrating secure code signing into your CI/CD pipeline and how Keyfactor Signum can help? Click here to watch the full webinar, including a live demo of Keyfactor Signum.

Suscríbase a The Source

Stay secure with Keyfactor's monthly newsletter, packed with expert insights and practical steps for quantum-readiness.

Continuar leyendo

Innovations Of Internet Security. Security And Safety Evolution. Futuristic Lock And Quantum Central Processing Unit.
Firma de Código

Zero Trust en acción: Cómo beneficia la firma de código a la seguridad de los contenedores

Leer más
DevOps

Automatización de certificados de autoservicio: Keyfactor y ServiceNow

Leer más
Worker hands holding tablet on blurred warehouse as background
Firma de Código

Asegurar la cadena de suministro de Software : Confianza digital en un mundo sin confianza

Leer más