Resumen
La seguridad de la CI/CD se utiliza para proteger los canales de código con pruebas y verificaciones automáticas y así evitar que se generen puntos vulnerables en la distribución del software. Si la incorpora a su canal, puede proteger el código de los ataques, evitar las pérdidas de datos, cumplir con las políticas y garantizar la calidad.
La integración y la distribución continuas (CI/CD)
La CI/CD (distribución, implementación e integración continuas) consiste en una serie de pasos, los cuales se visualizan como canales, que deben realizarse para ofrecer una versión nueva del software. Incorpora la automatización y la supervisión permanente al desarrollo de aplicaciones con el objetivo de reducir los errores humanos y mantener un proceso que permita desarrollar código de buena calidad con mayor rapidez.
Por lo general, las etapas principales de los canales de CI/CD no incluyen medidas de seguridad, lo cual significa que deben tomarse otras medidas para proteger el proceso de desarrollo.
Problemas comunes en torno a la seguridad de la CI/CD
Sin las medidas de seguridad adecuadas, la agilidad propia de los procesos de desarrollo e implementación puede exponer los canales a varios riesgos:
- La divulgación de información confidencial a fuentes externas
- El uso de elementos de terceros o códigos no seguros
- El acceso no autorizado a las herramientas de diseño o los repositorios de código fuente
La identificación y eliminación de los puntos vulnerables a lo largo del ciclo de desarrollo garantiza que los cambios en el código se prueben minuciosamente y cumplan con los estándares de seguridad antes de su implementación en la etapa de producción.
La importancia de la CI/CD para DevSecOps
DevSecOps (desarrollo, seguridad y operaciones) es un enfoque que aborda la cultura, la automatización y el diseño de plataformas, el cual integra la seguridad como una responsabilidad compartida a lo largo de todo el ciclo de vida de la TI. Uno de sus elementos fundamentales es la incorporación de un canal de CI/CD seguro.
La CI/CD resulta esencial para este enfoque porque automatiza e incorpora las verificaciones de seguridad al comienzo del proceso de desarrollo, lo cual garantiza que los comentarios relacionados con los posibles puntos vulnerables se obtengan rápidamente. Esto, a su vez, facilita la adopción de un enfoque de seguridad preventivo durante todo el ciclo de vida de las aplicaciones.
Uno de los principios básicos de CI/CD y DevSecOps es implementar medidas de seguridad desde el comienzo, es decir, mover ciertas actividades y tareas orientadas a la seguridad a las primeras etapas del proceso de desarrollo del software. Esta práctica incluye la automatización de los procesos de prueba que se encargan de buscar problemas de seguridad, la revisión de los cambios en el código apenas se confirman y el fomento de una cultura general de concienciación sobre la importancia de la seguridad preventiva entre los equipos de operaciones y los desarrolladores.
Medidas para proteger los canales de CI/CD
Etapa de planificación: para asegurarse de que el código sea seguro y cumpla con los estándares correspondientes, es importante incluir verificaciones de seguridad en todas las etapas del canal. El primer paso es desarrollar un plan para los productos, el cual servirá para identificar las posibles amenazas a la seguridad. Esto se conoce como elaboración de modelos de amenazas, un proceso que permite identificar los posibles puntos vulnerables y tomar las medidas necesarias para disminuir los riesgos.
Codificación: verifique que el código de los desarrolladores esté escrito según los lineamientos de diseño y los estándares definidos previamente. Utilice herramientas de análisis de código fuente para identificar aquellos fragmentos que puedan estar expuestos a amenazas de seguridad.
Compilación: a medida que los desarrolladores comiencen a confirmar los cambios del código fuente en un repositorio compartido, asegúrese de que se activen las pruebas automáticas para verificar que las compilaciones cumplan con los requisitos.
Pruebas: una vez que finalice la compilación, verifique si el software tiene errores. Si se agregan funciones nuevas, deberán realizarse más pruebas automáticas.
Red Hat puede ayudarlo
Red Hat® OpenShift ® permite que las empresas utilicen la CI/CD para automatizar el diseño, las pruebas y la implementación de las aplicaciones en las plataformas locales y de nube pública.Red Hat OpenShift y Red Hat Ansible® Automation Platform, junto con las tecnologías de nuestros partners, crean una base para DevSecOps y le permiten abordar los desafíos de seguridad durante todo el ciclo de vida de sus aplicaciones en contenedores, lo cual incluye el desarrollo, la implementación y el tiempo de ejecución.
Para garantizar el buen funcionamiento de su empresa, es fundamental prevenir los posibles problemas de seguridad en la cadena de suministro del software. Sin embargo, para proteger la cadena de suministro de software de las aplicaciones desarrolladas en la nube, es necesario que equipos grandes de ingenieros y desarrolladores trabajen durante meses. Red Hat Trusted Software Supply Chain es una familia de servicios de nube que agiliza este proceso, puesto que intercepta los puntos vulnerables más importantes antes de que ingresen al sistema y ayuda a las empresas a agregar protecciones al ciclo de vida de desarrollo del software.
Red Hat Advanced Cluster Security (ACS) for Kubernetes es la primera plataforma de seguridad del sector desarrollada en Kubernetes, con la cual las empresas pueden diseñar aplicaciones en la nube e implementarlas y ejecutarlas de forma más segura. Esta solución permite proteger las cargas de trabajo de Kubernetes organizadas en contenedores en las principales nubes y plataformas híbridas, como Red Hat OpenShift, Amazon Elastic Kubernetes Service (EKS), Microsoft Azure Kubernetes Service (AKS) y Google Kubernetes Engine (GKE).
Red Hat Trusted Application Pipeline (en versión de prueba) ofrece definiciones predeterminadas de canales y verificaciones de seguridad automatizadas para generar imágenes de compilación de nivel 3 del marco Supply chain Levels for Software Artifacts (SLSA) a partir de códigos de aplicaciones en varios lenguajes de programación. Esto incluye la creación de una lista con los elementos del software (SBOM) certificada e inalterable que genera automáticamente una cadena de confianza para los elementos open source y las dependencias transitivas.