DevSecOps Explicación y Ejemplos de Herramientas
DevSecOps Explicación y Ejemplos de Herramientas

DevSecOps: Explicación y Exploración de la Seguridad en DevOps

La mayoría de nosotros no es ajeno al concepto de DevOps, la versión consolidada de “desarrollo de software” (dev) y “operaciones de TI” (ops). Hemos oído hablar con frecuencia de esta palabra de moda en el sector, aunque nadie parece saber a ciencia cierta lo que significa. (¡Incluso el Instituto Nacional de Estándares y Tecnología [NIST] no parece tener una definición establecida para ello!) Pero en algún momento después de la creación de este término, nos adelantamos y añadimos el tan necesario “sec” (de seguridad) a la mezcla. Eso es lo que nos dio términos como “DevSecOps“, “SecDevOps“, o para mantenerlo simple, “DevOps Security“.

Pero, ¿cuál es la diferencia entre estos términos, y el orden en que se enumera cada función realmente importa? Sí, y te diremos por qué momentáneamente. Pero primero, vamos a entender mejor lo que implica la seguridad DevOps y cómo beneficia a tu organización.

Pero, ¿cuál es la diferencia entre estos términos, y el orden en que se enumera cada función realmente importa? Sí, y en seguida te diremos por qué. Pero primero, vamos a entender mejor lo que implica la seguridad de DevOps y cómo beneficia a tu organización.

DevOps: La Base para la SecDevOps / DevSecOps / DevOps Security

La historia de DevOps es una evolución cruzada. Es importante entender que los desarrolladores y los chicos de “Ops” trabajaban antes en equipos separados. Los desarrolladores escribían el código y el equipo de operaciones de TI tenía que desplegar ese código, lo cual era un proceso laborioso y muy manual. Al final, solía haber mucha disputa entre los dos equipos durante estos traspasos.

DevOps surgió como una filosofía o práctica que reunió todos los procesos del desarrollo de software, desde la codificación hasta el despliegue, en un solo ciclo, por lo que ahora, en lugar de trabajar en silos, trabajan hacia el mismo objetivo final de pasar a producción a un ritmo más rápido, con un mecanismo de retroalimentación incorporado en todo el proceso.

Estructura y herramientas utilizadas en DevOps
Estructura y herramientas utilizadas en DevOps

Pero cuando empezaron a trabajar juntos, los expertos del sector empezaron a reconocer la importancia de integrar la seguridad en las aplicaciones y la infraestructura al principio del ciclo de desarrollo del producto. Aquí es donde entra en juego DevSecOps.

DevSecOps: ¿Qué es DevOps Security?

Concepto de DevSecOps
Concepto de DevSecOps

Así que, como probablemente hayas adivinado, la seguridad DevOps es el concepto de integrar la “seguridad como código”, las pruebas de seguridad, etc. en el ciclo de desarrollo y funcionamiento de una aplicación antes de que salga al mercado. La seguridad se convierte en una responsabilidad compartida por todos los implicados y se introduce desde el principio en lugar de ser una idea a posteriori.

Si se observa el entorno DevOps, en el que todos trabajan juntos como un equipo único y colaborativo, se produce una mejora general del proceso de garantía de calidad. En el mundo anterior a DevOps, los procesos eran aislados, lentos, costosos y con problemas de confianza inherentes.

Todo esto está muy bien, pero ¿cuál es el término “real” para este enfoque de colaboración? La respuesta depende de tu organización y del lugar que ocupe la seguridad en tu lista de prioridades. Por ejemplo:

  • ¿La seguridad es lo primero (secure DevOps, también conocido como SecDevOps)?
  • ¿Es la seguridad una consideración secundaria (DevSecOps)? O
  • ¿Es la seguridad algo que debe integrarse al final del ciclo de desarrollo del software? (DevOpsSec)?

Sin embargo, siendo realistas, todo se reduce a la integración intrínseca de la seguridad en el ciclo de vida de la producción. En última instancia, todos estos términos significan lo mismo, sólo es cuestión de cómo se priorizan las tres funciones y qué término prefiere utilizar.

Echemos un vistazo a algunas de las fases importantes de DevOps para entender cómo la seguridad se integra con DevOps general como DevOps Security (Seguridad DevOps).

Cómo Integrar la Seguridad en el Ciclo de Vida de DevOps

Ciclo de vida del software DevSecOps
Ciclo de vida del software DevSecOps. Fuente The U.S. Department of Defense

DevSecOps: Pruebas Automatizadas con la Seguridad en Mente

