UNIR Revista
La metodología DevSecOps busca integrar la seguridad en todos los procedimientos para desarrollar un software con el objetivo de que sea de mayor calidad y eficiencia.
DevSecOps es una filosofía de trabajo que integra la seguridad de la información durante todo el ciclo de vida de un software, desde su concepción, definición, desarrollo, funcionamiento y mejora continua hasta la implementación de requisitos, mecanismos, pruebas, etc. DevSecOps es un paso más en la metodología DevOps: a “dev” (desarrolladores, developers en inglés) y “ops” (operaciones, operations en inglés) se les incorpora “sec” (seguridad, security).
Al igual que DevOps, DevSecOps tiene tanto que ver con la cultura y la responsabilidad compartida como con cualquier tecnología o técnica específica. Los objetivos de DevSecOps son lanzar software más rápido, y detectar y responder a fallos del software en producción de manera más rápida, eficaz y eficiente. En este sentido, es importante contar con profesionales especializados en el área con titulaciones como el Máster en Ciberseguridad online de UNIR.
Características de DevSecOps
Estas son las características principales de DevSecOps:
Conciencia y propiedad de la seguridad.
Todos los involucrados en el desarrollo y las operaciones del software deben ser conscientes de las buenas prácticas de seguridad y tener un sentido de responsabilidad de los resultados. La filosofía “la seguridad es responsabilidad de todos” debe ser parte de la cultura DevSecOps.
Operación automatizada.
Para alinearse con el alto grado de automatización presente en la mayoría de las cadenas de herramientas de CI/CD, las herramientas de seguridad DevSecOps deben ejecutarse con una automatización completa, sin pasos manuales, sin configuraciones, sin scripts Debe proporcionar información sobre la seguridad de la aplicación incluso cuando los desarrolladores deseen evitar ejecutar una prueba de seguridad por temor a que los ralentice.
Resultados rápidos.
Las herramientas de seguridad deben producir resultados casi en tiempo real porque la velocidad es una prioridad de los equipos de DevOps.
Amplio alcance.
Las herramientas de seguridad deben funcionar en todos los tipos de entornos informáticos, incluidos contenedores, Kubernetes, PaaS, clouds híbridos… Además, deben proporcionar información sobre todos los tipos de aplicaciones, incluidas las aplicaciones que se basan principalmente en software de código abierto, así como las de terceros, de las que no se dispone del código fuente.
Pruebas de seguridad.
Se deben realizar evaluaciones de seguridad en las primeras etapas del ciclo de vida del desarrollo de software (escaneo de código, SAST), para detectar las vulnerabilidades antes de que lleguen a producción. Sin embargo, también se necesitan realizar en los entornos de producción (escaneo en tiempo de ejecución, DAST) por cuatro razones:
- En producción es donde ocurren la mayoría de los ataques.
- Escanear el código fuente no es tan eficiente en la detección de vulnerabilidades como escanear la aplicación en tiempo de ejecución.
- Es posible que algunas aplicaciones que ejecutan en producción no se hayan ejecutado a través de su entorno de desarrollo, por lo que nunca fueron escaneadas por las herramientas de seguridad.
- Para detectar nuevas vulnerabilidades de día cero.
Precisión.
La automatización es importante, pero también necesita precisión y calidad para evitar falsas alertas de seguridad o vulnerabilidades (falsos positivos) o no detectar aquellas que sean reales (falsos negativos).
Aceptación de los desarrolladores.
DevSecOps debe ser aceptado por las personas que desarrollarán el software, ejecutarán las pruebas, buscarán vulnerabilidades y solucionarán los problemas de seguridad que se encuentren.
Etapas de la metodología DevSecOps
DevSecOps interconecta el desarrollo de software, la seguridad de la información y las operaciones. Su objetivo es integrar la seguridad en el proceso de integración y entrega continua (CI/CD) en entornos de preproducción (desarrollo) y producción (operaciones). Analizamos cada una de estas etapas:
1. Desarrollo
Los equipos de desarrollo crean nuevas aplicaciones de software:
- Aplicaciones personalizadas e integradas, diseñadas para un propósito único y
- específico.
- Interconexiones a través de API entre sistemas existentes y nuevos.
- Aplicaciones que reutilizan código fuente abierto/librerías para acelerar y simplificar el desarrollo de software.
Actualmente, el desarrollo de software se basa en metodologías ágiles que dan prioridad a la mejora continua frente a desarrollos secuenciales de las metodologías tradicionales, en cascada. Si los desarrolladores trabajan de forma aislada sin tener en cuenta las operaciones y la seguridad, las nuevas aplicaciones o características pueden presentar problemas operativos o vulnerabilidades de seguridad que pueden ser difíciles y lentos de solucionar.
2. Operaciones
Las operaciones se refieren a los procesos que ejecutan la funcionalidad del software en su uso:
- La supervisión del rendimiento del sistema.
- La corrección de los defectos.
- La realización de pruebas después de las actualizaciones y cambios.
- La configuración del sistema.
La utilización de DevOps se ha generalizado en los últimos años como una forma de combinar la operación con el desarrollo. Las operaciones posteriores al desarrollo secuencial o en cascada puede facilitar la identificación y el tratamiento de problemas, pero este enfoque requiere que los desarrolladores retrocedan y resuelvan los problemas de software antes de que puedan avanzar con un nuevo desarrollo. Esto añade mucha complejidad, en lugar de la agilidad de un flujo de trabajo de software optimizado.
La integración de operaciones en paralelo con los procesos de desarrollo de software permite a las organizaciones reducir el tiempo de implementación y aumentar la eficiencia.
3. Seguridad
La seguridad se refiere a todas las herramientas y técnicas necesarias para diseñar y construir software que resista a ataques, así como para detectar y responder a defectos (vulnerabilidades o brechas) lo más rápido posible.
De manera general, la seguridad de las aplicaciones se ha considerado siempre una vez finalizado el desarrollo, y por un equipo de personas especializado y separado tanto del equipo de desarrollo como del de operaciones. Este enfoque hacía que el proceso de desarrollo fuese más lento, con unos costes de subsanación mucho más grandes y el tiempo de reacción más elevado.
Además, las pruebas de seguridad analizaban solo esa aplicación y, a menudo, solo su código fuente. Esto hacía que fuera difícil para cualquier persona tener una visión de todos los problemas de seguridad o comprender el posible impacto de los riesgos del software en producción.
Frente a esto, con DevSecOps, al hacer que la seguridad de las aplicaciones se integre con el desarrollo y las operaciones (desde el diseño inicial hasta la implementación final), las organizaciones pueden alinear los tres componentes más importantes de la creación y entrega de software.
Método DevSecOps vs. enfoque en cascada
El desarrollo de software tradicional se denomina enfoque en cascada porque cada etapa del proceso (diseño, desarrollo, prueba y aprobación final) está separada de modo que una fase solo puede comenzar cuando se completa la anterior.
En la mayoría de las organizaciones, la metodología de desarrollo en cascada ha sido reemplazada por Agile, que separa un proyecto en sprints, que van añadiendo funcionalidades en iteraciones cortas de tiempo a las aplicaciones o sistemas. Sin embargo, en esta metodología las pruebas de seguridad todavía se siguen realizando al final del sprint. Este retraso obliga a los desarrolladores a volver atrás para corregir los problemas de seguridad, lo que puede propiciar errores y requiere mucho tiempo.
DevSecOps permite que las pruebas de seguridad se realicen automáticamente al mismo tiempo en el que se realizan los desarrollos y pruebas. Por ejemplo, los desarrolladores pueden ejecutar pruebas de seguridad en la etapa de desarrollo casi en tiempo real para evitar perder el tiempo cambiando de contexto. También es posible ejecutar pruebas de seguridad en tiempo de ejecución para que puedan descubrir vulnerabilidades en el software en producción.
Retos de implementar DevSecOps
El primer reto, y quizás el más importante, para la implementación de DevSecOps es la concienciación de las personas involucradas en el desarrollo del software; que sean conscientes de que la seguridad de este es tan importante como las características, funciones y la experiencia de usuario. Además, deben familiarizarse con las mejores prácticas de seguridad en el desarrollo de software y la utilización de herramientas de seguridad de DevSecOps.
El segundo desafío es elegir las herramientas de seguridad adecuadas e integrarlas con el flujo de trabajo DevOps. Cuanto más automatizadas sean las herramientas de DevSecOps, menos formación y cambios serán necesarios.