Implementamos DevSecOps: Garantizando la Seguridad de tus Datos en Cada Lanzamiento

Implementamos DevSecOps: Garantizando la Seguridad de tus Datos en Cada Lanzamiento

Durante mucho tiempo antes de que fuera desarrollador una de mis primeras pasiones fue el mundo del hacking, en una época en donde todo estaba abierto. Luego pasé a convertirme en desarrollador de software, que es mi pasión actual.

Durante el último tiempo, junto al equipo de desarrolladores (Golo y Cris), hemos estado trabajando en mejorar nuestro paso a producción, pero ¿qué es esto de “paso a producción”? Para los que no están familiarizados con estos conceptos, técnicamente se conoce como integración continua (CI). Es una práctica que consiste en automatizar las pruebas y compilación de código de forma regular para garantizar que un proyecto de software se construye correctamente y se ejecutan pruebas automáticamente. Esto lo realizamos con una herramienta llamada GitHub Actions, que es una plataforma de CI/CD integrada en GitHub que permite configurar y automatizar flujos de trabajo de CI/CD directamente desde un repositorio de GitHub. En resumen, GitHub Actions facilita la implementación de la integración continua en proyectos alojados en GitHub.

Iniciando el viaje.
En lo personal, el desarrollo es un viaje continuo en el que vas ganando experiencia y enfrentando un camino en ocasiones  desconocido, en el que la toma de decisiones para la gestión de proyectos es clave. Te comparto 5 grandes puntos que fuimos recorriendo y que pueden ilustrar mejor el objeto de este blog: 

  1. Lo primero que hicimos fue mejorar nuestros test, conocidos como TDD o "Desarrollo Guiado por Pruebas" (Test-Driven Development en inglés), esta es una metodología de desarrollo de software que se basa en escribir pruebas automatizadas antes de escribir el código de producción.
  2. Luego, nos preocupamos por la calidad de nuestro código, tenemos algunas reglas internas, pero implementamos una herramienta llamada RuboCop para el análisis estático, para el lenguaje de programación Ruby. Ayuda a los desarrolladores a mantener un código Ruby consistente y limpio al identificar y sugerir correcciones para problemas de estilo y convenciones de codificación.

  1. Desde la perspectiva de la seguridad integramos Static Analysis Security Testing (SAST), un enfoque de pruebas de seguridad que examina el código fuente o los archivos binarios de una aplicación, en busca de vulnerabilidades de seguridad sin ejecutar el programa. Identifica posibles problemas de seguridad, como vulnerabilidades de inyección de código, errores de configuración y otros riesgos, ayudando a los desarrolladores a corregirlos antes de que se conviertan en problemas en tiempo de ejecución. Esto lo realizamos con Brakeman, una herramienta de seguridad estática para aplicaciones web Ruby on Rails. Analiza el código fuente en busca de vulnerabilidades de seguridad comunes y proporciona informes para ayudar a los desarrolladores a corregir posibles problemas.

  1. Integramos Dynamic Application Security Testing (DAST), que es un enfoque de pruebas de seguridad que permite evaluar una aplicación en tiempo de ejecución. Simula ataques reales desde fuera de la aplicación, buscando vulnerabilidades de seguridad, como fallos de autenticación, inyecciones SQL y otros riesgos potenciales. A diferencia de las pruebas estáticas, DAST se centra en la capa exterior de la aplicación y no requiere acceso al código fuente. Ayuda a identificar vulnerabilidades que podrían ser explotadas por atacantes y a tomar medidas para proteger la aplicación.

  1. GitGuardian es una plataforma de seguridad cibernética que se especializa en la protección de secretos y datos sensibles en repositorios de control de versiones, como Git. Utiliza escaneos automáticos para detectar y alertar sobre posibles exposiciones de información confidencial, como claves de API, contraseñas y otros datos privados. GitGuardian ayuda a las organizaciones a mantener sus datos seguros y a prevenir posibles fugas de información en sus proyectos de desarrollo.

Entonces ¿cómo funciona esto en la realidad?, en simple cada vez que un desarrollador quiere pasar su código a producción Github Action, realiza las pruebas en un entorno de QA, esperando la aprobación del responsable del proyecto para luego ser desplegado a producción. Esto nos ayuda mucho a estar continuamente monitoreando y alertando ante cualquier fallo de seguridad y, de cierta manera, nos obliga a mantener actualizado nuestros repositorios, ya sea pasando a una versión actual de ruby,  obligarnos a actualizar nuestro framework ruby on rails, o alguna librería que esté presentando algún tipo de vulnerabilidad.