La automatización de pruebas implica escribir casos de prueba eficaces con la máxima cobertura del código y va de la mano con la metodología ágil para que puedas entregar un sprint en un par de semanas. Al realizar cambios en tu código, si los casos de prueba fallan, sabrás si el código funciona o no. La integración de herramientas de seguridad DevOps (como SonarQube, Checkmarx, etc.) para realizar pruebas de seguridad automatizadas y continuas ayuda a los desarrolladores a escribir un código más limpio y a crear aplicaciones más seguras.

DevSecOps: Integración Continua para Mejorar el Rendimiento y la Seguridad

Anteriormente, había plazos fijos o tiempos de corte consistentes en los que los desarrolladores debían confirmar los cambios en el código fuente en un único repositorio. Una vez que todos los desarrolladores enviaban el código, por la noche se ejecutaba y se probaba, y se creaba una nueva compilación denominada compilación nocturna.

Concepto integración en DevSecOps
Concepto integración en DevSecOps

La Integración Continua (CI) anima a los desarrolladores a enviar su código con frecuencia para evitar la acumulación de errores. Pueden utilizar un sistema de control de versiones (como Git) y, por cada commit, se activará el proceso automatizado de verificación y compilación. Con la construcción e integración continuas (que utilizan herramientas como Jenkins), dado que las pruebas y los servicios de verificación están automatizados y se sitúan en el entorno de construcción, los errores pueden identificarse más rápidamente, y el tiempo que se tarda en validar y publicar las actualizaciones del software se reduce considerablemente.

Volviendo a la seguridad, invertir en analizadores de código estático para corregir las vulnerabilidades durante las pruebas unitarias no sólo reduce el coste del defecto, sino que además incorpora la seguridad al producto en lugar de aplicarla al final del ciclo de vida del mismo. Sin embargo, las herramientas de pruebas estáticas de seguridad de aplicaciones (SAST) pueden informar de falsos positivos, y es vital entrenar a tu herramienta para que deje de marcar falsos positivos en el contexto de tu aplicación. Además, dado que la mayoría de las aplicaciones desarrolladas hoy en día también se basan en gran medida en el código fuente abierto, la gestión de la seguridad del código abierto (OSSM) se ha convertido en algo fundamental junto con las metodologías SAST (pruebas de caja blanca) y DAST (pruebas de caja negra).

DevSecOps: Entrega Continua con la Seguridad en Primer Plano

La entrega continua (CD) amplía el proceso de integración continua para automatizar el proceso de entrega de código (utilizando herramientas como Puppet y Chef) a un entorno de pruebas o de producción. También se puede supervisar el rendimiento, el impacto en el negocio, etc. del software desplegado (utilizando herramientas como New Relic). Normalmente, durante las pruebas y la supervisión, se obtiene una valiosa información que puede utilizarse para planificar el siguiente sprint.

Con DevSecOps, tenemos ciclos CI/CD centrados en la seguridad con auditorías de seguridad, revisiones de código, pruebas de penetración, etc. inyectadas en el ciclo de vida del desarrollo de software. Es igualmente importante estar atento a los exploits de día cero y utilizar herramientas de infraestructura como código (IaC) para evitar el error humano.

Los Retos que Existen en la Seguridad de DevOps

El mayor obstáculo que se presenta en el camino de la implementación de DevOps o DevSecOps es que no puede ser desplegado y ejecutado con éxito sólo con el uso de herramientas. Requiere un cambio cultural masivo desde dentro de la organización – y no importa el tamaño de la organización, tales transformaciones requieren tiempo, esfuerzo y directivas y orientación claras de su liderazgo.

Los empleados pueden resistirse al cambio y, la mayoría de las veces, los desarrolladores y los profesionales de la seguridad tienen objetivos muy diferentes. Mientras que los desarrolladores están motivados en términos de añadir funcionalidades, los equipos de infoseguridad están más que contentos de eliminar cualquier característica que pueda disminuir la seguridad general del producto.

Nube de palabras de DEVSECOPS
Nube de palabras de DEVSECOPS

A menos que ya exista una cultura de colaboración con una mínima fricción entre los equipos, puede ser difícil conseguir que los grupos trabajen al unísono.

Es útil pensar en DevSecOps en términos de personas, procesos y tecnología, precisamente en ese orden. Las personas son la clave de un entorno DevSecOps eficaz y maduro. En una organización en la que los empleados no están de acuerdo con la idea, no se puede implementar a la fuerza a través de la tecnología.

Pero una vez que el personal está de acuerdo con el concepto, la estandarización y la documentación proporcionan la estructura necesaria para que el proceso sea ejecutable y repetible. Los procesos pueden ayudar a definir los flujos de trabajo, las tareas y las responsabilidades. La tecnología viene en último lugar y equipa a las personas para que proporcionen las soluciones necesarias para implementar la infraestructura como código, el fortalecimiento del host, los escaneos automatizados, etc.

