Cloud-Fehlkonfigurationen in HashiCorp Terraform mit Snyk IaC verhindern
13. Mai 2021
0 Min. LesezeitWir freuen uns, Ihnen neue Funktionen von Snyk Infrastructure as Code (Snyk IaC) vorzustellen, die Terraform-Nutzer beim Schreiben, Planen und Anwenden ihrer Konfigurationen unterstützen. Mit Snyk IaC erhalten Sie beim Schreiben sofort Hinweise zu Sicherheitskonfigurationen und können Ihre Terraform-Pläne in Ihren Deployment-Pipelines scannen, um sicherzustellen, dass Ihre Änderungen und die vollständige Konfiguration sicher sind. Außerdem haben wir die Performance deutlich verbessert, damit auch Konfigurationen mit Tausenden von Dateien verarbeitet werden können, und Sicherheitsverbesserungen vorgenommen, damit Ihre privaten Umgebungsdaten privat bleiben.
Terraform-Fehlkonfigurationen während des gesamten Lebenszyklus beseitigen
Mit diesen neuen Snyk IaC-Funktionen können Sie Terraform wie jede andere Art von Code behandeln und die Sicherheit nach links verlagern, sodass Konfigurationssicherheit ein integraler Bestandteil des gesamten Terraform-Lebenszyklus wird. Snyk IaC prüft auf Fehlkonfigurationen, sobald der Code geschrieben wird, und gibt Ihren Entwicklerinnen und Entwicklern sofort Feedback und Hinweise auf Grundlage von Best Practices aus Cloud und Branche sowie den Richtlinien Ihres Unternehmens. Sobald Terraform-Module committet werden und automatisierte Tests beginnen, prüft Snyk IaC Ihre Terraform-Pläne. So erhalten Sie einen umfassenden Überblick über die vorgenommenen Änderungen und können sicherstellen, dass Ihre Umgebungen bei der Bereitstellung sicher sind – und Überraschungen und Regressionen nach dem Deployment vermeiden.
Warum Terraform-Pläne auf Cloud-Fehlkonfigurationen geprüft werden sollten
Mit der Snyk CLI können Nutzer Terraform- und Kubernetes-Dateien bereits lokal und in CI/CD scannen und erhalten sofortiges Feedback beim Schreiben und in ihren Code-Repositories. Das funktioniert gut für einzelne Änderungen. Wenn Sie jedoch einen Gesamtüberblick über alle Änderungen erhalten möchten, die Sie anwenden wollen – einschließlich der Auswirkungen eingebundener Module und Variablen –, sollten Sie die Terraform-Plan-Datei scannen.
Mit dieser Version unterstützt der Snyk-CLI-Workflow nun das Scannen einer Terraform-Plan-Datei (tf-plan), um zu erkennen, ob die vorgeschlagenen Änderungen neue Sicherheitslücken in Ihrer bestehenden Cloud-Infrastruktur verursachen. Um zu zeigen, wie Snyk IaC im gesamten Terraform-Workflow eingesetzt werden kann, führe ich ein Beispiel mit dem Code aus HashiCorps Tutorial Application Load Balancer für Blue-Green- und Canary-Deployments verwenden durch. So sehen Sie einen einfachen lokalen Workflow mit Snyk IaC: „schreiben, testen, planen, testen, anwenden“.
Weitere Informationen: Blue-Green-Deployment-Strategie erklärt.
Cloud-Fehlkonfigurationen im Terraform-Quellcode erkennen
Bevor ich mit Snyk angefangen habe, hatte ich Terraform bereits wie von HashiCorp bereitgestellt angewendet. Meine Umgebung war also eingerichtet und einsatzbereit, und mein Terraform-Code befand sich in Git. Jetzt, da ich Snyk IaC habe, möchte ich nachsehen, ob es bedenkliche Probleme gibt. Daher habe ich Snyk in mein GitHub-Repository integriert und kann die Ergebnisse in der Snyk-Konsole sehen:

Es gibt keine Probleme mit hohem Schweregrad. Wenn ich jedoch auf main.tf klicke, fällt mir auf, dass der Load Balancer HTTP statt HTTPS verwendet. Standardmäßig ein Problem mit mittlerem Risiko, aber eines, das mein Sicherheitsteam missbilligt. Die Snyk-Benutzeroberfläche zeigt mir, wo das Problem in meinem Code auftritt, welche Auswirkungen es hat und wie ich es beheben kann:

