Hasta dónde ve la detección de drift de CloudFormation - Cómo rastrea cambios manuales y sus limitaciones
Aprenda cómo la detección de drift de CloudFormation compara internamente el estado actual de los recursos con el estado esperado definido en las plantillas, el límite entre cambios detectables y no detectables, y estrategias para la remediación de drift.
Qué es el drift - La brecha entre plantillas y realidad
El drift (desviación) se refiere a la brecha entre el estado de los recursos definido en una plantilla de CloudFormation y el estado real de esos recursos en AWS. El drift ocurre cuando alguien modifica recursos directamente a través de la consola AWS, CLI o SDK sin actualizar la plantilla de CloudFormation. Por ejemplo, si un grupo de seguridad creado por CloudFormation se modifica manualmente para agregar una regla de entrada, esa regla existe en la realidad pero no en la plantilla. La detección de drift de CloudFormation identifica estas discrepancias comparando el estado esperado (definido en la plantilla) con el estado actual (consultado desde las APIs de AWS).
Cómo funciona internamente la detección de drift
Cuando inicia la detección de drift, CloudFormation realiza los siguientes pasos internamente. Primero, lee la plantilla del stack y determina el estado esperado de cada recurso y sus propiedades. Luego, llama a las APIs Describe/Get del servicio AWS correspondiente para obtener el estado actual de cada recurso. Finalmente, compara las propiedades esperadas con las propiedades reales e informa las diferencias. La comparación se realiza a nivel de propiedad: cada propiedad del recurso se marca como IN_SYNC (coincide), MODIFIED (cambiada), DELETED (eliminada de la realidad) o NOT_CHECKED (no verificable). El estado general del recurso se marca como IN_SYNC, MODIFIED o DELETED. Para profundizar sus conocimientos sobre operaciones IaC, libros especializados en Amazon pueden ser útiles.
Cambios detectables y no detectables
La detección de drift tiene limitaciones importantes. Solo puede detectar cambios en propiedades que CloudFormation rastrea: propiedades explícitamente definidas en la plantilla y propiedades que CloudFormation establece por defecto. Los cambios no detectables incluyen: recursos creados fuera de CloudFormation (no están en el stack, por lo que no se verifican), cambios en recursos que CloudFormation no soporta para detección de drift (no todos los tipos de recursos están soportados), y cambios en propiedades de solo escritura que no pueden leerse de vuelta desde la API. Además, la detección de drift no detecta recursos eliminados que fueron creados por el stack pero eliminados manualmente fuera de CloudFormation.
Estrategias de remediación de drift
Cuando se detecta drift, hay varias estrategias de remediación. La importación de recursos permite traer recursos modificados manualmente de vuelta bajo la gestión de CloudFormation actualizando la plantilla para que coincida con el estado actual. La actualización del stack aplica la plantilla original para revertir los cambios manuales al estado deseado. Para drift complejo, puede ser necesario recrear recursos. La elección entre estas estrategias depende de si el cambio manual fue intencional (actualizar la plantilla para que coincida) o accidental (revertir al estado de la plantilla).
Mecanismos para prevenir el drift
Prevenir el drift es más efectivo que detectarlo y remediarlo. Las estrategias de prevención incluyen: usar políticas IAM para restringir el acceso directo a la consola para recursos gestionados por CloudFormation, implementar SCP (Service Control Policies) que denieguen modificaciones a recursos etiquetados como gestionados por CloudFormation, ejecutar detección de drift programada (vía EventBridge + Lambda) para detectar drift tempranamente, e integrar verificaciones de drift en pipelines CI/CD para detectar drift antes de los despliegues. AWS Config Rules también puede monitorear continuamente la conformidad de recursos y alertar sobre cambios que se desvían de las configuraciones esperadas.