Bewährte Methoden im Backend - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bewährte Methoden im Backend

Die Verwendung eines geeigneten Remote-Backends zum Speichern Ihrer Statusdatei ist entscheidend für die Zusammenarbeit, die Sicherstellung der Integrität von Statusdateien durch Sperren, die Bereitstellung zuverlässiger Backups und Wiederherstellungen, die Integration in CI/CD-Workflows und die Nutzung der erweiterten Sicherheits-, Governance- und Verwaltungsfunktionen, die von verwalteten Diensten wie HCP Terraform angeboten werden.

Terraform unterstützt verschiedene Backend-Typen wie Kubernetes, Consul und HTTP. HashiCorp Dieser Leitfaden konzentriert sich jedoch auf Amazon S3, eine optimale Backend-Lösung für die meisten AWS Benutzer.

Als vollständig verwalteter Objektspeicherservice, der eine hohe Beständigkeit und Verfügbarkeit bietet, bietet Amazon S3 ein sicheres, skalierbares und kostengünstiges Backend für die Verwaltung von Terraform State On. AWS Die globale Präsenz und Widerstandsfähigkeit von Amazon S3 übertreffen das, was die meisten Teams durch die Selbstverwaltung von State Storage erreichen können. Darüber hinaus ist Amazon S3 aufgrund der nativen Integration mit AWS Zugriffskontrollen, Verschlüsselungsoptionen, Versionierungsfunktionen und anderen Diensten eine praktische Backend-Wahl.

Dieser Leitfaden bietet keine Backend-Anleitungen für andere Lösungen wie Kubernetes oder Consul, da die Hauptzielgruppe Kunden sind. AWS Für Teams, die voll im Einsatz sind AWS Cloud, ist Amazon S3 in der Regel die ideale Wahl gegenüber Kubernetes- oder HashiCorp Consul-Clustern. Die Einfachheit, Stabilität und enge AWS Integration von Amazon S3 State Storage bieten eine optimale Grundlage für die meisten Benutzer, die AWS Best Practices befolgen. Teams können die Robustheit, den Backup-Schutz und die Verfügbarkeit von AWS Diensten nutzen, um den Terraform-Fernstatus äußerst widerstandsfähig zu halten.

Die Befolgung der Backend-Empfehlungen in diesem Abschnitt führt zu einer besseren Zusammenarbeit der Terraform-Codebasen und begrenzt gleichzeitig die Auswirkungen von Fehlern oder unbefugten Änderungen. Durch die Implementierung eines gut konzipierten Remote-Backends können Teams die Terraform-Workflows optimieren.

Verwenden Sie Amazon S3 für den Remotespeicher

Das Remote-Speichern des Terraform-Status in Amazon S3 und die Implementierung von Zustandssperren und Konsistenzprüfungen mithilfe von Amazon DynamoDB bieten große Vorteile gegenüber der lokalen Dateispeicherung. Remote State ermöglicht die Zusammenarbeit im Team, die Nachverfolgung von Änderungen, den Schutz von Backups und das Sperren per Fernzugriff für mehr Sicherheit.

Die Verwendung von Amazon S3 mit der Speicherklasse S3 Standard (Standard) anstelle von kurzlebigem lokalem Speicher oder selbstverwalteten Lösungen bietet eine Beständigkeit von 99,999999999% und einen Verfügbarkeitsschutz von 99,99%, um versehentlichen Datenverlust zu verhindern. AWS Managed Services wie Amazon S3 und DynamoDB bieten Service Level Agreements (SLAs), die weit über das hinausgehen, was die meisten Unternehmen erreichen können, wenn sie ihren Speicher selbst verwalten. Verlassen Sie sich auf diese Schutzmaßnahmen, um den Zugriff auf Remote-Backends zu gewährleisten.

Aktivieren Sie die Fernzustandssperrung

DynamoDB-Sperren schränken den Zustandszugriff ein, um gleichzeitige Schreibvorgänge zu verhindern. Dadurch werden gleichzeitige Änderungen durch mehrere Benutzer verhindert und Fehler reduziert.

Beispiel für eine Backend-Konfiguration mit State-Locking:

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

