Acerca de esta guía
En esta guía se describen los cambios de mayor impacto que puede realizar para mejorar la seguridad de los sistemas de compilación. Cada sección detalla un cambio que puedes hacer a tus procesos para mejorar la seguridad. Los cambios de mayor impacto se enumeran primero.
¿Cuál es el riesgo?
Algunos ataques en las cadenas de suministro de software se dirigen directamente al sistema de compilación. Si un atacante puede modificar el proceso de compilación, puede aprovechar el sistema sin el esfuerzo de poner en peligro las cuentas personales o el código. Es importante asegurarse de proteger el sistema de compilación, así como las cuentas personales y el código.
Protección del sistema de compilación
Hay varias funcionalidades de seguridad que debe tener un sistema de compilación:
-
Los pasos de compilación deben ser claros y repetibles.
-
Debe saber exactamente lo que se ejecuta durante el proceso de compilación.
-
Cada compilación se debe iniciar en un entorno nuevo, de forma que una compilación en peligro no se conserve y afecte a futuras compilaciones.
GitHub Actions puede ayudarle a cumplir estas funcionalidades. Las instrucciones de compilación se almacenan en el repositorio, junto con el código. Puede elegir en qué entorno se ejecuta la compilación, incluidos Windows, Mac, Linux o ejecutores que hospede personalmente. Cada compilación comienza con una imagen de ejecutor nueva, lo que dificulta la persistencia de ataques en el entorno de compilación.
Además de las ventajas de seguridad, GitHub Actions permite desencadenar compilaciones manualmente, periódicamente o en eventos de Git en el repositorio para compilaciones frecuentes y rápidas.
GitHub Actions es un gran tema, pero un buen lugar para comenzar es Entender las GitHub Actions, así como Sintaxis del flujo de trabajo para Acciones de GitHub y Activar un flujo de trabajo.
Firma de las compilaciones
Después de proteger el proceso de compilación, querrá impedir que alguien manipule su resultado final. Una excelente manera de hacerlo consiste en firmar las compilaciones. Al distribuir software de forma pública, esto se suele hacer con un par de claves criptográficas públicas y privadas. Use la clave privada para firmar la compilación y publique la clave pública para que los usuarios del software puedan comprobar la firma en la compilación antes de usarla. Si se modifican los bytes de la compilación, la firma no se comprobará.
La forma exacta de firmar la compilación dependerá del tipo de código que escriba y de quiénes son los usuarios. A menudo es difícil saber cómo almacenar de forma segura la clave privada. Una opción básica consiste en usar secretos cifrados de GitHub Actions, aunque deberá tener cuidado de limitar quién tiene acceso a esos flujos de trabajo de GitHub Actions. si solo se puede acceder a tu clave privada desde una red privada, otra opción es usar los corredores auto-hospedados para GitHub Actions.
Para más información, consulta Uso de secretos en Acciones de GitHub y Acerca de los ejecutores autohospedados.
Fortalecimiento de la seguridad de GitHub Actions
Hay muchos pasos adicionales que puede seguir para reforzar la seguridad de GitHub Actions. En concreto, tenga cuidado al evaluar flujos de trabajo de terceros y considere la posibilidad de usar CODEOWNERS
para limitar quién puede realizar cambios en los flujos de trabajo.
Para más información, consulta Fortalecimiento de seguridad para GitHub Actions y Uso de las características de seguridad de GitHub para proteger el uso de Acciones de GitHub.