Begriff
Container Security
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Container (Docker) sind wie Tupperdosen für Software. Viele denken: "Was in der Dose ist, kann nicht raus." Falsch. Container sind keine echten Virtual Machines. Sie teilen sich den gleichen Kernel (das Herz) mit dem Host-Betriebssystem. Wenn ein Hacker aus der Dose ausbricht ("Container Breakout"), gehört ihm der ganze Server inkl. aller anderen Dosen. Container Security schützt davor.
- Image Scanning: Prüfen, ob die Dose schon beim Einpacken verfault war (Viren im Image).
- Runtime Protection: Überwachen, ob jemand versucht, ein Loch in die Dose zu bohren.
Merksatz: Die Praxis des Schützens von Container-Anwendungen (vom Image-Build bis zur Laufzeit) vor Schwachstellen, Malware und unbefugtem Zugriff.
- Nicht als Root laufen lassen!
USER 1001im Dockerfile. Wenn du als Root im Container bist, bist du (oft) auch Root auf dem Host, wenn du ausbrichst. - Minimal Base Images: Nutze
alpineoderdistroless. Was nicht da ist (keincurl, keine Shell), kann der Hacker nicht nutzen ("Living off the land"). - Read-Only Filesystem: Verbiete dem Container, Dateien zu schreiben, wenn er es nicht muss.
Praxisroutine
In der Praxis lernst du Container Security, indem du mit einem kleinen, kontrollierten Beispiel beginnst. Baue zuerst einen Minimalfall, prüfe das Ergebnis, veraendere genau eine Sache und beobachte, was sich ändert. Notiere dir Eingabe, Aktion, Ausgabe und typischen Fehler.
Übung: Erstelle ein Beispiel aus deinem Alltag, fuehre den Ablauf gedanklich Schritt für Schritt durch und markiere die Stelle, an der du Feedback oder ein Log brauchst. Wenn du diese Stelle benennen kannst, verstehst du den Begriff praktisch.
1. Image Scanning (Trivy / Clair)
Scanner zerlegen das Image Layer für Layer.
Sie vergleichen installierte Pakete mit Datenbanken (CVEs).
"Hilfe, dein Image nutzt openssl 1.0 -> High Severity CVE!"
Das passiert vor dem Deployment (in der CI/CD Pipeline).
2. Admission Controllers (OPA Gatekeeper)
Türsteher für Kubernetes. "Du willst diesen Container starten? Er läuft als Root? -> Zugriff verweigert!" Policy as Code direkt im Cluster.
Technische Einordnung im System
Technisch ist Container Security nicht isoliert. Es wirkt mit Nachbarbegriffen zusammen, hat Voraussetzungen und erzeugt Folgen. Für ein robustes Verständnis prüfst du drei Fragen: Welche Daten oder Bedingungen braucht dieser Schritt? Welche Ausgabe oder Wirkung entsteht? Was passiert bei falschen, fehlenden oder zu großen Eingaben?
Diese Sicht ist wichtig, weil echte Systeme selten am Hauptpfad scheitern. Sie scheitern an Randfällen, Berechtigungen, Zeitpunkten, Formaten, Reihenfolgen oder stillen Annahmen.
1. Linux Capabilities (Dropping)
Auch ein Prozess, der nicht "root" ist, kann verheerenden Schaden anrichten. Der Linux-Kernel teilt Superuser-Mächte in feingranulare Capabilities auf.
Ein Default-Docker-Container startet mit einem Standard-Set, das CAP_CHOWN (Darf er File-Owner ändern?) oder CAP_DAC_OVERRIDE erlaubt. Eines der stärksten Security-Prinzipien ist es, alle Capabilities zu droppen (--cap-drop=ALL) und nur jene, die wirklich gebraucht werden (z. B. CAP_NET_BIND_SERVICE, um einen Server auf Port 80 zu starten), wieder hinzuzugeben. Damit wird der Blast-Radius beim Container Escape radikal minimiert.
2. Seccomp-BPF & AppArmor
Wie verhindert man, dass ein Container-Prozess Systemaufrufe (Syscalls) startet, mit denen er den Kernel exploitieren könnte?
Mit Seccomp (Secure Computing Mode). Durch Injection eines BPF-Profils verbietet man hunderte von ungenutzten Syscalls (wie ptrace zum RAM-Lesen anderer Prozesse). Versucht die Malware im Container den Aufruf, crasht der Container durch Kernel-Intervention (SIGKILL).
Systeme wie AppArmor oder SELinux legen das als Mandatory Access Control (MAC) für Dateisysteme aus: "Dieser NGINX-Container darf streng nur /usr/share/nginx/html/ lesen und absolut keinen Write auf /etc/ machen, selbst wenn die Linux Discretionary Permissions es erlauben würden."
3. eBPF Runtime Threat Security
Werden statische Scanner (Trivy/Clair) überlistet (z.B. Zero-Day-Exploiting im Memory), greift die Runtime Security Cloud Native Ära an (Tools wie Falco oder Tetragon).
Durch eBPF hängen sich Security-Dämonen direkt in den Kernel Space und überwachen System-Aufrufe live: Startet plötzlich ein unschuldiger NGINX-Prozess via execve eine bash Binärdatei? Öffnet der Frontend-Pod (der mit dem Internet redet) eine TCP-Verbindung direkt in den versteckten Payment-Pod? Die eBPF Rule-Engine schlägt innerhalb von Mikrosekunden Alarm oder schlachtet den manipulierten Container.
Quick-Check
Sind VMs sicherer?
Ja. Eine VM hat ihren eigenen Kernel. Ein Ausbruch ist viel schwerer ("Hypervisor Escape"). Dafür sind VMs langsamer und fetter. Techniken wie "gVisor" oder "Kata Containers" versuchen, VMs so leicht wie Container zu machen (Sandboxing).Was sind Privileged Container?
docker run --privileged. Das ist wie "Sicherheit ausschalten". Der Container darf fast alles, was der Host darf (Hardwarezugriff). Niemals ohne extrem guten Grund nutzen!Reicht eine Firewall?
Nein. Innerhalb von Kubernetes (East-West Traffic) hilft die klassische Firewall kaum. Man braucht Network Policies oder Service Mesh.