Aktivieren Sie Versionierung und automatische Backups

Für zusätzlichen Schutz aktivieren Sie die automatische Versionierung und Backups mithilfe von AWS Backup Amazon S3 S3-Backends. Bei der Versionierung werden alle vorherigen Versionen des Status beibehalten, wenn Änderungen vorgenommen werden. Außerdem können Sie bei Bedarf frühere Snapshots des Arbeitsstatus wiederherstellen, um unerwünschte Änderungen rückgängig zu machen oder die Daten nach Unfällen wiederherzustellen.

Stellen Sie bei Bedarf frühere Versionen wieder her

Versionierte Amazon S3 S3-State-Buckets machen es einfach, Änderungen rückgängig zu machen, indem ein früherer zweifelsfrei funktionierender Status-Snapshot wiederhergestellt wird. Dies schützt vor versehentlichen Änderungen und bietet zusätzliche Backup-Funktionen.

Verwenden Sie HCP Terraform

HCP Terraform bietet eine vollständig verwaltete Backend-Alternative zur Konfiguration Ihres eigenen Statusspeichers. HCP Terraform kümmert sich automatisch um die sichere Speicherung von Status und Verschlüsselung und schaltet gleichzeitig zusätzliche Funktionen frei.

Wenn Sie HCP Terraform verwenden, wird der Status standardmäßig remote gespeichert, was die gemeinsame Nutzung und Sperrung von Status in Ihrer gesamten Organisation ermöglicht. Detaillierte Richtlinienkontrollen helfen Ihnen dabei, den Zugriff auf Bundesstaaten und deren Änderungen einzuschränken.

Zu den weiteren Funktionen gehören Integrationen zur Versionskontrolle, Richtlinien, Workflow-Automatisierung, Variablenverwaltung und Single-Sign-On-Integrationen mit SAML. Sie können die Sentinel-Richtlinie auch als Code verwenden, um Governance-Kontrollen zu implementieren.

HCP Terraform erfordert zwar die Verwendung einer Software-as-a-Service (SaaS) -Plattform, aber für viele Teams ist es aufgrund der Vorteile in Bezug auf Sicherheit, Zugriffskontrollen, automatisierte Richtlinienprüfungen und Funktionen für die Zusammenarbeit eine optimale Wahl gegenüber dem selbstverwaltenden Statusspeicher mit Amazon S3 oder DynamoDB.

Die einfache Integration mit Diensten wie GitHub und GitLab mit geringer Konfiguration spricht auch Benutzer an, die Cloud- und SaaS-Tools für bessere Team-Workflows voll nutzen.

Erleichtern Sie die Zusammenarbeit im Team

Verwenden Sie Remote-Backends, um Statusdaten mit allen Mitgliedern Ihres Terraform-Teams auszutauschen. Dies erleichtert die Zusammenarbeit, da das gesamte Team so Einblick in Infrastrukturänderungen hat. Gemeinsam genutzte Backend-Protokolle in Kombination mit der Transparenz des Statusverlaufs vereinfachen das interne Änderungsmanagement. Alle Infrastrukturänderungen durchlaufen die etablierte Pipeline, wodurch die geschäftliche Flexibilität im gesamten Unternehmen erhöht wird.

Verbessern Sie die Rechenschaftspflicht, indem Sie AWS CloudTrail

AWS CloudTrail Integrieren Sie es in den Amazon S3 S3-Bucket, um API-Aufrufe an den State-Bucket zu erfassen. Filtern Sie CloudTrail Ereignisse, die Sie verfolgen DeleteObject, möchtenPutObject, und andere relevante Aufrufe.

CloudTrail In den Protokollen wird die AWS Identität des Prinzipals angezeigt, der jeden API-Aufruf zur Statusänderung ausgeführt hat. Die Identität des Benutzers kann einem Computerkonto oder Teammitgliedern zugeordnet werden, die mit dem Backend-Speicher interagieren.

