Wie sichert man Container-Images ab?
Kurzantwort
Beginne mit einem minimalen, vertrauenswürdigen Basis-Image (distroless oder slim), um die Angriffsfläche zu verkleinern, scanne Images in der CI und in der Registry auf bekannte CVEs, fixiere und verifiziere Image-Digests, führe als Nicht-Root-Benutzer aus und vermeide es, Secrets einzubacken. Signiere Images und erzwinge Admission-Richtlinien, sodass nur gescannte, signierte Images laufen. Baue regelmäßig neu, damit gepatchte Basis-Layer durchfließen.
Container wirken wegwerfbar, also investieren Teams zu wenig in Image-Sicherheit — doch ein verwundbares oder vergiftetes Image läuft überall, wo es bereitgestellt wird. Das Interview erwartet einen mehrschichtigen Ansatz, keinen einzelnen Trick.
Ein kleines, sauberes Image bauen
- Minimale Basis-Images. Eine
distroless- oder slim-Basis entfernt Shells, Paketmanager und ungenutzte Bibliotheken. Weniger Pakete bedeuten weniger Angriffsfläche und weit weniger Scanner-Rauschen — die meisten CVEs stammen aus OS-Paketen, die du nie nutzt. - Keine Secrets in Layern. Alles, was per
COPYkopiert oder als Build-Argument gesetzt wird, bleibt im Layer-Verlauf, auch wenn es später entfernt wird; hole Secrets stattdessen zur Laufzeit. - Als Nicht-Root ausführen. Setze einen
USER, damit ein Container-Ausbruch nicht mit Root-äquivalenten Rechten beginnt, und kombiniere dies mit schreibgeschützten Dateisystemen und entzogenen Capabilities.
Verifizieren und kontrollieren
- In CI und Registry scannen. Tools wie Trivy oder Grype erkennen bekannte CVEs sowohl in OS-Paketen als auch in Sprachabhängigkeiten. Lass den Build bei kritischen Funden fehlschlagen und scanne in der Registry erneut, da neue CVEs nach der Build-Zeit veröffentlicht werden.
- Per Digest fixieren, nicht per beweglichem Tag.
:latestist nicht deterministisch; eine Digest-Fixierung garantiert, dass du genau das ausführst, was du gescannt hast. - Signieren und erzwingen. Signiere Images (Sigstore/cosign) und nutze Admission-Kontrolle (z. B. eine OPA-/Kyverno-Richtlinie oder Signaturprüfung), sodass das Cluster nur gescannte, signierte Images ausführt.
Aktuell halten
Eine im Basis-Image gepatchte CVE hilft nur, wenn du neu baust und neu bereitstellst. Automatisiere regelmäßige Neubauten, damit Upstream-Fixes in laufende Workloads fließen.
Worauf Interviewer achten
Zuerst minimale Basis-Images und Scanning nennen, dann Nicht-Root, Signierung plus Admission-Kontrolle und den operativen Punkt, dass Images neu gebaut werden müssen, um Patches zu erben.
Wahrscheinliche Anschlussfragen
- Warum reduziert ein kleineres Basis-Image sowohl die Angriffsfläche als auch das Scan-Rauschen?
- Was ist Image-Signierung (z. B. Sigstore/cosign) und wie nutzt die Admission-Kontrolle sie?
- Wie stellst du sicher, dass ein CVE-Patch des Basis-Images tatsächlich laufende Workloads erreicht?