In this article
Cómo detectar y prevenir la desviación de configuración
Pasos para detectar y prevenir eficazmente la desviación de configuración
Cómo detectar la desviación de configuración en toda tu organización
Sin importar cómo gestione tu organización la infraestructura —de forma automatizada o manual, en las instalaciones, en la nube o con una combinación de estos enfoques—, los pequeños cambios diarios son inevitables. Tus sistemas se diseñaron para usarse y modificarse según las necesidades internas y externas, por lo que cambiarán con el tiempo.
Cuando varios ingenieros y equipos interactúan con esta infraestructura de manera puntual y sin seguir los protocolos adecuados, estos microcambios pueden acumularse rápidamente y generar inconsistencias entre la configuración actual del sistema y la configuración de referencia. Así se produce la desviación de configuración: los cambios se implementan de forma incorrecta y, con el tiempo, causan problemas en la infraestructura.
¿Qué es la desviación de la configuración?
La desviación de la configuración ocurre cuando los cambios en la infraestructura de una empresa no se documentan o no se realizan correctamente, lo que puede afectar negativamente su integridad estructural. Los cambios que provocan desviaciones no siempre son inherentemente malos, pero, como alejan el sistema de la configuración de referencia que debería tener, pueden generar problemas de seguridad, cumplimiento o rendimiento si no se corrigen.
Aunque la desviación de configuración puede ocurrir en cualquier tipo de infraestructura, las empresas que tienen entornos de infraestructura como código (IaC) enfrentan desafíos particulares para corregirla y prevenirla de forma proactiva. Algunas causas se mitigan de manera predeterminada porque IaC ofrece medidas como el control de versiones, que reducen la probabilidad de implementar un cambio no documentado. Sin embargo, el ritmo acelerado del aprovisionamiento automatizado en la nube puede generar otros problemas. La desviación de configuración en DevOps, CI/CD y otros entornos de desarrollo automatizados puede acumularse con especial rapidez, simplemente porque los cambios se producen a gran velocidad.
En definitiva, la desviación en IaC ocurre cuando el estado actual de la infraestructura no coincide con la configuración de IaC codificada. Esto hace que los ingenieros trabajen con una versión desactualizada de la infraestructura, mientras que en el sistema en vivo existe una versión distinta.
¿Cuáles son las causas de la desviación de configuración?
La desviación de configuración puede producirse por diversos cambios en la estructura del sistema. Algunas de las causas más comunes son:
Cambios manuales en el sistema. Cuando alguien crea o modifica recursos manualmente, fuera del sistema de IaC establecido, como Terraform o Cloudformation, esos cambios no se reflejan en la configuración codificada.
Aplicación autenticada. Esto significa que los microservicios que realizan acciones automatizadas, como leer un script o escribir en un bucket, no funcionan según lo previsto debido a algún error. Estos errores de automatización pueden provocar desviaciones.
Cambios ocultos o no detectados en IaC. Los cambios desconocidos hacen que los entornos de IaC pierdan sincronización. Esto crea una brecha entre aquello con lo que trabajan los ingenieros y lo que realmente sucede en el sistema en producción.
Parches y actualizaciones. Para lanzar nuevos parches o actualizaciones, los ingenieros deben realizar diversos cambios en el sistema, grandes o pequeños. Cada uno de ellos puede provocar una desviación.
¿Qué ocurre cuando no se gestiona la desviación?
La desviación de configuración puede causar problemas graves a los equipos, sobre todo a los que usan IaC. Cuando el estado actual de la infraestructura no coincide con la configuración de IaC codificada, los ingenieros trabajan con una versión desactualizada de la infraestructura, mientras que en el sistema en vivo existe una versión distinta. Cuanto mayor sea la brecha entre lo que los ingenieros saben del sistema y su estado real, peor será la postura de seguridad, el rendimiento y el cumplimiento normativo del sistema.
Riesgos de seguridad
Si no se corrige, la desviación puede causar problemas graves de seguridad y exponer tus sistemas a los atacantes. Esto se debe a que los cambios puntuales y no documentados en el sistema pueden crear puertas traseras desconocidas. En muchos casos, el verdadero riesgo radica en desconocer algunos de los cambios realizados en el sistema, lo que hace que las vulnerabilidades queden sin corregir. Por ejemplo, la filtración de datos de Twilio en 2020 se debió a una desviación de configuración en un bucket de S3. Un ingeniero aplicó una solución a un problema anterior, pero durante el proceso hizo que la configuración del bucket dejara de ser segura. Al no detectarse la desviación ni tomarse medidas correctivas para restaurar la configuración segura original, pasó inadvertida durante años y, finalmente, los atacantes la aprovecharon para extraer datos personales de los usuarios.
Problemas de rendimiento
La desviación de configuración no solo causa vulnerabilidades de seguridad; también puede provocar problemas de rendimiento e interrupciones del servicio. Cuando el estado actual de tu infraestructura no coincide con el código IaC real, esta discrepancia puede dar lugar a cargas de trabajo con recursos sobredimensionados, así como a recursos y procesos no optimizados. Todas estas pequeñas inconsistencias pueden acumularse y generar numerosos problemas de rendimiento.
Incumplimientos normativos
IaC debería servir como documentación actualizada del estado de tu sistema. Cuando la desviación de configuración reduce la precisión del código IaC, los cambios pequeños no se abordan correctamente según las políticas de seguridad. Supongamos que un ingeniero abre un puerto sin reflejar el cambio en IaC. Aunque el cambio sea inofensivo, hace que el estado actual del sistema se «desvíe» del estado definido en IaC y de las políticas de seguridad correspondientes. En una auditoría, esto se consideraría un incumplimiento normativo.
Cómo detectar la desviación de configuración
Las prácticas de gestión de la desviación de configuración pueden ayudar a tu equipo a detectarla y corregirla antes de que cause problemas subyacentes. Existen varias herramientas para revisar tu infraestructura, detectar desviaciones y ofrecer pasos concretos para corregirlas.
Recursos gestionados y no gestionados
Al revisar herramientas de detección de desviaciones de configuración, es importante tener en cuenta que algunas soluciones se especializan en gestionar recursos administrados, mientras que otras están diseñadas para abordar los no administrados. Para detectar desviaciones en recursos gestionados, como los de Terraform, tu equipo necesita una solución que analice periódicamente los activos identificados en busca de señales de desviación.
Por otro lado, para gestionar recursos no gestionados, tu equipo necesita una herramienta que pueda inventariar los activos que aún no están documentados y, por lo tanto, no se revisan periódicamente para detectar desviaciones. Después de identificar los recursos no gestionados, debes tomar medidas para ponerlos bajo el control de IaC.
Herramientas para gestionar la desviación de configuración
Terraform plan. Es simplemente un comando que puedes usar en tu instancia de Terraform. Detecta desviaciones en los recursos gestionados y explica qué cambio no documentado se produjo, además de proponer un plan para corregir la desviación. Sin embargo, esta línea de comandos solo puede detectar cambios en los recursos gestionados, no en los no gestionados.
Snyk IaC. Nuestra herramienta de gestión de desviaciones de configuración busca agilizar y simplificar el proceso de detección para que los equipos puedan implementarlo fácilmente. Permite poner los recursos no gestionados bajo el control de Terraform y ampliar la cobertura de IaC en tus entornos de nube. Nuestra solución fomenta la colaboración entre los equipos de desarrollo y seguridad mediante informes fáciles de usar.
CloudQuery. Esta herramienta de código abierto para inventariar activos en la nube puede enumerar rápidamente los recursos en la nube, detectar los no gestionados y analizar varios archivos de estado. Aunque resulta útil para visualizar tus activos en la nube, tiene algunas desventajas a la hora de corregir desviaciones. CloudQuery puede ser imprecisa al buscar desviaciones en buckets de S3, ofrece compatibilidad limitada con el almacenamiento de archivos de estado en el backend, requiere una base de datos SQL y no admite todos los recursos de Terraform.
Driftctl. Este recurso de código abierto —mantenido por Snyk— puede detectar y rastrear desviaciones, además de enviar alertas. Aunque es versátil, ya que puede detectar desviaciones en recursos no gestionados y analizar varios archivos de estado, también presenta algunas limitaciones. Por ejemplo, no admite todos los recursos de Terraform. Además, algunos usuarios han tenido problemas por errores de limitación de solicitudes de la API y largos tiempos de espera al analizar en modo detallado.
La desviación de configuración es inevitable a medida que los sistemas evolucionan y cambian con el tiempo. Pero si tu organización se enfoca en identificarla y corregirla en cuanto se produce, evitarás que cause problemas más adelante y ahorrarás tiempo y recursos. Creamos Snyk IaC para ayudar a las organizaciones a gestionar y prevenir las desviaciones. Si quieres ver cómo funciona, contáctanos hoy mismo para solicitar una demostración.
Protege la infraestructura desde el origen
Snyk automatiza la seguridad y el cumplimiento de IaC en los flujos de trabajo, y detecta recursos con desviaciones de configuración y recursos faltantes.