Infrastruktur als Code (IaC) wie Terraform beschleunigt die Bereitstellung, birgt aber auch Risiken: Eine einzige falsche Konfiguration kann zu Datenlecks oder unautorisiertem Zugriff führen. Doch wie prüft man Terraform-Dateien auf Sicherheitsmängel? Der Open-Source-Scanner Checkov analysiert Ihre Infrastruktur als Code – ohne Cloud-Zugriff und mit über 1.000 vordefinierten Richtlinien für AWS, Azure und Kubernetes.
Warum Infrastruktur-Code genauso abgesichert werden muss wie Anwendungen
Sicherheitslücken in der Anwendungscodebasis sind gut dokumentiert – doch was ist mit der Infrastruktur? Ein falsch konfigurierter S3-Bucket, eine offene Sicherheitsgruppe oder überprivilegierte IAM-Rollen haben in der Vergangenheit zu massiven Datenpannen geführt. Da Infrastruktur heute als Code existiert, lässt sich dieser ebenfalls statisch analysieren.
Checkov, ein von Prisma Cloud entwickeltes Tool, deckt typische IaC-Fehler auf:
- Unverschlüsselte Speicherressourcen
- Öffentlich zugängliche Buckets oder Datenbanken
- Überprivilegierte IAM-Richtlinien
- Veraltete Metadaten-Dienste wie IMDSv1
Der Vorteil: Die Prüfung erfolgt lokal oder in CI/CD-Pipelines – ohne dass sensible Cloud-Zugangsdaten preisgegeben werden müssen.
Ein gezielter Angriff: Wie eine absichtlich unsichere Terraform-Konfiguration aussieht
Um die Leistungsfähigkeit von Checkov zu demonstrieren, erstellte ein Entwickler eine absichtlich fehlerhafte AWS-Konfiguration mit fünf klassischen Sicherheitsmängeln:
- S3-Bucket: Öffentlich lesbar (
acl = "public-read"), unverschlüsselt und ohne Protokollierung - Sicherheitsgruppe: Erlaubt SSH- und alle TCP-Ports von überall (
0.0.0.0/0) - RDS-Datenbank: Öffentlich zugänglich, mit hartkodiertem Passwort und ohne Verschlüsselung
- EC2-Instanz: Unverschlüsseltes Root-Volume und veraltete IMDSv1
- IAM-Richtlinie: Vollzugriff mit Wildcard-Aktionen (
Action = "*") auf alle Ressourcen
Diese Konfiguration ähnelt realen Vorfällen wie dem Capital-One-Hack (2019) oder dem Leak von US-Wählerevidenzen (2020), bei denen öffentlich zugängliche S3-Buckets Millionen von Datensätzen preisgaben.
Checkov im Einsatz: 35 Fehler in 70 Zeilen Terraform
Die Prüfung mit Checkov erfolgt in drei Schritten:
pip install checkov
checkov -f main.tfDas Ergebnis war ernüchternd:
- 35 fehlgeschlagene Prüfungen
- 14 bestandene Prüfungen
- 0 übersprungene Prüfungen
Checkov identifizierte unter anderem:
- CKV_AWS_20: Öffentlicher S3-Bucket mit Lesezugriff
- CKV_AWS_62: IAM-Richtlinie mit Vollzugriff (`"*")
- CKV_AWS_24: Sicherheitsgruppe mit SSH-Zugriff von überall
- CKV_AWS_17: Öffentlich zugängliche RDS-Instanz
Besonders gravierend: Die IAM-Richtlinie mit Wildcard-Aktionen führte zu acht separaten Fehlern, da sie Angreifern Möglichkeiten für Privilegieneskalation, Datenexfiltration oder Credential-Diebstahl bot.
Schritt für Schritt zur sicheren Infrastruktur
Die Behebung der Mängel erforderte nur wenige Anpassungen:
- S3-Bucket:
- Aktivierung von
aws_s3_bucket_public_access_block - Umstellung auf private ACL
- Verschlüsselung mit KMS und rotierenden Schlüsseln
- Aktivierung von Versionierung und Protokollierung
- Sicherheitsgruppe:
- Einschränkung des SSH-Zugriffs auf vertrauenswürdige IP-Bereiche
- Erzwingen von HTTPS-Verbindungen
- RDS-Datenbank:
- Deaktivierung der öffentlichen Zugänglichkeit
- Aktivierung der Speicherverschlüsselung
- Einrichtung von Multi-AZ für Hochverfügbarkeit
- EC2-Instanz:
- Erzwingen von IMDSv2 mit
http_tokens = "required" - Verschlüsselung des Root-Volumes
- IAM-Richtlinie:
- Ersetzen der Wildcard durch die prinzipspezifischsten Berechtigungen
- Beispiel: Nur
s3:GetObjectauf einen bestimmten Bucket
- Datenbankpasswort:
- Auslagerung in eine sichere Variable (
TF_VAR_db_password)
Die finale Konfiguration bestand aus 79 bestandenen und 5 übersprungenen Prüfungen – alle Übersprünge wurden mit Kommentaren wie #checkov:skip=CKV_AWS_144 dokumentiert, um die Nachvollziehbarkeit zu gewährleisten.
Automatisierung in GitHub Actions: Sicherheit als Standard
Manuelle Scans sind nur ein erster Schritt – die eigentliche Stärke von Checkov liegt in der automatisierten Prüfung in CI/CD-Pipelines. Ein Beispiel-Workflow für GitHub Actions könnte so aussehen:
name: Terraform Security Scan
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install Checkov
run: pip install checkov
- name: Run Checkov
run: checkov -d . --output cli -c CKV_AWS_20,CKV_AWS_62Dieser Workflow prüft Terraform-Dateien bei jedem Push oder Pull Request und blockiert die Bereitstellung, falls kritische Sicherheitsmängel gefunden werden. So wird Sicherheit zur automatischen Voraussetzung – nicht zum nachträglichen Aufwand.
Fazit: Infrastruktur-Sicherheit beginnt im Code
Die Zeiten, in denen Sicherheitslücken nur in Anwendungscode gesucht wurden, sind vorbei. Mit Tools wie Checkov lassen sich Infrastruktur-Schwachstellen frühzeitig erkennen und beheben – noch bevor sie in Produktion gelangen. Die Integration in CI/CD-Pipelines stellt sicher, dass Sicherheitsstandards durchgehend eingehalten werden.
Die gute Nachricht: Die Behebung von 35 Fehlern erforderte nur minimale Änderungen. Die schlechte Nachricht: Viele Teams wissen gar nicht, wie viele offene Türen sie in ihrer Infrastruktur haben. Ein Checkov-Scan könnte der erste Schritt zu einer wirklich sicheren Cloud-Umgebung sein.
KI-Zusammenfassung
Learn how Checkov’s static analysis detects Terraform misconfigurations like public S3 buckets and overprivileged IAM policies before deployment. Includes a step-by-step remediation guide and CI/CD automation.