Una triada que no puede faltar: DevSecOps.

La metodología que intentamos aplicar, desde el área de desarrollo, también es conocida como DevSecOps. El famoso DevSecOps es una metodología que combina el desarrollo de software (Dev) con la seguridad (Sec) y las operaciones (Ops), en un proceso continuo e integrado. Su objetivo principal es incorporar la seguridad en todas las etapas del ciclo de vida de desarrollo de software, desde la planificación y el diseño hasta la implementación y el monitoreo, en lugar de tratar la seguridad como una consideración posterior. DevSecOps implica la integración de prácticas de seguridad en todas las fases de desarrollo de aplicaciones web.

Algunas de las ventajas de implementar DevSecOps en proyectos en Rails incluyen:
  • Mejora de la seguridad: Al integrar la seguridad desde el principio, se reducen las vulnerabilidades y se protegen los datos de los usuarios y la infraestructura contra amenazas.
  • Detección temprana de vulnerabilidades: Mediante la automatización de pruebas de seguridad y análisis estático y dinámico, se pueden detectar vulnerabilidades en un estado temprano del desarrollo.
  • Rápida respuesta a amenazas: DevSecOps permite una respuesta más rápida a las amenazas y la corrección de vulnerabilidades, lo que disminuye el tiempo de exposición de los riesgos.
  • Ciclos de desarrollo más cortos: La automatización de procesos de seguridad y pruebas, permite acelerar el ciclo de desarrollo sin comprometer la calidad ni la seguridad.
  • Cumplimiento normativo: Al abordar la seguridad desde el principio, es más fácil cumplir con las regulaciones y estándares de seguridad requeridos en algunos sectores.
  • Cultura de seguridad: Fomenta una cultura de seguridad en todo el equipo, donde todos los miembros son responsables de la seguridad en lugar de recaer únicamente en el equipo de seguridad.
  • Mayor confiabilidad y disponibilidad: Al evitar ataques y vulnerabilidades, las aplicaciones en Rails se vuelven más confiables y menos susceptibles a interrupciones no planificadas.

No puedo dejar pasar la oportunidad de mostrar algunos ejemplos de código y de cómo lo podemos aplicar:









Así ha sido este viaje, desde mis primeros días apasionados por el mundo del hacking hasta mi presente como desarrollador de software, hemos emprendido un camino significativo para fortalecer nuestro "paso a producción". La integración continua, materializada a través de GitHub Actions, ha sido el pivote de esta transformación, asegurando la calidad, seguridad y eficiencia de nuestros desarrollos.
Nuestro enfoque en el desarrollo guiado por pruebas (TDD) ha elevado la robustez de nuestro código, respaldado por herramientas como RuboCop, para garantizar coherencia y limpieza a la hora de programar. En paralelo, nos hemos comprometido con la seguridad, incorporando tanto pruebas estáticas como dinámicas, con Brakeman y DAST. La colaboración con GitGuardian refuerza la protección de datos sensibles y secretos en nuestros repositorios.

La implementación de GitHub Actions como parte de nuestra estrategia DevSecOps, es un reflejo de nuestro compromiso continuo con la seguridad integral en todas las fases del desarrollo. Esta metodología no solo apunta a la mejora de la seguridad y la detección de vulnerabilidades tempranas, sino que también acelera nuestros ciclos de desarrollo sin sacrificar calidad ni seguridad.

Al abordar la seguridad desde el inicio, hemos buscado establecer  una cultura de seguridad que involucre a todo el equipo. Este enfoque no solo cumple con normativas y estándares, sino que también, fortalece la confiabilidad y disponibilidad de nuestras aplicaciones en Rails.

En resumen, nuestra travesía desde el hacking hasta el desarrollo de software nos ha llevado a implementar prácticas avanzadas que no solo garantizan la excelencia técnica, sino que también promueven la seguridad y la transparencia. Este viaje continúa, y estamos comprometidos a mantenernos a la vanguardia de las mejores prácticas para ofrecer soluciones confiables, ágiles, bajo cumplimientos normativos, robustas  y seguras en cada entrega. La automatización desempeña un papel crucial en la implementación exitosa de DevSecOps al permitir pruebas y análisis continuos de seguridad.

Si quisieras mejorar tu proceso o conversar sobre el mismo no dudes en escribirme a felipe@cymasuite.com con mucho gusto te puedo orientar.