Terraform-Sicherheit beim Programmieren prüfen
Ich habe die von Snyk IaC vorgeschlagene Änderung an meiner Terraform-Datei vorgenommen, damit der Load Balancer HTTPS verwendet. Dazu muss ein Zertifikat erstellt und verwendet werden, also habe ich auch das zu meiner Konfiguration hinzugefügt. Bevor ich meine Änderungen pushe, möchte ich nun kurz prüfen, ob die Behebung des HTTPS-Problems keine neuen Probleme verursacht hat. Außerdem muss mein Team bei dieser internetseitig erreichbaren Anwendung die Snyk-IaC-Warnung „Load Balancer ist internetseitig erreichbar“ nicht mehr sehen. Daher habe ich die Sicherheitsadministratoren gebeten, diese Prüfung für mich zu deaktivieren – das ist mit Snyk IaC ganz einfach. Ich habe nur main.tf geändert. Daher teste ich diese Datei lokal, bevor ich meine Änderungen committe:
Perfekt! Ich habe das HTTPS-Problem behoben und mein Sicherheitsteam hat die Prüfung auf Internet-Erreichbarkeit deaktiviert. Damit habe ich keine Probleme mehr – zumindest in main.tf. Das passt für mich. Zeit, meine Änderungen bereitzustellen!
Terraform-Fehlkonfigurationen in Ihren Pipelines erkennen
Bevor ich meine Änderungen tatsächlich anwende, muss ich einen Terraform-Plan ausführen, um zu wissen, was sich ändern wird. Da der Terraform-Plan Änderungen in allen Modulen berücksichtigt und auch alle unsere Variablen einbezieht, erhalten wir ein besseres Bild von den Auswirkungen unserer Änderungen. So bietet sich eine weitere Gelegenheit, Snyk IaC in unseren Terraform-Lebenszyklus zu integrieren und sicherzustellen, dass meine Änderungen keine anderen Module in meiner Konfiguration beeinträchtigen. Im folgenden Beispiel führe ich der Einfachheit halber alles lokal aus. Die Snyk CLI lässt sich jedoch problemlos in beliebige CI-Tools integrieren, mit denen Sie Planung und Tests automatisieren:
Meine Änderungen scheinen in Ordnung zu sein – keine Sicherheitsprobleme! Ein Gedanke lässt mich jedoch nicht los. Bisher habe ich nur die Ressourcenänderungen geprüft (die Standardeinstellung von Snyk IaC). Außerdem weiß ich, dass ich nur eine einzige Datei (main.tf) bearbeitet habe. Daher überrascht mich dieses saubere Ergebnis nicht. Meine Terraform-Konfiguration war jedoch bereits angewendet und in Betrieb, bevor ich mit Snyk IaC angefangen habe. Deshalb möchte ich wirklich alle geplanten Werte prüfen, um nicht nur meine neuen Änderungen, sondern auch die bekannten Konfigurationsdetails der bereits laufenden Bereitstellung zu sehen.
Cloud-Fehlkonfigurationsprüfungen durch Einbeziehen des Terraform-Status erweitern
Mit der neuen Snyk-IaC-tf-plan-Funktion kann ich die geplanten Werte prüfen lassen! Dazu muss ich mit der Option --scan=planned-values angeben, dass ich die geplanten Werte scannen möchte. Auch hier empfehle ich, dies in CI auszuführen. Der Einfachheit halber verwende ich jedoch die CLI:
Oh! Dieses Mal haben wir 20 Probleme, darunter einige mit `hohem Schweregrad` (der Übersichtlichkeit halber habe ich oben in der Ausgabe bis auf ein Problem mit hohem und eines mit mittlerem Schweregrad alle ausgeblendet).
Terraform-Scan mit Modulen und Variablen
Dieses neue Ergebnis zeigt mir, dass ich möglicherweise noch mehr Arbeit vor mir habe. Doch beim Scannen des tf-plans ist noch etwas anderes interessant – über das Scannen der Dateien hinaus: Die Probleme mit hohem Schweregrad waren weder beim ersten Scan meines Git-Repositories zu Beginn dieses Beispiels noch beim Scan der Datei main.tf nach der Bearbeitung aufgetaucht.
Der Grund dafür ist, dass unsere Konfiguration mehrere AWS-Provider-Module und Variablen verwendet. Beim Scannen des Repositorys und der einzelnen Datei prüfen wir die Datei statisch. Das bedeutet, wir kennen nur die Details der Ressourcen, die ausdrücklich in der Datei angegeben sind. Welche Ressourcen die Module erstellen, lässt sich allein anhand der Datei jedoch nicht feststellen. Der Terraform-Plan berücksichtigt die gesamte Logik der eingebundenen Module und Variablen. So erhalten wir ein vollständigeres Bild unserer Konfiguration.
Ein weiterer Vorteil des Scannens von Terraform-Plänen ist, dass sich auch Tools aus dem Terraform-Ökosystem problemlos mit Snyk IaC verwenden lassen sollten. Unsere Kunden nutzen Tools wie Terraform Cloud, Terragrunt und Atlantis. Da diese Tools alle einen standardisierten Terraform-Plan ausgeben, können wir sie mit Snyk IaC scannen. In zukünftigen Beiträgen stellen wir Beispiele für einige dieser Ökosystem-Tools vor.
Private Infrastrukturinformationen vertraulich halten und die Performance steigern
Wie schon unser einfaches Beispiel oben zeigt, deckt das Scannen eines Terraform-Plans viele weitere Risiken durch Fehlkonfigurationen auf, die im normalen IaC-Lebenszyklus auftreten. Das Scannen in dieser Phase bedeutet jedoch auch, dass sensible Daten verarbeitet werden, von denen wir wissen, dass Sie sie nicht aus Ihrem Netzwerk herausgeben möchten. Deshalb führt die Snyk CLI in dieser Version IaC-Tests lokal aus. An uns werden lediglich Ihre Snyk-Authentifizierungsdaten und CLI-Metadaten übermittelt. Sie müssen dafür nichts Besonderes tun oder einrichten: Die Funktion ist in Snyk IaC integriert und ab sofort die standardmäßige Funktionsweise der Snyk CLI für IaC.
Das lokale Scannen bietet noch einen weiteren Vorteil: eine deutlich höhere Geschwindigkeit! Das ist besonders für unsere Kunden von Bedeutung, die Hunderte und in manchen Fällen Tausende Dateien in einem einzigen Terraform-Repository haben. Unsere eigenen Tests zeigen bei großen Verzeichnissen eine 20-fache Verbesserung.
Snyk IaC kostenlos nutzen
Diese neuen Funktionen stehen allen zum Ausprobieren zur Verfügung, auch Nutzern eines kostenlosen Plans. Der Einstieg ist ganz einfach:
Wenn Sie noch kein Snyk-Konto haben, registrieren Sie sich kostenlos.
Installieren Sie die Snyk CLI. Wenn Sie die Snyk CLI bereits installiert haben, stellen Sie sicher, dass Sie CLI-Version 1.594.0 oder neuer verwenden, um diese Funktionen nutzen zu können.
Scannen Sie Ihre Terraform- und Kubernetes-Dateien.
Der Hauptbefehl zum Scannen von IaC mit den neuen Funktionen lautet:
snyk iac test <path-to-file-or-folder>Weitere Informationen zu den verschiedenen Scan-Optionen finden Sie in unserer Dokumentation oder in der CLI-Dokumentation. Führen Sie dazu folgenden Befehl aus:
snyk iac --helpUm Terraform-Pläne zu scannen, müssen Sie eine JSON-formatierte Ausgabe generieren. Diese erhalten Sie mit
terraform show, wie in den obigen Beispielen gezeigt und von Terraform dokumentiert.
Wir freuen uns auf Ihr Feedback! Wenn Sie bereits Snyk-Kunde sind, können Sie sich mit Ihrem Customer-Success-Team austauschen. Wir freuen uns aber auch über Kommentare in unserem Snyk-Community-Forum von allen Interessierten.
Sichern Sie Ihre Infrastruktur an der Quelle
Snyk automatisiert die IaC-Sicherheit und Compliance in Workflows und erkennt abweichende sowie fehlende Ressourcen.
