DevSecOps: Integración de seguridad en las canalizaciones de CD

Descubre cómo DevSecOps impacta en la canalización de CD y en el nivel de seguridad de los equipos de desarrollo ágiles.

Juni Mukherjee Juni Mukherjee

¿Qué es DevSecOps?

El término "DevSecOps" sirve para describir un ciclo de vida de desarrollo de software (SDLC) de entrega continua y centrado en la seguridad. DevSecOps se basa en los aprendizajes y buenas prácticas del concepto general de DevOps. La aplicación de los valores de DevOps a la seguridad de software significa que la verificación de la seguridad se convierte en una parte activa e integrada del proceso de desarrollo. Tradicionalmente (y, por desgracia, a menudo) la seguridad se ha considerado un sistema secundario. Muchas veces InfoSec interactúa con los equipos de desarrollo al final del SDLC. Aunque las intenciones sean buenas, puede ser frustrante descubrir vulnerabilidades de seguridad al final del SDLC.

DevSecOps convierte la estrategia tradicional de seguridad en un proceso activo de SDLC. El concepto general de DevOps ha introducido procesos como la integración continua (CI) y la entrega continua (CD). Estos procesos garantizan que se realicen pruebas de manera activa, así como la verificación de la corrección del código durante el proceso de desarrollo ágil. Del mismo modo, DevSecOps integra auditorías de seguridad activas y pruebas de penetración en el desarrollo ágil. En el concepto de DevSecOps, la seguridad debe incorporarse en el producto y no aplicarse a un producto ya terminado.

Una llave en un candado | CI/CD de Atlassian

¿Para qué sirve DevSecOps?

Muy sencillo: para la seguridad. En un tiempo en el que nuestros medios de vida se basan en la tecnología, es esencial contar con un software seguro que garantice su protección. En la actualidad, las infracciones de seguridad son una de las mayores amenazas que afrontan organizaciones y Gobiernos. Recientemente, varias organizaciones de primer nivel han sufrido ataques con grandes consecuencias, incluidas importantes dimisiones a nivel ejecutivo. Mientras los fallos empresariales llenan los titulares, los clientes pierden la confianza en los proveedores de servicios afectados.

Los principios de DevSecOps fomentan la colaboración y evitan las entregas tardías a los profesionales de seguridad. El valor es evidente cuando se revisan los tiempos de ciclo antes y después. Antes de DevSecOps, el producto podía considerarse inseguro en el último minuto, lo que provocaría varias y costosas repeticiones. Después de DevSecOps, los principales estándares de seguridad se integran en tu producto. Es posible que, en el último minuto, detectes incidencias con las que no contabas; sin embargo, la probabilidad es mucho menor.

Así, la pregunta correcta no es "para qué sirve DevSecOps", sino "cómo actuar correctamente en la era de DevSecOps". Si sigues con medidas de seguridad tradicionales, DevSecOps será como un soplo de aire fresco. Las soluciones podrían cambiar según tus recursos tecnológicos y tu arquitectura: no existe una solución única impuesta desde una organización centralizada.

En general, tu nivel de seguridad mejora tu credibilidad en el mercado y fomenta la confianza entre los consumidores. Con eso en mente, conviene analizar la integración del concepto de DevSecOps en el paradigma de Continuous Everything.

DevSecOps y Continuous Everything

Las vulnerabilidades de seguridad pueden existir en las bibliotecas de OSS (software de código abierto) que importamos, al igual que en el código que escribimos. Numerosos desarrolladores realizan programaciones a diario y las revisiones de código manuales no escalan. Es aquí donde entra en escena el auténtico poder de DevSecOps.

DevSecOps y Continuous Everything son dos caras de la misma moneda. DevSecOps funciona junto al paradigma de Continuous Everything y pone la continuidad al servicio de la seguridad de nuestros productos de software.

