Skip to main content

¿Qué es la detección de desviaciones de infraestructura?

Escrito por

Lauren Place

9 de marzo de 2022

0 minutos de lectura

Aviso de obsolescencia: detección de desviaciones de recursos gestionados

La detección de desviaciones de recursos gestionados, que incluye snyk iac describe --only-managed and snyk iac describe --drift, es obsoleta. La fecha de obsolescencia para la detección de desviaciones de recursos gestionados es el 30 de septiembre de 2023.

Muchas veces, las expectativas no coinciden con la realidad. Si ya comenzaste a usar infraestructura como código (IaC) para gestionar la infraestructura, ya estás en camino a lograr que los procesos de aprovisionamiento en la nube sean más seguros. Pero existe otra cuestión que se debe considerar en el ciclo de vida de la infraestructura: cómo saber qué recursos aún no gestiona IaC en la nube. Y si pensamos en los recursos gestionados, ¿permanecen iguales en la nube que cuando se definieron en el código?

Siempre hay cambios en las cargas de trabajo en la nube. Aumentar la cantidad de cargas de trabajo que se ejecutan en la nube implica más personas y servicios autenticados que interactúan con infraestructuras, en diversos entornos de nube. A medida que cada vez más personas adoptan la IaC y el código base de la IaC se agranda, es mucho más difícil controlar los cambios o garantizar que las modificaciones manuales de las configuraciones se estén considerando. Por este motivo, la detección de desviaciones es crucial para proteger lo que esté automatizado, luego de que se haya implementado y se encuentre en la nube.

En esta publicación de blog, veremos qué es una desviación de infraestructura, qué la causa y cómo gestionar las desviaciones, ya sea que desarrolles sin ayuda o formes parte de una gran empresa. Si quieres obtener más información sobre cómo detectar y evitar desviaciones de infraestructura, consulta este artículo.

¿Qué es una desviación de infraestructura?

Una desviación de infraestructura (o lo que llamaremos “desviación” aquí) se produce cuando el estado en tiempo real de la infraestructura no coincide con lo que se define en la configuración de la IaC. Esta diferencia entre lo que se definió en el código y lo que existe en la nube puede tener muchas causas.

Al usar IaC o tener una mayor cobertura de IaC de los recursos de nube, se reduce al mínimo la cantidad de desviaciones. Al definir configuraciones y prácticas recomendadas de seguridad antes de una implementación, se reduce la necesidad de cambiar la configuración luego desde la consola en la nube. De todos modos, puede haber ciertos cambios inevitables debido a emergencias o errores humanos.

Las desviaciones pueden ser producto de entradas humanas, configuraciones incorrectas y cambios no deseados que hacen las aplicaciones, entre otras. Dos de las principales causas de las desviaciones se relacionan con problemas en flujos de trabajo o procesos, como cambios manuales en una consola en la nube que no se llevaron como código, o cambios que se aplicaron a algunos entornos, pero no se propagaron a otros.

Principales causas de desviaciones de infraestructura:

  1. Cambios manuales. Se crean o editan recursos manualmente en la consola, por fuera de Terraform, CloudFormation u otra IaC.

  2. Aplicaciones autenticadas. Los microservicios no funcionan como se espera.

  3. Entornos de IaC no sincronizados. Hay cambios ocultos o no observados entre entornos.

¿Qué es la detección de desviaciones?

La detección de desviaciones es el proceso continuo de descubrir desviaciones en la infraestructura de nube que gestiona la IaC, en particular, las desviaciones de IaC que suponen un riesgo de seguridad para la organización. Lo ideal sería que los resultados de una herramienta de detección de desviaciones se comuniquen de una forma amigable para los desarrolladores (como un recurso de Terraform que se informa directamente con el formato adecuado) de modo que los desarrolladores puedan comprender rápidamente el problema y corregirlo en la infraestructura implementada.

Puedes considerar todo esto como la segunda etapa de la seguridad de IaC. Se trata de buscar problemas por configuraciones incorrectas y aplicar protecciones de seguridad en la IaC durante los pipelines de desarrollo y compilación, pero también después, en el entorno de producción.

“Cada desviación implica incertidumbre, tiempo dedicado a la resolución y un posible problema de seguridad”.

Persona en un puesto de DevOps

La detección de desviaciones es muy importante, ya que la seguridad depende de lo que en verdad esté implementado y se esté ejecutando en los entornos de nube. Existe una falsa sensación de seguridad cuando la gestión de la infraestructura con IaC está automatizada, pero las cosas cambian. Por eso es necesaria la detección de desviaciones. Es crucial saber siempre qué es lo que está automatizado y sumar seguridad a todo el ciclo de vida de la infraestructura, desde el momento en que se escribe una configuración de IaC hasta después de que se implementa en la nube.

¿Qué sucede si no se gestiona una desviación?

Un desarrollador puede hacer mucho daño con claves de IAM y un SDK, aunque tenga o no la intención de hacerlo. Encontrar estas malas decisiones a tiempo y revertir la situación a un estado saludable y seguro es crucial.

