Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Mejores prácticas de backend
El uso de un servidor remoto adecuado para almacenar el archivo de estado es fundamental para permitir la colaboración, garantizar la integridad de los archivos estatales mediante el bloqueo, proporcionar copias de seguridad y recuperación confiables, integrarse con los flujos de trabajo de CI/CD y aprovechar las funciones avanzadas de seguridad, gobierno y administración que ofrecen los servicios gestionados, como HCP Terraform.
Terraform admite varios tipos de backend, como Kubernetes, Consul y HTTP. HashiCorp Sin embargo, esta guía se centra en Amazon S3, que es una solución de backend óptima para la mayoría de AWS los usuarios.
Como servicio de almacenamiento de objetos totalmente gestionado que ofrece una alta durabilidad y disponibilidad, Amazon S3 proporciona un backend seguro, escalable y de bajo coste para gestionar el estado de Terraform. AWS La presencia global y la resiliencia de Amazon S3 superan lo que la mayoría de los equipos pueden lograr mediante la autogestión del almacenamiento estatal. Además, al estar integrado de forma nativa con los controles de AWS acceso, las opciones de cifrado, las capacidades de control de versiones y otros servicios, convierte a Amazon S3 en una cómoda opción de backend.
Esta guía no proporciona orientación de backend para otras soluciones, como Kubernetes o Consul, porque el público objetivo principal son los clientes. AWS Para los equipos que están totalmente ocupados Nube de AWS, Amazon S3 suele ser la opción ideal en lugar de los clústeres de Kubernetes o HashiCorp Consul. La simplicidad, la resiliencia y la estrecha AWS integración del almacenamiento estatal de Amazon S3 proporcionan una base óptima para la mayoría de los usuarios que siguen las AWS mejores prácticas. Los equipos pueden aprovechar la durabilidad, las protecciones de respaldo y la disponibilidad de AWS los servicios para mantener una alta resiliencia del estado remoto de Terraform.
Seguir las recomendaciones del backend de esta sección permitirá que las bases de código de Terraform sean más colaborativas y, al mismo tiempo, se limitará el impacto de los errores o las modificaciones no autorizadas. Al implementar un backend remoto bien diseñado, los equipos pueden optimizar los flujos de trabajo de Terraform.
Mejores prácticas:
Utilice Amazon S3 para el almacenamiento remoto
El almacenamiento remoto del estado de Terraform en Amazon S3 y la implementación del bloqueo del estado
El uso de Amazon S3 con la clase de almacenamiento estándar S3 (predeterminada) en lugar de soluciones de almacenamiento local efímero o autogestionadas proporciona protecciones de durabilidad del 99,19% y disponibilidad del 99,99% para evitar la pérdida accidental de datos por estado. AWS los servicios gestionados, como Amazon S3 y DynamoDB, ofrecen acuerdos de nivel de servicio (SLA) que superan lo que la mayoría de las organizaciones pueden lograr cuando autogestionan el almacenamiento. Confíe en estas protecciones para mantener accesibles los backends remotos.
Habilite el bloqueo de estado remoto
El bloqueo de DynamoDB restringe el acceso al estado para evitar operaciones de escritura simultáneas. Esto evita que varios usuarios realicen modificaciones simultáneas y reduce los errores.
Ejemplo de configuración de backend con bloqueo de estado:
terraform { backend "s3" { bucket = "myorg-terraform-states" key = "myapp/production/tfstate" region = "us-east-1" dynamodb_table = "TerraformStateLocking" } }
Habilite el control de versiones y las copias de seguridad automáticas
Para mayor protección, habilite el control de versiones y las copias de seguridad automáticas mediante AWS Backup el uso de los backends de Amazon S3. El control de versiones conserva todas las versiones anteriores del estado siempre que se realicen cambios. También le permite restaurar las instantáneas de los estados de trabajo anteriores si es necesario para revertir los cambios no deseados o recuperarse de un accidente.
Restaure las versiones anteriores si es necesario
Los buckets de estado versionados de Amazon S3 facilitan la reversión de los cambios mediante la restauración de una instantánea anterior de buen estado conocida. Esto ayuda a proteger contra cambios accidentales y proporciona capacidades de respaldo adicionales.
Utilice HCP Terraform
HCP Terraform
Al utilizar HCP Terraform, el estado se almacena de forma remota de forma predeterminada, lo que permite compartir y bloquear el estado en toda la organización. Los controles detallados de las políticas le ayudan a restringir el acceso y los cambios estatales.
Las capacidades adicionales incluyen integraciones de control de versiones, políticas de protección, automatización del flujo de trabajo, administración de variables e integraciones de inicio de sesión único con SAML. También puedes usar la política de Sentinel como código para implementar controles de gobierno.
Si bien HCP Terraform requiere el uso de una plataforma de software como servicio (SaaS), para muchos equipos las ventajas en torno a la seguridad, los controles de acceso, las comprobaciones automatizadas de políticas y las funciones de colaboración la convierten en una opción óptima en lugar del almacenamiento estatal autogestionado con Amazon S3 o DynamoDB.
La fácil integración con servicios como GitHub y GitLab con configuraciones menores también atrae a los usuarios que utilizan plenamente las herramientas de nube y SaaS para mejorar los flujos de trabajo en equipo.
Facilite la colaboración en equipo
Usa backends remotos para compartir los datos de estado entre todos los miembros de tu equipo de Terraform. Esto facilita la colaboración porque brinda a todo el equipo visibilidad de los cambios en la infraestructura. Los protocolos de backend compartidos, combinados con la transparencia del historial estatal, simplifican la gestión de los cambios internos. Todos los cambios en la infraestructura pasan por el proceso establecido, lo que aumenta la agilidad empresarial en toda la empresa.
Mejore la responsabilidad mediante el uso de AWS CloudTrail
Intégrelo AWS CloudTrail con el bucket de Amazon S3 para capturar las llamadas a la API realizadas al bucket de estado. Filtre CloudTrail los eventos para realizar un seguimiento PutObject
DeleteObject,
y otras llamadas relevantes.
CloudTrail Los registros muestran la AWS identidad del director que hizo que cada API solicitara un cambio de estado. La identidad del usuario se puede comparar con la cuenta de una máquina o con la de los miembros del equipo que interactúan con el almacenamiento interno.
Combine CloudTrail los registros con el control de versiones estatales de Amazon S3 para vincular los cambios de infraestructura con el director que los aplicó. Al analizar varias revisiones, puede atribuir las actualizaciones a la cuenta de la máquina o al miembro responsable del equipo.
Si se produce un cambio imprevisto o perjudicial, el control de versiones por estado proporciona funciones de reversión. CloudTrail rastrea el cambio hasta el usuario para que pueda analizar las mejoras preventivas.
También le recomendamos que aplique los permisos de IAM para limitar el acceso a los buckets estatales. En general, el control de versiones y la CloudTrail supervisión de S3 permiten la auditoría de todos los cambios de infraestructura. Los equipos adquieren mejores capacidades de rendición de cuentas, transparencia y auditoría a lo largo de la historia del estado de Terraform.
Separe los backends de cada entorno
Utilice distintos backends de Terraform para cada entorno de aplicación. Los backends separados aíslan el estado entre el desarrollo, las pruebas y la producción.
Reduzca el alcance del impacto
El estado de aislamiento ayuda a garantizar que los cambios en los entornos inferiores no afecten a la infraestructura de producción. Los accidentes o los experimentos en los entornos de desarrollo y prueba tienen un impacto limitado.
Limite el acceso a la producción
Limite los permisos del backend del estado de producción para que la mayoría de los usuarios puedan acceder a ellos en modo de solo lectura. Limite quién puede modificar la infraestructura de producción al proceso de CI/CD y rompa las funciones.
Simplifique los controles de acceso
La administración de los permisos a nivel de backend simplifica el control de acceso entre entornos. El uso de buckets S3 distintos para cada aplicación y entorno permite conceder amplios permisos de lectura o escritura en todos los buckets de backend.
Evite los espacios de trabajo compartidos
Si bien puedes usar los espacios de trabajo de Terraform
Mantener los backends del entorno completamente aislados minimiza el impacto de cualquier fallo o infracción individual. Los backends independientes también alinean los controles de acceso con el nivel de sensibilidad del entorno. Por ejemplo, puede proporcionar protección contra escritura para el entorno de producción y un acceso más amplio para los entornos de desarrollo y prueba.
Supervise activamente la actividad de estado remoto
La supervisión continua de la actividad del estado remoto es fundamental para detectar posibles problemas de forma temprana. Busque desbloqueos, cambios o intentos de acceso anómalos.
Recibe alertas sobre desbloqueos sospechosos
La mayoría de los cambios de estado deberían realizarse a través de canalizaciones de CI/CD. Genere alertas si los estados se desbloquean directamente a través de las estaciones de trabajo de los desarrolladores, lo que podría indicar cambios no autorizados o no comprobados.
Supervise los intentos de acceso
Los errores de autenticación en los depósitos de estado pueden indicar una actividad de reconocimiento. Observa si varias cuentas están intentando acceder al estado o si aparecen direcciones IP inusuales, lo que indica que las credenciales están comprometidas.