DevSecOps - como integrar la seguridad en procesos DevOps

Publicado el 20 enero 2021 por José María Acuña Morgado @jmacuna73
Las aplicaciones de software son complejas y pueden ser vulnerables a una amplia variedad de problemas de seguridad. La cultura empresarial frecuentemente sitúa la seguridad en la fase final del ciclo de vida del desarrollo de software. DevSecOps se centra en desplazar la seguridad hacia la izquierda, es decir, en lugar de adoptar un sistema de respuesta a incidentes, todos son responsables de la seguridad desde el principio, incluso en las etapas de planificación.
DevSecOps fusiona la seguridad, el desarrollo y las operaciones para que actúen de forma conjunta y lograr un objetivo común al realizar mejoras en los procesos, herramientas y colaboraciones en equipo.


¿Qué es SDLC?


El ciclo de vida del desarrollo de software, conocido por las siglas en ingles SDLC o Systems Development Life Cycle, es un proceso de construcción o mantenimiento de sistemas de software y representa las diferentes fases que, por lo general, incluyen desde el análisis preliminar hasta las pruebas y evaluación posteriores al desarrollo del software.
Este proceso incorpora los modelos y metodologías que los equipos de desarrollo utilizan para desarrollar software, metodologías que constituyen el marco para planificar y controlar todo el proceso de desarrollo.

Metodologías SDLC


Actualmente, hay dos metodologías SDLC que son utilizadas por la mayoría de los desarrolladores de software, la metodología tradicional y metodología ágil.
En el ciclo de vida de desarrollo tradicional, los desarrolladores y sus equipos suelen fijar reuniones con otros equipos involucrados en el proceso SDLC con el objetivo de detallar los requisitos funcionales y de diseño previos al comienzo de la implementación.
A la fase de diseño le sigue la fase de codificación. La fase de pruebas tiene lugar cuando se completa todo el proceso de codificación y solo se presenta el producto final a las partes interesadas después de que en estas pruebas no se detecte ningún problema.
Una de las desventajas de esta metodología tradicional es que los equipos construyen el sistema de manera "única". En el supuesto de que surja un problema durante la fase de pruebas, lo peor de este escenario es que todo el módulo/desarrollo tiene que revertirse para rectificar ese problema.
Otro inconveniente del SDLC tradicional es que, en la mayoría de los casos, las partes interesadas no conocen a priori lo que realmente quieren implementar en el sistema, por lo tanto, el modelo de requisitos diseñado en las fases anteriores puede no cumplir con las características reales que deben implementarse.
Las solicitudes de cambio de los usuarios o partes implicadas pueden establecerse después de que el producto final sea presentado y lanzado al mercado y este cambio puede causar varios problemas de compatibilidad e integridad del software.
Con todos estos inconvenientes, surge la necesidad de establecer un proceso iterativo donde los cambios puedan realizarse de forma más ágil.
Es en este punto dónde se crea la metodología ágil para los procesos de desarrollo de software donde el cliente está presente en todas las fases de desarrollo.
Esta metodología facilita la interacción entre todas las partes implicadas ya que se pone el foco en las personas y no en los procesos, permitiendo dimensionar los proyectos de forma más eficiente minimizando los riesgos.

Cultura DevOps


Sin embargo, la metodología Agile no resuelve el problema de comunicación entre los diferentes elementos que conforman el proceso de desarrollo de un sistema software: el equipo de desarrollo y el equipo de operaciones.
El término DevOps se conforma combinando las palabras "desarrollo" y "operaciones" y supone un cambio cultural que cierra la brecha entre los equipos de desarrollo y operación.
DevOps no es simplemente un proceso o un enfoque diferente para el desarrollo, es un cambio de cultura que implica un cambio de mentalidad, una mejor colaboración y una integración más estrecha.

Modelo DevSecOps


Este modelo integra la seguridad en el proceso DevOps ayudando a prevenir y abordar los riesgos de seguridad a medida que aparecen en el ciclo de desarrollo.
Este tipo de seguridad incorporada a DevOps tiene como objetivo incluir una cultura y prácticas de seguridad en todo el flujo de trabajo de DevOps dando como resultado un lanzamiento de producto más rápido y seguro.
La incorporación de medidas de seguridad en las primeras fases del desarrollo de software supone un ahorro en costes generales para cualquier organización y la seguridad debe adoptar un enfoque de responsabilidad compartida entre todos los miembros de los equipos IT: seguridad, desarrollo y operaciones.
En esencia, DevSecOps ha cambiado la naturaleza misma de cómo se debe implementar la seguridad de las aplicaciones y hace referencia a la seguridad integrada y no su perímetro de seguridad.

Laboratorio




Jose Maria Acuña Morgado - Web Developer - Ethical Hacking