Entre los resultados perjudiciales de una desviación de la configuración de infraestructura se incluyen los siguientes:

  • Filtraciones de datos. Una desviación puede exponer datos críticos.

  • Aplicaciones con tiempo de inactividad. Una desviación puede bloquear aplicaciones.

  • Errores de implementación. Una desviación puede impedir una implementación.

En cada uno de estos casos, aumentar la cobertura de IaC o garantizar que un mayor porcentaje de la infraestructura se gestione con IaC puede ayudar a minimizar la desviación o a remediar los problemas más rápido que si no se gestionan con IaC. A diferencia de las implementaciones de infraestructura automatizadas con IaC, las configuraciones manuales (o los recursos no gestionados) tardan más en configurarse y son propensas a errores. Con IaC, puedes estandarizar la configuración de la infraestructura, de modo que la posibilidad de tener errores en la configuración o de eliminar dependencias sea menor (como una política de IAM o una regla de grupos de seguridad faltante).

En el caso de las filtraciones de datos, si todos los recursos se gestionan con IaC, puedes estandarizar los controles de seguridad y evitar o mitigar los problemas, como la publicación de un bucket de S3. En el caso de tiempos de inactividad, puedes controlar de forma eficiente la infraestructura y volver a implementar la última versión correcta antes de que ocurra el desastre.

Detección de desviaciones o gestión de desviaciones

La gestión de desviaciones representa una solución de seguridad más holística para reducir el riesgo de desviaciones y aplicar remedios rápidos al detectar desviaciones de recursos gestionados y de recursos no gestionados en los entornos de nube de modo que puedan controlarse.

En un mundo ideal, los equipos de desarrollo y seguridad tendrían un 100 % de cobertura de IaC de los recursos de la nube y un flujo de trabajo sería algo así: se detecta un recurso no gestionado, luego se importa como código y, a continuación, se prueba y se lleva a un estado seguro y correcto según las prácticas recomendadas de seguridad de IaC y las políticas de cumplimiento que haya definido la empresa.

Cómo mantener la infraestructura protegida y sincronizada con el código

Una receta integral para ofrecer seguridad de IaC consiste en lo siguiente:

  1. Aumentar la cobertura de IaC de los recursos de nube en todos los entornos de nube.

  2. Adoptar una herramienta de seguridad para IaC a fin de escanear las configuraciones en los pipelines de desarrollo y compilación para encontrar antes cualquier problema de configuración y cumplir con las revisiones de seguridad.

  3. Aprovechar la solución de IaC (Terraform o AWS CloudFormation) para detectar la sincronización de infraestructuras.

  4. Utilizar una herramienta de detección de desviaciones de código abierto (driftctl) para encontrar desviaciones en producción e informar estos resultados a los desarrolladores, en su idioma.

  5. Actuar sobre los descubrimientos de driftctl: los desarrolladores deben agregar más líneas de código e importarlas tal cual están en Terraform.

  6. Cerrar el bucle de comentarios con la herramienta de seguridad de IaC que uses (o snyk iac test) para proteger las configuraciones de Terraform creadas recientemente.

  7. Limpiar y repetir, hasta que la cobertura sea suficiente; si es necesario, verificar cada región.

  8. Por último, crear tantas tareas recurrentes como sean necesarias para emitir alertas (por ejemplo, una verificación por hora sobre cualquier cambio de IAM y una verificación diaria para servicios de nube menos críticos).

Qué se debe tener en cuenta al mitigar desviaciones

Actualmente, en el mercado existen varias herramientas para detectar y gestionar desviaciones. Sin embargo, para elegir una herramienta, debes tener en cuenta algunas cuestiones.

Al tomar una decisión, pregúntate qué nivel de acceso se le otorga a la herramienta (es decir, acceso total, acceso de solo lectura o una política de privilegio mínimo). Algunas herramientas, como Terraform, exigen acceso autenticado total, mientras que otras solo necesitan acceso de solo lectura. Driftctl (mencionada más arriba) funciona con acceso de privilegio mínimo, que es el nivel más bajo necesario para detectar desviaciones.

Gestión de desviaciones con Snyk IaC

Si te interesa controlar con IaC los recursos no gestionados, además de detectar desviaciones de los recursos gestionados, Snyk ofrece justamente eso. La gestión de desviaciones en Snyk IaC te permite proteger la infraestructura con mayor rapidez informando problemas y correcciones directamente a los desarrolladores, en su idioma. Al crear un bucle de comentarios veloz entre los equipos de desarrollo y seguridad en la nube, los desarrolladores tendrán la capacidad de hacerse cargo de Terraform desde el código a la nube y proteger las configuraciones de la infraestructura luego de las implementaciones. La segunda parte consiste en revelar los recursos no gestionados en los entornos de nube, de modo que puedas controlarlos con IaC y reducir el riesgo de tener desviaciones desde un comienzo.

Protege la infraestructura desde la fuente

Snyk automatiza la seguridad y el cumplimiento de IaC desde los flujos de trabajo, y detecta recursos faltantes y desviados.

Snyk Top 10: Vulnerabilites you should know

Find out which types of vulnerabilities are most likely to appear in your projects based on Snyk scan results and security research.