Demostración en vídeo de este post
Existe un amplio abanico de técnicas y herramientas aplicadas al DevSecOps y cada organización aplica las que considera necesarias dependiendo su propia cultura organizativa y plan estratégico. No es un proceso sencillo dada la amplia variedad de productos disponibles, por lo tanto se necesita una investigación previa para saber cuáles son las herramientas que realmente ayudarán a cumplir con los objetivos marcados, aquellas que aportarán soluciones y no más problemas.
Con esto en mente, encontrarás a continuación una lista de 15 herramientas que puedes aplicar a procesos de DevOps y DevSecOps que te pueden resultar interesantes.
Es una solución de Atlassian que favorece la gestión ágil de proyectos y permite trabajar en equipo. Cuenta con tableros Scrum y Kanban para la asignación y seguimiento de tareas, así como la gestión de bitácoras para que todos los integrantes conozcan las actividades que se van a desarrollar en el calendario, así como los «issues» que se encuentran abiertos, cerrados y sin asignar. Además, por si fuese poco, para cada proyecto creado en Jira existe la posibilidad de gestionar ciertas etapas del SDLC, tales como los despliegues y las entregas.
¿Dónde se aplica en el SDLC?: Se implementa desde la etapa de planificación y se utiliza durante todo el ciclo de vida del proyecto.
Ambas son soluciones muy extendidas y es posible que tengas algún repositorio creado en una o ambas. Sin embargo, han ido evolucionando y ahora no solamente son repositorios de fuentes, en el caso de GitLab hay funciones que permiten la integración y despliegue continuo por medio de ficheros de configuración que definen de qué manera se debe construir, probar, desplegar y montorizar. En el caso de GitHub existe GitHub Actions, que también permite realizar estas mismas funciones, aunque es probable que actualmente GitLab CI/CD sea una solución más adecuada que GitHub para entornos empresariales.
¿Dónde se aplica en el SDLC?: Inicialmente en la etapa de construcción para el almacenamiento del código y posteriormente, en las etapas de despliegue y release (liberación)
Si la aplicación se encuentra escrita en Java, es posible que los desarrolladores utilicen Eclipse IDE. Es un entorno de desarrollo integrado que lleva más de dos décadas en desarrollo y cada vez es más estable y potente. Cuenta con múltiples integraciones que permiten realizar pruebas SAST sobre el código fuente y por supuesto, también le permite a los desarrolladores subir el código desarrollado a un SCM como GitHub y desplegar localmente las aplicaciones con servidores web integrados. Por otro lado, el IDE no solamente soporta Java, cuenta con complementos que permiten integrar otros lenguajes de programación como Python y C++
¿Dónde se aplica en el SDLC?: En la etapa de construcción y pruebas SAST
Es un entorno integrado muy liviano que destaca por su simplicidad de uso y la cantidad de complementos que se pueden instalar, los cuales son los que realmente le brindan una potencia que pocos IDEs tienen. Entre otras cosas, cuenta con complementos que permiten verificar ficheros IaC tales como Dockerfile, Jenkinsfile y ficheros de configuración YAML de Kubernetes, así como otros que permiten la ejecución de programas basados en Python, Ruby o Java sin necesidad de «salir» del entorno.
¿Dónde se aplica en el SDLC?: En la etapa de construcción y pruebas SAST
Maven es uno de los proyectos más extendidos en las aplicaciones basadas en J2EE y permite, entre otras cosas, ejecutar la compilación, testing y empaquetado de una forma sencilla y ordenada. Probablemente uno de sus principales beneficios es la gestión de dependencias, lo que permiten controlar todas las librerías y sus correspondientes versiones desde un único fichero «pom.xml», con lo cual actualizar o cambiar la versión de una librería o componente resulta tan simple como cambiar dicho fichero.
¿Dónde se aplica en el SDLC?: En la etapa de construcción y pruebas SAST
Se trata de una librería muy potente para pruebas unitarias sobre código Javascript, lo cual no significa que solamente esté limitado a los frameworks en el lado del cliente, también es capaz de realizar pruebas sobre aplicaciones basadas en Node.js. Es muy similar a otros frameworks como JUnit o PyUnit, en donde se crean los casos de prueba y se ejecutan con el objetivo de comprobar que el código es capaz de responder a las condiciones declaradas.
¿Dónde se aplica en el SDLC?: En la etapa de pruebas SAST
Selenium es uno de los proyectos Open Source más extendidos a la hora de ejecutar cualquier tipo de navegador web y ejecutar de forma automática, casos de pruebas que estarán compuestos por peticiones HTTP a uno o varios sitios web. Funciona como una librería que se puede implementar en múltiples lenguajes de programación tales como Java, Python o Ruby y sobre la que se soportan decenas de herramientas de QA para realizar pruebas en aplicaciones web. De hecho, es una librería que implementan herramientas de pentesting web tales como ZAP (Zed Attack Proxy) a la hora de «levantar» un navegador web controlado por la herramienta y capturar todas las peticiones HTTP que se realizan desde dicho navegador.
¿Dónde se aplica en el SDLC?: En la etapa de despliegue para la ejecución de pruebas de calidad (QA) y DAST.
Es una herramienta muy potente que soporta el análisis de código sobre 17 lenguajes de programación. Cuenta con una versión comunitaria, la cual es Open Source y tres versiones comerciales con unas características y soporte añadido. Entre otras cosas, es capaz de analizar el código fuente de la aplicación y detectar vulnerabilidades, defectos y «code smells». Cuenta con una WebUI completa en el que es posible gestionar múltiples proyectos y usuarios, lo que facilita la gestión de los defectos encontrados y la asignación de los mismos a cualquier integrante del equipo.
¿Dónde se aplica en el SDLC?: En la etapa de pruebas SAST
Estas son las primeras 8 herramientas del listado, en el siguiente post se explicarán otras 7 herramientas que son muy habituales en DevOps y DevSecOps.
Un saludo y Happy Hack!
Adastra.