Kombinieren Sie CloudTrail Protokolle mit der Amazon S3 S3-Statusversionierung, um Infrastrukturänderungen dem Prinzipal zuzuordnen, der sie angewendet hat. Durch die Analyse mehrerer Revisionen können Sie alle Aktualisierungen dem Computerkonto oder dem verantwortlichen Teammitglied zuordnen.

Wenn eine unbeabsichtigte oder störende Änderung eintritt, bietet die State-Versionierung Rollback-Funktionen. CloudTrail verfolgt die Änderung bis zum Benutzer, sodass Sie vorbeugende Verbesserungen besprechen können.

Wir empfehlen außerdem, IAM-Berechtigungen durchzusetzen, um den Zugriff auf State-Buckets einzuschränken. Insgesamt unterstützt die Versionierung und CloudTrail Überwachung von S3 die Prüfung aller Infrastrukturänderungen. Teams erhalten verbesserte Rechenschaftspflicht, Transparenz und Auditfunktionen im Hinblick auf den Terraform-Statusverlauf.

Trennen Sie die Backends für jede Umgebung

Verwenden Sie für jede Anwendungsumgebung unterschiedliche Terraform-Backends. Separate Backends isolieren den Status zwischen Entwicklung, Test und Produktion.

Reduzieren Sie den Umfang der Auswirkungen

Durch die Isolierung des Zustands wird sichergestellt, dass sich Änderungen in niedrigeren Umgebungen nicht auf die Produktionsinfrastruktur auswirken. Unfälle oder Experimente in Entwicklungs- und Testumgebungen haben nur begrenzte Auswirkungen.

Beschränken Sie den Produktionszugriff

Sperren Sie die Berechtigungen für das Backend im Produktionsstatus für die meisten Benutzer auf schreibgeschützten Zugriff. Beschränken Sie, wer die Produktionsinfrastruktur auf die CI/CD-Pipeline und die Rollen von Break Glass ändern kann.

Vereinfachen Sie die Zutrittskontrollen

Die Verwaltung von Berechtigungen auf Backend-Ebene vereinfacht die Zugriffskontrolle zwischen Umgebungen. Die Verwendung unterschiedlicher S3-Buckets für jede Anwendung und Umgebung bedeutet, dass umfassende Lese- oder Schreibberechtigungen für ganze Backend-Buckets gewährt werden können.

Vermeiden Sie gemeinsam genutzte Arbeitsbereiche

Sie können zwar Terraform-Arbeitsbereiche verwenden, um den Status zwischen Umgebungen zu trennen, aber unterschiedliche Backends sorgen für eine stärkere Isolierung. Wenn Sie gemeinsam genutzte Arbeitsbereiche haben, können sich Unfälle immer noch auf mehrere Umgebungen auswirken.

Durch die vollständige Isolierung der Umgebungs-Backends werden die Auswirkungen einzelner Ausfälle oder Sicherheitsverletzungen minimiert. Separate Backends passen außerdem die Zugriffskontrollen an die Sensibilitätsstufe der Umgebung an. Sie können beispielsweise Schreibschutz für die Produktionsumgebung und einen breiteren Zugriff für Entwicklungs- und Testumgebungen bereitstellen.

Überwachen Sie aktiv die Aktivitäten im Fernstatus

Die kontinuierliche Überwachung der Aktivitäten im Fernzugriff ist entscheidend für die frühzeitige Erkennung potenzieller Probleme. Achten Sie auf ungewöhnliche Entsperrungen, Änderungen oder Zugriffsversuche.

Lassen Sie sich bei verdächtigen Entsperrungen benachrichtigen

Die meisten Statusänderungen sollten über CI/CD-Pipelines erfolgen. Generieren Sie Warnmeldungen, wenn Statusentsperrungen direkt über Entwickler-Workstations erfolgen, was auf nicht autorisierte oder ungetestete Änderungen hinweisen könnte.

Überwachen Sie Zugriffsversuche

Authentifizierungsfehler bei Status-Buckets können auf Aufklärungsaktivitäten hinweisen. Beachten Sie, ob mehrere Konten versuchen, auf den Status zuzugreifen, oder wenn ungewöhnliche IP-Adressen angezeigt werden, was auf kompromittierte Anmeldeinformationen hinweist.