SecDevOps: La agilidad debe ser segura
Creo que no hace falta definir ni explicar el concepto de DevOps y de lo que ha supuesto para las organizaciones: desarrollos de aplicaciones más ágiles, entrega de versiones continuas, aprovisionamiento automático de entornos (máquinas virtuales, SOs, aplicaciones, contenedores, etc), autoescalado…y un largo etcétera que ha permitido en definitiva aproximar el desarrollo de las aplicaciones a las necesidades de negocio. También ha permitido derrumbar ese muro imaginario que separaba los equipos de desarrollo de los de sistemas, permitiendo que ambos mundos converjan y permitan sacar lo mejor de cada uno: el conocimiento de la aplicación y la operatividad de los sistemas.
Y en este mundo idílico, hay que preguntarse ¿ Debemos sacrificar la seguridad por la agilidad ? ¿Realmente un cambio que se entrega rápido en producción por una necesidad urgente de negocio, debe hacerse a cualquier precio ? Posiblemente en el 80 o 90% de los casos no ocurrirá nada: estará bien desarrollado, el despliegue no dejará ninguna puerta abierta, los sistemas de producción están en su última versión, las protecciones perimetrales funcionan…pero existe una posibilidad de que esto no sea así, y basta que alguien la aproveche para dejar a nuestro negocio fuera de juego.
Por ello, desde hace tiempo se viene hablando de SecDevOps o DevSecOps, lo puedes llamar según como de importante sea la seguridad para tí. Al final, no es más que incorporar la seguridad a este modelo de trabajo conjunto que es el DevOps. ¿ Y cómo podemos incorporar la seguridad en un modelo dinámico como el de DevOps ? Si conoces parte de los sistemas de seguridad IT, sabrás que la mayoría son monolíticos y se implementan por capas. Cuanto más capas de seguridad pongas para acceder al dato, más seguro es. Afortunadamente, los sistemas de seguridad se actualizan e innovan, y han sabido adaptarse a esta nueva época.
Para que te hagas una idea de las posibilidades que existen, paso a continuación a enumarar las diferentes soluciones de seguridad que existen, en función de la fase en la que se encuentre el modelo DevOps:
Fase Desarrollo: Siempre se ha dicho que cuanto más cerca del desarrollador se encuentre el fallo, menos costará solucionarlo. No es lo mismo encontrarlo en la parte del código del desarrollador cuando hace el commit, que encontrarlo en la última versión desplegada de producción. Pues en seguridad se puede hacer lo mismo, se puede aplicar un escaneo del código generado (en el momento de hacer el build) en busca de vulnerabilidades de librerías, malware incrustado, compliance, etc. Si se encuentra un error de seguridad en esta fase, el impacto será mínimo y el coste para solucionarlo también.
Entornos de Pre y Test: En esta fase previa a la puesta en producción, donde ya se encuentra la aplicación totalmente desarrollada y a un paso de producción, se pueden pasar test de vulnerabilidades tanto de la aplicación como de los sistemas, crowlers que recorran las webs e intenten inyectar código en los formularios e incluso si tenemos un buen analista de seguridad en plantilla, podría hacer un pentest para detectar posibles puntos de entrada que los escaneos automáticos no detectan. Encontrar un fallo de seguridad en esta fase siempre será mejor que encontrarlo ya en producción, o peor aún, que te lo encuentre algún externo !
Entorno de Producción: Una vez se encuentra en producción, estas aplicaciones se encuentran protegidas por las medidas de protección perimetrales que haya implantadas en el entorno de pro: Firewalls, IPS o WAF son las medidas más comunes. Pero existen soluciones software de IPS (conocidas como Host IDS/IPS) que se instalan en los servidores de producción y que protegen de forma individual a cada equipo, analizando los procesos que se ejecutan, analizando el tráfico que entra y sale del equipo, etc. Estas soluciones al estar instaladas sobre cada equipo, deben poder automatizarse si nuestro entorno es de DevOps, de forma que para cada entorno que se depliegue de forma automática, la solución de seguridad irá desplegada con ella, y customizada. Esto significa que no son las mismas reglas de protección si se despliega un servidor Web, un servidor de aplicaciones o una base de datos.
No es mi intención hablar sobre productos comerciales que encajan en las soluciones que describo, si no que conozcas que existen y tengas una breve descripción de lo que hacen. El mundo de la seguridad se mueve a la vez que el resto de áreas TIC, y que si DevOps es la palabra de moda de los últimos 2-3 años, a partir de ahora debe evolucionar y añadirle el prefijo SEC.