Bonnes pratiques en matière de backend - AWS Conseils prescriptifs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Bonnes pratiques en matière de backend

L'utilisation d'un backend distant approprié pour stocker votre fichier d'état est essentielle pour permettre la collaboration, garantir l'intégrité des fichiers d'état grâce au verrouillage, fournir une sauvegarde et une restauration fiables, intégrer les flux de travail CI/CD et tirer parti des fonctionnalités avancées de sécurité, de gouvernance et de gestion proposées par les services gérés tels que HCP Terraform.

Terraform prend en charge différents types de backend tels que Kubernetes, Consul et HTTP. HashiCorp Cependant, ce guide se concentre sur Amazon S3, qui est une solution de backend optimale pour la plupart des AWS utilisateurs.

En tant que service de stockage d'objets entièrement géré offrant une durabilité et une disponibilité élevées, Amazon S3 fournit un backend sécurisé, évolutif et peu coûteux pour gérer l'état de Terraform sur. AWS L'empreinte mondiale et la résilience d'Amazon S3 dépassent ce que la plupart des équipes peuvent atteindre en gérant elles-mêmes le stockage d'état. En outre, l'intégration native AWS aux contrôles d'accès, aux options de chiffrement, aux fonctionnalités de gestion des versions et à d'autres services fait d'Amazon S3 un choix de backend pratique.

Ce guide ne fournit pas de conseils sur le backend pour d'autres solutions telles que Kubernetes ou Consul, car le public cible principal est constitué de clients. AWS Pour les équipes qui sont pleinement impliquées AWS Cloud, Amazon S3 est généralement le choix idéal par rapport aux clusters Kubernetes ou HashiCorp Consul. La simplicité, la résilience et AWS l'intégration étroite du stockage d'état Amazon S3 constituent une base optimale pour la plupart des utilisateurs qui suivent les AWS meilleures pratiques. Les équipes peuvent tirer parti de la durabilité, des protections de sauvegarde et de la disponibilité des AWS services pour garantir la haute résilience de Terraform State à distance.

Le respect des recommandations du backend de cette section permettra de créer des bases de code Terraform plus collaboratives tout en limitant l'impact des erreurs ou des modifications non autorisées. En mettant en œuvre un backend distant bien conçu, les équipes peuvent optimiser les flux de travail Terraform.

Utiliser Amazon S3 pour le stockage à distance

Le stockage à distance de l'état Terraform dans Amazon S3 et la mise en œuvre du verrouillage d'état et du contrôle de cohérence à l'aide d'Amazon DynamoDB offrent des avantages majeurs par rapport au stockage de fichiers local. L'état à distance permet la collaboration en équipe, le suivi des modifications, les protections de sauvegarde et le verrouillage à distance pour une sécurité accrue.

L'utilisation d'Amazon S3 avec la classe de stockage S3 Standard (par défaut) au lieu d'un stockage local éphémère ou de solutions autogérées assure une durabilité de 99,999999999 % et des protections de disponibilité à 99,99 % afin d'éviter toute perte accidentelle de données d'état. AWS les services gérés tels qu'Amazon S3 et DynamoDB fournissent des accords de niveau de service (SLA) qui dépassent ce que la plupart des entreprises peuvent obtenir lorsqu'elles gèrent elles-mêmes le stockage. Appuyez-vous sur ces protections pour garder les backends distants accessibles.

Activer le verrouillage d'état à distance

Le verrouillage DynamoDB restreint l'accès à l'état afin d'empêcher les opérations d'écriture simultanées. Cela empêche les modifications simultanées de la part de plusieurs utilisateurs et réduit les erreurs.

Exemple de configuration du backend avec verrouillage d'état :

terraform { backend "s3" { bucket = "myorg-terraform-states" key = "myapp/production/tfstate" region = "us-east-1" dynamodb_table = "TerraformStateLocking" } }

Activez le contrôle de version et les sauvegardes automatiques

Pour une protection supplémentaire, activez le contrôle automatique des versions et les sauvegardes en les utilisant AWS Backup sur les backends Amazon S3. Le versionnement préserve toutes les versions précédentes de l'état chaque fois que des modifications sont apportées. Il vous permet également de restaurer des instantanés d'état de fonctionnement antérieurs si nécessaire pour annuler des modifications indésirables ou récupérer après un accident.

Restaurez les versions précédentes si nécessaire

Les compartiments d'état Amazon S3 versionnés permettent d'annuler facilement les modifications en restaurant un précédent instantané d'état connu en bon état. Cela permet de se protéger contre les modifications accidentelles et fournit des fonctionnalités de sauvegarde supplémentaires.

Utilisez HCP Terraform

HCP Terraform fournit une alternative backend entièrement gérée à la configuration de votre propre stockage d'état. HCP Terraform gère automatiquement le stockage sécurisé de l'état et du chiffrement tout en débloquant des fonctionnalités supplémentaires.

Lorsque vous utilisez HCP Terraform, l'état est stocké à distance par défaut, ce qui permet le partage et le verrouillage des états au sein de votre organisation. Des contrôles de politique détaillés vous aident à restreindre l'accès à l'État et les modifications.

Les fonctionnalités supplémentaires incluent les intégrations de contrôle de version, les garanties de politique, l'automatisation des flux de travail, la gestion des variables et les intégrations d'authentification unique avec SAML. Vous pouvez également utiliser la politique Sentinel comme code pour mettre en œuvre des contrôles de gouvernance.

Bien que HCP Terraform nécessite l'utilisation d'une plateforme logicielle en tant que service (SaaS), pour de nombreuses équipes, les avantages liés à la sécurité, aux contrôles d'accès, aux contrôles automatisés des politiques et aux fonctionnalités de collaboration en font un choix optimal par rapport au stockage d'état autogéré avec Amazon S3 ou DynamoDB.

L'intégration facile avec des services tels que GitHub et GitLab avec une configuration mineure attire également les utilisateurs qui adoptent pleinement les outils cloud et SaaS pour améliorer les flux de travail d'équipe.

Facilitez la collaboration en équipe

Utilisez des backends distants pour partager les données d'état entre tous les membres de votre équipe Terraform. Cela facilite la collaboration car cela donne à l'ensemble de l'équipe une visibilité sur les modifications de l'infrastructure. Les protocoles backend partagés combinés à la transparence de l'historique des états simplifient la gestion interne des modifications. Toutes les modifications de l'infrastructure passent par le pipeline établi, ce qui accroît l'agilité de l'entreprise au sein de l'entreprise.

Améliorez la responsabilisation en utilisant AWS CloudTrail

AWS CloudTrail Intégrez le compartiment Amazon S3 pour capturer les appels d'API effectués vers le compartiment d'état. Filtrez CloudTrail les événements à suivrePutObject, DeleteObject, ainsi que les autres appels pertinents.

CloudTrail les journaux indiquent l' AWS identité du principal qui a effectué chaque appel d'API pour un changement d'état. L'identité de l'utilisateur peut être associée à un compte de machine ou aux membres de l'équipe qui interagissent avec le stockage principal.

Combinez CloudTrail les journaux avec la gestion des versions d'état d'Amazon S3 pour lier les modifications d'infrastructure au principal qui les a appliquées. En analysant plusieurs révisions, vous pouvez attribuer les mises à jour au compte de la machine ou au membre de l'équipe responsable.

En cas de modification involontaire ou perturbatrice, le contrôle des versions d'état fournit des fonctionnalités de restauration. CloudTrail retrace le changement jusqu'à l'utilisateur afin que vous puissiez discuter des améliorations préventives.

Nous vous recommandons également d'appliquer les autorisations IAM afin de limiter l'accès aux compartiments d'État. Dans l'ensemble, le contrôle des versions et la CloudTrail surveillance de S3 prennent en charge l'audit des modifications de l'infrastructure. Les équipes bénéficient de capacités de responsabilisation, de transparence et d'audit améliorées dans l'historique de l'état de Terraform.

Séparez les backends pour chaque environnement

Utilisez des backends Terraform distincts pour chaque environnement d'application. Des backends distincts isolent l'état entre le développement, le test et la production.

Réduire la portée de l'impact

L'isolation de l'état permet de garantir que les modifications apportées aux environnements inférieurs n'ont pas d'impact sur l'infrastructure de production. Les accidents ou les expériences dans les environnements de développement et de test ont un impact limité.

Limiter l'accès à la production

Verrouillez les autorisations pour le backend de l'état de production afin que la plupart des utilisateurs puissent y accéder en lecture seule. Limitez le nombre de personnes autorisées à modifier l'infrastructure de production en fonction du pipeline CI/CD et à briser les rôles de verre.

Simplifier les contrôles d'accès

La gestion des autorisations au niveau du backend simplifie le contrôle d'accès entre les environnements. L'utilisation de compartiments S3 distincts pour chaque application et environnement signifie que des autorisations de lecture ou d'écriture étendues peuvent être accordées sur l'ensemble des compartiments principaux.

Évitez les espaces de travail partagés

Bien que vous puissiez utiliser les espaces de travail Terraform pour séparer les états entre les environnements, des backends distincts offrent une meilleure isolation. Si vous partagez des espaces de travail, les accidents peuvent toujours avoir un impact sur plusieurs environnements.

L'isolation complète des backends de l'environnement permet de minimiser l'impact d'une défaillance ou d'une violation unique. Des backends distincts alignent également les contrôles d'accès sur le niveau de sensibilité de l'environnement. Par exemple, vous pouvez fournir une protection en écriture pour l'environnement de production et un accès plus large pour les environnements de développement et de test.

Surveillez activement l'activité des États distants

La surveillance continue de l'activité à distance est essentielle pour détecter rapidement les problèmes potentiels. Recherchez les déblocages, les modifications ou les tentatives d'accès anormaux.

Recevez des alertes en cas de déverrouillage suspect

La plupart des changements d'état devraient passer par des pipelines CI/CD. Générez des alertes si les déblocages d'état se produisent directement via les postes de travail des développeurs, ce qui pourrait signaler des modifications non autorisées ou non testées.

Surveiller les tentatives d'accès

Les échecs d'authentification sur les compartiments d'état peuvent indiquer une activité de reconnaissance. Notez si plusieurs comptes tentent d'accéder à l'état ou si des adresses IP inhabituelles apparaissent, ce qui indique que les informations d'identification ont été compromises.