6 Herramientas DevSecOps de Uso Común

El análisis de código, la monitorización del cumplimiento, la evaluación de vulnerabilidades, etc. son componentes esenciales cuando hablamos de adoptar un enfoque SecDevOps. Pero, ¿qué herramientas podemos utilizar para implementar estas tecnologías? Vamos a sumergirnos en algunas de estas herramientas que pueden ayudarte a automatizar y ofrecer seguridad continua.

1. Chef

Chef es una herramienta de gestión de configuración automatizada de código abierto que convierte la infraestructura en código (IaC, o un proceso conocido como infraestructura como código). Se basa en scripts, comúnmente conocidos como recetas que se compilan en libros de cocina (cookbooks), para administrar y mantener las políticas y configuraciones de tus redes y sistemas en el entorno DevOps. Utilizando Chef, un administrador puede asegurarse de que todos los sistemas están configurados en los estados correctos de forma automática según los requisitos de los scripts, evitando así cualquier mal funcionamiento del hardware.

2. GitLab

Ilustración de uso de GitLab
Ilustración de uso de GitLab

Con GitLab, no sólo puedes almacenar tu código utilizando el control de versiones Git, sino que también puedes obtener el control de tu cadena de herramientas DevOps. Ofrece un montón de funciones, y puedes pasar de la planificación a la monitorización utilizando una única interfaz. Lo mejor de todo es que, al estar centrado en la seguridad, puede desplazarse hacia la izquierda en el proceso de desarrollo para incorporar la seguridad desde el principio. A la larga, puede ayudarte a evitar las compensaciones entre velocidad y seguridad.

3. SonarQube

SonarQube, una solución de código abierto ofrecida por SonarSource, evalúa la calidad del código realizando una inspección continua del mismo y revisiones automáticas a través del análisis estático de código para detectar errores y vulnerabilidades de seguridad incluso mientras el desarrollador codifica. Esta versátil herramienta

  • soporta 27 lenguajes de programación,
  • proporciona información sobre el proyecto a través de gráficos, y también
  • ofrece informes sobre pruebas unitarias, cobertura del código, errores, complejidad del código, código duplicado, etc.

4. Red Hat Ansible

Ansible se encuentra en el lado de las operaciones del proceso de desarrollo de productos y ayuda a los administradores de sistemas a gestionar su infraestructura mediante módulos de automatización de forma eficaz. Estos módulos (escritos en Python, Powershell, etc.) se activan secuencialmente en función de las especificaciones definidas por el usuario en el libro de jugadas de Ansible (escrito en YAML fácilmente comprensible). Se encarga de la automatización de TI, la gestión de la configuración (incluidas las configuraciones de seguridad) y los despliegues automáticos para que, a medida que la empresa se amplía, se mantenga la coherencia en todos los entornos y se reduzca el alcance de los errores humanos o las violaciones del cumplimiento.

5. SaltStack

SaltStack es una de las soluciones actualmente soportadas por Sectigo para DevOps. Al igual que Chef, es una herramienta de gestión de configuración automatizada con la gran diferencia de que, por defecto, utiliza un modelo de configuración basado en push mientras que Chef está casi siempre configurado para estar basado en pull.

SaltStack está basado en Python, y las instrucciones pueden ser escritas en YAML o DSL. Aunque la fase de configuración puede ser un poco más desafiante que el resto, una vez configurado, es extremadamente simple de usar. También viene armado con un efectivo mecanismo de reporte y es perfecto para ambientes diseñados con escalabilidad y resiliencia en mente.

6. Aqua Security

Aqua es una plataforma de seguridad nativa de la nube que protege los contenedores, las aplicaciones sin servidor y las basadas en VM. Se puede utilizar para integrar la seguridad desde el principio en cada etapa del proceso de DevSecOps. Desde las pruebas de seguridad exhaustivas hasta los controles basados en políticas y las capacidades de prevención de intrusiones, puede proporcionar múltiples capas de protección en toda la pila para detectar y mitigar los riesgos. Utiliza la automatización, los controles de seguridad basados en perfiles de comportamiento aprendidos por la máquina y se asegura de que las máquinas virtuales, los contenedores y las funciones permanezcan inmutables durante el tiempo de ejecución para evitar cambios no solicitados.

En Resumen

SecDevOps tiene la ventaja de vincular la seguridad con el producto desde el principio del ciclo de vida del desarrollo de software. Aparte de minimizar los cuellos de botella y los costes de seguridad, también acelera la entrega de aplicaciones, además de crear productos de calidad. DevSecOps, junto con las metodologías ágiles, es el camino a seguir, ya que aporta múltiples beneficios y se convierte en una situación en la que todos los implicados salen ganando a largo plazo.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda