Skip to main content

Explicación de la deriva de infraestructura y su detección

Escrito por

Lauren Place

feature iac drift pink

9 de marzo de 2022

0 minutos de lectura

Aviso de obsolescencia: detección de desviaciones en recursos administrados

La detección de desviaciones en recursos administrados, incluidos snyk iac describe --only-managed and snyk iac describe --drift, dejó de estar disponible. La fecha de fin de vida útil de la detección de desviaciones en recursos administrados es el 30 de septiembre de 2023.

Las expectativas no siempre coinciden con la realidad. Si empezaste a usar infraestructura como código (IaC) para administrar tu infraestructura, ya estás avanzando hacia procesos de aprovisionamiento en la nube más seguros. Pero hay una segunda parte del ciclo de vida de la infraestructura: ¿cómo sabes qué recursos de tu nube aún no están administrados con IaC? Y, de los recursos que sí lo están, ¿siguen igual en la nube que cuando los definiste en el código?

Las cargas de trabajo en la nube cambian constantemente. A medida que aumenta la cantidad de cargas de trabajo que se ejecutan en la nube, también aumenta el número de personas y servicios autenticados que interactúan con la infraestructura en varios entornos de nube. A medida que se adopta más IaC y crecen las bases de código de IaC, se vuelve cada vez más difícil hacer un seguimiento de los cambios o asegurarse de que se contemplen los cambios de configuración manuales. Por eso es importante detectar la deriva para proteger lo que se automatizó una vez implementado y en ejecución en la nube.

En este blog, veremos qué es la deriva de infraestructura, cuáles son sus causas y cómo gestionarla, tanto si eres desarrollador independiente como si formas parte de una gran organización. Para obtener más orientación sobre cómo detectar y prevenir la deriva de infraestructura, consulta este artículo.

¿Qué es la deriva de infraestructura?

La deriva de infraestructura, o simplemente «deriva», como la llamaremos aquí, ocurre cuando el estado de la infraestructura en tiempo real no coincide con lo definido en la configuración de IaC. Esta diferencia entre lo que está definido en el código y lo que existe en la nube puede deberse a muchos motivos.

Una ventaja de usar IaC o de tener una mayor cobertura de IaC para los recursos de la nube es que se reducen los casos de deriva. Al definir las configuraciones deseadas y las prácticas recomendadas de seguridad antes de la implementación, se reduce la necesidad de hacer cambios de configuración más adelante en la consola de la nube. Aun así, hay cambios inevitables debido a emergencias o errores humanos.

La deriva puede deberse a intervenciones humanas, configuraciones deficientes, aplicaciones que realizan cambios no deseados y otros factores. Dos de las causas más comunes de la deriva están relacionadas con problemas de procesos o flujos de trabajo, como los cambios manuales en una consola de nube que no se trasladan al código, o los cambios que se aplican a un entorno, pero no se propagan a los demás.

Causas comunes de la deriva de infraestructura:

  1. Cambios manuales: alguien accede a la consola y crea o modifica recursos manualmente, fuera de Terraform, CloudFormation u otras herramientas de IaC.

  2. Aplicaciones autenticadas: microservicios que no funcionan como deberían.

  3. Entornos de IaC desincronizados: cambios ocultos o no detectados de un entorno a otro.

¿Qué es la detección de deriva?

La detección de deriva es el proceso continuo de detectar la deriva en la infraestructura de nube administrada con IaC, especialmente las desviaciones de IaC que representan un riesgo de seguridad para tu organización. Lo ideal es que los resultados de una herramienta de detección de deriva se presenten de una manera fácil de entender para los desarrolladores (por ejemplo, con un recurso de Terraform presentado directamente con el formato adecuado), para que puedan comprender el problema y corregirlo rápidamente en la infraestructura implementada.

Puedes considerarla como la segunda fase de la seguridad de IaC. Durante el desarrollo y en los flujos de trabajo de compilación, buscas problemas de configuración incorrecta y aplicas controles de seguridad en IaC, pero también debes hacerlo después de que los cambios lleguen a producción.

«Cada evento de deriva genera incertidumbre, un tiempo de resolución y un posible problema de seguridad».

Participante de una entrevista de DevOps

La detección de deriva es importante porque tu seguridad depende de lo que realmente está implementado y en ejecución en tus entornos de nube. A menudo existe una falsa sensación de seguridad cuando automatizaste la administración de tu infraestructura con IaC, ¡pero las cosas cambian! Por eso necesitamos detectar la deriva. Es importante mantenerse al tanto de lo que está automatizado y crear seguridad _durante todo el ciclo de vida de la infraestructura_, desde el momento en que se escribe una configuración de IaC hasta después de implementarla en la nube.

¿Qué pasa si no se gestiona la deriva?

Intencionalmente o no, un desarrollador puede causar mucho daño con solo tener claves de IAM y un SDK. Es fundamental poder detectar rápidamente las malas decisiones y revertir la situación para recuperar un estado saludable y seguro.

Algunas consecuencias negativas de la deriva en la configuración de infraestructura son…

  • Filtraciones de datos: la deriva puede dejar expuestos datos críticos.

  • Tiempo de inactividad de las aplicaciones: la deriva puede hacer que las aplicaciones fallen.

  • Fallas en la implementación: la deriva puede hacer que falle la implementación.

En todos estos casos, aumentar la cobertura de IaC o asegurarse de que un mayor porcentaje de la infraestructura se administre con IaC puede ayudar a minimizar la deriva o a corregir los problemas más rápido que si no se administraran con IaC. A diferencia de las implementaciones de infraestructura automatizadas con IaC, los recursos configurados manualmente o no administrados tardan más en configurarse y son propensos a errores. Con IaC, puedes estandarizar la configuración de la infraestructura y reducir la posibilidad de errores de configuración o dependencias eliminadas (como una regla de grupo de seguridad o una política de IAM faltante).

En el caso de una filtración de datos, si todos los recursos se administran con IaC, podrías estandarizar los controles de seguridad y prevenir o mitigar problemas como que un bucket de S3 quede disponible públicamente. Si ocurre un tiempo de inactividad, podrías hacer un seguimiento de tu infraestructura de manera más eficiente y volver a implementar la última versión en buen estado anterior al incidente.

Detección de deriva vs. gestión de la deriva

La gestión de la deriva es una solución de seguridad más integral para reducir el riesgo de deriva y permitir una corrección rápida. Para ello, detecta la deriva en tus recursos administrados _y_ identifica los recursos no administrados en tus entornos de nube, para que puedas ponerlos bajo control.

En un mundo ideal, los equipos de seguridad y desarrollo tendrían una cobertura de IaC del 100 % para sus recursos de nube, y el flujo de trabajo sería así: se detecta un recurso no administrado, se importa como código, se prueba y se lleva a un estado saludable y seguro de acuerdo con las prácticas recomendadas de seguridad de IaC y las políticas de cumplimiento definidas por tu organización.

Mantén la infraestructura segura y sincronizada con el código

Una estrategia integral de seguridad de IaC incluye lo siguiente:

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

  2. Adopta una herramienta de seguridad de IaC para analizar tus configuraciones durante el desarrollo y en los flujos de trabajo de compilación, detectar a tiempo los problemas de configuración y superar las revisiones de seguridad.

  3. Aprovecha tu IaC (Terraform o AWS CloudFormation) para detectar la infraestructura sincronizada.

  4. Usa una herramienta de código abierto para detectar la deriva (driftctl) y encontrar problemas de deriva en producción. Informa los resultados a tus desarrolladores con términos que les resulten familiares.

  5. Actúa en función de los hallazgos de driftctl: pide a los desarrolladores que agreguen más código y lo importen tal cual en Terraform.

  6. Cierra el ciclo de retroalimentación con tu herramienta de seguridad de IaC (o snyk iac test) para proteger las nuevas configuraciones de Terraform.

  7. Repite el proceso hasta que la cobertura sea suficiente, región por región si hace falta.

  8. Por último, configura tantos trabajos recurrentes como necesites para recibir alertas (por ejemplo, una verificación cada hora para detectar cambios de IAM y una diaria para los servicios de nube menos críticos).

Consideraciones para mitigar la deriva

Hoy en día hay muchas herramientas para detectar y gestionar la deriva. Estos son algunos aspectos que debes tener en cuenta al elegir una.

Al tomar una decisión, pregúntate qué nivel de acceso le otorgarás a la herramienta (por ejemplo, acceso completo, de solo lectura o una política con privilegios mínimos). Algunas herramientas, como Terraform, requieren acceso autenticado completo, mientras que otras requieren acceso de solo lectura. Driftctl (mencionada anteriormente) funciona con acceso de privilegios mínimos, es decir, con el mínimo necesario para detectar la deriva.

Gestión de la deriva con Snyk IaC

Si quieres poner los recursos no administrados bajo el control de IaC y detectar la deriva en tus recursos administrados, Snyk te ayuda a hacerlo. La gestión de la deriva en Snyk IaC te ayuda a proteger la infraestructura más rápido al informar directamente a los desarrolladores sobre los problemas y sus soluciones, con términos que les resultan familiares. Al acelerar el ciclo de retroalimentación entre los equipos de seguridad en la nube y de desarrollo, los desarrolladores podrán responsabilizarse de su Terraform desde el código hasta la nube y proteger las configuraciones de infraestructura después de la implementación. La otra parte consiste en identificar los recursos no administrados en los entornos de nube, para que puedas ponerlos bajo el control de IaC y reducir el riesgo de deriva desde el principio.

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.