Sicherheit: Best Practices

Dieses Dokument enthält Richtlinien und Empfehlungen für die sichere Verwendung von Terraform für Google Cloud. Terraform erfordert einen vertraulichen Zugriff auf Ihre Cloud-Infrastruktur. Wenn Sie die Best Practices für die Sicherheit befolgen, können Sie die damit verbundenen Risiken minimieren und die allgemeine Cloud-Sicherheit verbessern.

Dieser Leitfaden ist keine Einführung in Terraform. Eine Einführung in die Verwendung von Terraform mit Google Cloud finden Sie unter Erste Schritte mit Terraform.

Remotestatus verwenden

Für Google Cloud-Kunden empfehlen wir die Verwendung des Cloud Storage-Zustands-Back-Ends. Dieser Ansatz sperrt den Zustand, um die Zusammenarbeit als Team zu ermöglichen. Außerdem werden der Zustand und alle potenziell vertraulichen Informationen von der Versionsverwaltung getrennt.

Achten Sie darauf, dass nur das Build-System und Administratoren mit umfangreichen Berechtigungen auf den Bucket zugreifen können, der für den Remotezustand verwendet wird.

Um zu vermeiden, dass der Entwicklungszustand versehentlich an die Versionsverwaltung übergeben wird, verwenden Sie gitignore für Terraform-Zustandsdateien.

Status verschlüsseln

Obwohl Google Cloud-Buckets im Ruhezustand verschlüsselt werden, können Sie vom Kunden bereitgestellte Verschlüsselungsschlüssel verwenden, um den Schutz zu erhöhen. Verwenden Sie dazu die Umgebungsvariable GOOGLE_ENCRYPTION_KEY. Auch wenn in der Zustandsdatei keine Secrets enthalten sein sollten, sollten Sie den Zustand als zusätzliche Verteidigungsmaßnahme immer verschlüsseln.

Secrets nicht im Zustand speichern

Es gibt viele Ressourcen und Datenanbieter in Terraform, die Secret-Werte als Klartext in der Zustandsdatei speichern. Vermeiden Sie nach Möglichkeit das Speichern von Secrets im Zustand. Im Folgenden finden Sie einige Beispiele von Anbietern, die Secrets als Klartext speichern:

Vertrauliche Ausgaben markieren

Anstatt vertrauliche Werte manuell zu verschlüsseln, nutzen Sie die integrierte Terraform-Unterstützung für die Verwaltung vertraulicher Zustände. Achten Sie beim Exportieren vertraulicher Werte für die Ausgabe darauf, dass die Werte als vertraulich markiert sind.

Aufgabentrennung sicherstellen

Wenn Sie Terraform nicht von einem automatisierten System aus ausführen können, auf das keine Nutzer Zugriff haben, müssen Sie eine Aufgabentrennung vornehmen, indem Sie Berechtigungen und Verzeichnisse trennen. Ein Netzwerkprojekt entspricht beispielsweise einem Netzwerk-Terraform-Dienstkonto oder einem Nutzer, dessen Zugriff auf dieses Projekt beschränkt ist.

Prüfungen vor dem Anwenden ausführen

Wenn Sie Terraform in einer automatisierten Pipeline ausführen, verwenden Sie ein Tool wie gcloud terraform vet, um die Planausgabe auf Richtlinien zu prüfen, bevor sie angewendet wird. Auf diese Weise können Sie Sicherheitsregressionen erkennen, bevor sie auftreten.

Kontinuierliche Audits ausführen

Führen Sie nach der Ausführung des Befehls terraform apply automatisierte Sicherheitsprüfungen aus. Diese Prüfungen sorgen dafür, dass die Infrastruktur nicht in einen unsicheren Zustand versetzt wird. Für diesen Diagnosetyp stehen die folgenden Tools zur Verfügung:

Nächste Schritte