Antes de entrar en materia, en un entorno SecDevOps hay que tener en cuenta que primero se debe establecer una estructura DevOps estable y continua antes de introducir el apartado de seguridad a la ecuación. Un entorno formado por hasta tres o más equipos aislados, pero que trabajan de forma conjunta en una única dirección empresarial y de negocio para integrar nuevos desarrollos o versiones de forma ágil, segura y estable. Cada parte del equipo se responsabiliza de variables cómo son desarrollo, seguridad, operaciones, etc. En definitiva, una unión de personas, procesos y tecnología para proporcionar valor continuamente a los clientes.
Es importante para agilizar los procesos de trabajo implementar enfoques DevOps. Algunos de los principales errores que cometen las empresas que intentan implementar SecDevOps, son que los roles no están bien definidos, provocando confusión y un trabajo desorganizado que lleva a pérdidas económicas y de tiempo en entornos de producción. Es por ello que hay que establecer unos principios para lograr una comunión entre las diferentes estructuras en una empresa IT. Logrando, finalmente, apoyado con un equipo de seguridad, un proceso de integración SecDevOps.
Vamos a analizar paso a paso cada uno de los equipos de integración y la importancia para el negocio.
Entendamos primero qué es DevOps
En entornos típicos DevOps, por un lado, tenemos al equipo de Developers. Estos se encargan dela parte de construcción del software, de las características o features que se van a sacar a producción. Y, por otro lado, tenemos al equipo de operaciones, un equipo típico de administración, el que se encarga de llevar toda la parte de infraestructura y administración de aplicaciones. DevOps cuenta con unos aspectos fundamentales que podemos resumir:
- Control de versiones: como son Git, SVN, GitHub, GitLab, Mercurial.
- Integración continua: Automatización de compilaciones y pruebas cuando se hace commit con pipelines como Jenkins.
- Entrega continua: Un suministro de software rápido.
- Infraestructura como código: Definición de la infraestructura mediante archivos basados en texto para simular entornos complejos.
- Supervisión y registro: Recopilación de métricas. Prometheus o Grafana.
- Aprendizaje validado: Análisis de datos para mejorar los procesos en cada nuevo ciclo.
Además, los operadores se encargan de velar porque las aplicaciones estén estables y que el servicio sea continuado durante todo el tiempo. Adicionalmente, dependiendo del tamaño de la compañía, es habitual que este segundo equipo lleve otros entornos, como un entorno de integración UAT para hacer pruebas de usuario y un entorno preproductivo para hacer pruebas de carga y estrés, muy similares al entorno de producción.
Como vemos, cada equipo tiene diferentes responsabilidades claramente definidas. Los dos equipos tienen intereses diferentes y cada uno va a verificar que se cumplan de forma independiente. Al equipo de desarrollo le interesa la agilidad para construir sus nuevas aplicaciones y las nuevas características del producto en producción. Al equipo de operaciones le interesa la estabilidad para que el trabajo sea más llevadero, con menos estrés, sin la presión de la amenaza que puede provocar la caída de todo o parte del servicio. Y como apartado adicional, el equipo de seguridad se encarga de pruebas para ayudar a la integración de ambos equipos de manera segura y estable, evolucionando al SecDevOps.
Problemas típicos en DevOps y la solución con SecDevOps
Antes de introducir al equipo de seguridad y pasar a un enfoque SecDevOps, pueden haber numerosos inconvenientes, sobre todo en empresas que no cuentan con la suficiente madurez, o sencillamente son pequeñas. De forma habitual esto pasa cuando no se tiene una cultura DevOps.
Algunos problemas que podemos identificar en DevOps son los siguientes:
- Aislamiento de equipos. No hay comunicación entre el equipo de operaciones y el de desarrollo, provocando desajustes en la implementación.
- Calendario de releases fijos, los equipos de desarrollo prefieren tener un calendario fijo sin importar la estabilidad del sistema, por ejemplo todos los viernes.
- Puesta en producción más lenta.
- Roces no deseados entre los equipos. Provocados por el aislamiento y la falta de comunicación.
- Baja automatización.
- Scripts rudimentarios. Y códigos que se van haciendo cada vez más complejos.
- Rotaciones en los equipos. Normalmente por bajas o promociones.
La falta de sinergia entre los equipos puede provocar una ruptura en la empresa. Los equipos DevOps utilizan scripts que sirven para automatizar y organizar las tareas de despliegue, manejo de logs y otras funciones, son funcionalidades que facilitan considerablemente el trabajo.
Sin embargo, con la rotación en los equipos y teniendo en cuenta que estos suelen manejar scripts propios, no unificados ni validados por un equipo de seguridad y auditoria y que en muchos casos realizan modificaciones que llegan a suponer verdaderos monstruos intratables, ya sea por la necesidad de entregar el trabajo de forma rápido o bien falta de conocimiento.
Esta situación genera problemas a largo plazo, ya que nadie se responsabiliza y audita esos scripts. Añadiendo un equipo de seguridad podemos efectuar un sistema unificado y conjunto, creando así un sistema DevSecOps fuerte y seguro.
DevOps vs SecDevOps
Comparando ambas, DevOps vs SecDevOps son muy similares en cuanto a funcionamiento. La diferencia primordial con DevSecOps son la implementación de buenas prácticas y un procedimiento estable. Un equipo de seguridad como punto de unión entre operaciones y desarrollo se convierte en un pilar clave por numerosas razones:
- Alto rendimiento
- Mejores productos
- Entregas más rápidas
- Satisfacción del cliente
- Mejoras de objetivos comerciales
- Métricas
- Automatización más fiable
Este equipo adicional se encarga de organizar las actualizaciones de seguridad para el funcionamiento integral y mantenimiento de operaciones en una monitorización sin peligros. Implementar test de seguridad automatizados antes y después de cada proyecto. Avisar al equipo de desarrollo de los posibles peligros que hay en la infraestructura. Y mejorar la monitorización para que ambas partes en SecDevOps trabajen es sus labores sin ninguna preocupación.
El equipo de seguridad también está pendiente de comprobar la seguridad en equipos que utilicen software de código libre si fuese el caso. Como por ejemplo Docker, una de los programas más usados a la hora de integrar aplicaciones a través de contenedores e imágenes.
También son necesarios procesos de seguridad a la hora de ejecutar tareas con un sistema de gestión. De esta forma, con SecDevOps es más fiable una integración, distribución e implementación continua en cualquier entorno para el negocio y el cliente.