# Container Security: Schwachstellen-Scanning & Image-Integrität
TL;DR / Management Summary Ein Container-Image ist eine Sammlung von tausenden Software-Paketen. Viele davon haben bekannte Sicherheitslücken (CVEs). Image Scanning prüft den Inhalt eines Images gegen globale Schwachstellen-Datenbanken. Ein Senior Admin nutzt Tools wie Trivy oder Grype, um Images bereits in der CI/CD-Phase zu scannen. Ziel ist ein “Security Gate”: Ein Image, das kritische Sicherheitslücken enthält, darf niemals in den Proxmox-Cluster (Artikel 678) deployed werden.
# 1. Warum Image Scanning?
Der unsichtbare Feind.
Ein Dockerfile wie FROM ubuntu:latest lädt hunderte Bibliotheken.
- Risiko: Im Durchschnitt enthält ein Standard-Image 50-100 bekannte Schwachstellen.
- Gefahr: Hacker nutzen veraltete Versionen von
openssl,bashoderpython, um aus dem Container auszubrechen.
# 2. Die wichtigsten Scanning-Tools
Die Wächter des Hafens.
- Trivy (Aqua Security): Der Industriestandard. Schnell, findet OS-Pakete und App-Abhängigkeiten (npm, pip, cargo).
- Grype (Anchore): Spezialisiert auf den Vergleich von SBOMs (Software Bill of Materials).
- Clair: Integriert in viele Enterprise-Registries (wie Quay).
# 3. Deep Dive: Integration in die CI/CD Pipeline
Automatisierte Qualitätskontrolle.
Bauen Sie den Scan als festen Schritt in Ihr GitLab (Artikel 800) oder GitHub Action (Artikel 801) ein.
# Beispiel GitHub Action Step
- name: Scan Image
uses: aquasecurity/trivy-action@master
with:
image-ref: 'my-app:latest'
format: 'table'
exit-code: '1' # Bricht den Build bei kritischen Fehlern ab
severity: 'CRITICAL,HIGH'
# 4. Day-2 Operations: Runtime Scanning
Kontrolle während des Betriebs.
Ein Image, das heute sicher ist, kann morgen durch eine neue CVE unsicher werden.
- Aktion: Scannen Sie Ihre laufenden Container regelmäßig (z.B. wöchentlich).
- Tool: Harbor Registry (Artikel 803) bietet eine automatische Scan-Funktion für alle gespeicherten Images.
# 5. Troubleshooting & “War Stories”
Wenn die Liste der Fehler zu lang wird.
# Top 3 Herausforderungen
-
Symptom: “Scan failed: Database timeout”.
- Ursache: Der Scanner kann die neuesten Schwachstellen-Definitionen nicht aus dem Internet laden.
- Lösung: Firewall-Port 443 für den Runner/Host erlauben.
-
Symptom: Hunderte “Low” oder “Negligible” Fehler verstopfen den Bericht.
- Lösung: Filtern Sie auf
Severity: Critical, High. Konzentrieren Sie sich auf das, was wirklich ausnutzbar ist.
- Lösung: Filtern Sie auf
-
Symptom: Fehler in einer Bibliothek, die vom Hersteller noch nicht gepatcht wurde.
- Lösung: Nutzen Sie Vulnerability Exceptions (Whitelist) für einen begrenzten Zeitraum.
# “War Story”: Die “Schatten”-Library
Ein Admin betrieb einen stolz “selbst geschriebenen” Python-Container.
Das Ereignis: Ein automatischer Trivy-Scan fand eine kritische Lücke in einer uralten Log4j Instanz.
Das Problem: Der Admin schwor, kein Java zu nutzen.
Die Entdeckung: Eine der importierten Python-Bibliotheken nutzte intern ein Java-Tool zum PDF-Rendering.
Lehre: Ohne automatische Scans ist es unmöglich, die gesamte Abhängigkeits-Kette (Transitive Dependencies) im Blick zu behalten. Nutzen Sie Scanner, die auch in die Layer (Artikel 805) hineinschauen.
# 6. Monitoring & Reporting
Compliance im Dashboard.
# Security Dashboard
Visualisieren Sie in Grafana (Artikel 698):
Total Open Vulnerabilities (High/Critical).Oldest unpatched Image (Days).- KPI: Durchschnittliche Zeit bis zum Patch (Mean Time to Remediation).
# 7. Fazit & Empfehlung
Sicherheit in der Container-Welt ist kein Zustand, sondern ein Prozess.
- Empfehlung: Nutzen Sie Distroless oder Alpine Images. Wo keine unnötige Software (wie Python-Compiler oder Shells) vorhanden ist, gibt es weniger Angriffsfläche.
- Wichtig: Signieren Sie Ihre Images nach dem Scan (z.B. mit Cosign). So stellen Sie sicher, dass nur geprüfte Images vom Proxmox-Host geladen werden können.
# Anhang: Cheatsheet (Trivy CLI)
| Aufgabe | Befehl |
|---|---|
| Image scannen | trivy image <name> |
| Dateisystem scannen | trivy fs /path/to/project |
| Nur kritische | trivy image --severity CRITICAL <name> |
| Repo scannen | trivy repo https://github.com/user/repo |