Las canalizaciones de entrega continua son implementaciones del paradigma de Continuous Everything y sirven para verificar las confirmaciones hechas por los equipos. Integra controles automáticos de seguridad con la canalización para disponer de avisos tempranos y supervisar las vulnerabilidades de seguridad que han conseguido burlar las medidas de protección. Las estrategias de seguridad continua escalan al ritmo que crece tu negocio.

Las pruebas unitarias y el análisis de código estático operan más cerca del código fuente y llevan a cabo comprobaciones sin ejecutar el código. Recuerda que el coste de los defectos es bajo cuando estos se detectan en las pruebas; medio, si se detectan en el entorno de ensayo, y alto durante la producción. Por lo tanto, invierte en pruebas unitarias de seguridad y analizadores estáticos, ya que son baratos y rápidos, y pueden ahorrar problemas en etapas posteriores de la canalización.

Implementación de seguridad continua: pruebas unitarias

La primera implementación que hagas de seguridad continua debe ser en pruebas unitarias de seguridad.

En Conceptos básicos sobre la canalización de entrega continua, definíamos los componentes como las unidades mínimas para pruebas y distribución. Se pueden validar mediante pruebas unitarias. Las pruebas unitarias de seguridad son tan importantes como las demás pruebas unitarias que escribimos, pero algunos equipos siguen ignorando esta categoría.

SAST

Además de detectar infracciones en las prácticas recomendadas de programación, los analizadores de código estático detectan vulnerabilidades de seguridad en el código que tienes y en las bibliotecas que importas (y que pueden estar sin protección). Esto se denomina SAST (pruebas de seguridad de análisis estático, por sus siglas en inglés) y las herramientas modernas se integran bien con la canalización de entrega continua. Escoge un escáner SAST que sea compatible con el lenguaje de programación de tu elección.

Eso sí, recuerda que SAST puede reportar falsos positivos y, por lo tanto, planea una capa de persistencia que ayude a las canalizaciones a "recordar". Los falsos positivos pueden importunar al equipo, hasta el punto de que dejen de responder a las notificaciones de canalización rota… y eso es peligroso. Cuando los equipos identifiquen un error como un falso positivo con la justificación adecuada, evita que la canalización lo marque de nuevo, ya que los equipos podrían deshabilitar SAST o hacer que las canalizaciones ignoren errores SAST.

DAST

Los componentes poco vinculados constituyen un subsistema. Los subsistemas se pueden implementar y someter a pruebas en busca de vulnerabilidades de seguridad mediante DAST (pruebas de seguridad de análisis dinámico). Al contrario que las SAST, las DAST examinan una aplicación desde fuera mientras está en marcha, igual que lo haría un atacante. Los analizadores de DAST pueden no tener ninguna dependencia sobre idiomas específicos, ya que interactúan con la aplicación desde fuera.

Lo importante es incluir SAST y DAST en tu estrategia de seguridad, ya que cada uno de estos enfoques aporta sus ventajas únicas. Integra ambos conceptos con la canalización de CD para obtener feedback desde el primer momento.

DevSecOps es el futuro de la seguridad

En la actualidad, la calidad y la seguridad son trabajo de todos. No dejes que un grupo cerrado de "autoproclamados" expertos restrinja tu visión. Las corporaciones y los ejecutivos reactivos que lo han hecho han tenido que afrontar graves consecuencias y están renovando su estrategia de seguridad con un nuevo presupuesto.

Los profesionales que aplican un concepto tradicional de seguridad operan en silos, entornos cerrados cuya capacidad está limitada por el número de personal de seguridad que incluyen. En su lugar, adopta el enfoque ágil y descentralizado de DevSecOps y vuelve a dar a tus equipos las riendas de su destino. Además, deja la responsabilidad en manos de los equipos de desarrollo de productos y acaba con las tensiones con el Departamento de InfoSec.

Con el crecimiento de la comunidad de DevSecOps, la seguridad no es solo una prioridad empresarial, sino también lo más importante que debe integrarse con la canalización de entrega continua. Si haces que continuidad y seguridad vayan de la mano, te espera un gran futuro en la entrega de software.