Zurück zur Übersicht

Begriff

Unprivileged Container

Container Security S3
2 Quellen 1 Lernpfad 0 Backlinks enriched

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.

Standardmäßig ist der "Root"-User im Docker Container auch der "Root"-User auf dem Host-Server. Er hat zwar eingeschränkte Sicht (Namespaces), aber wenn er ausbricht (Container Escape), ist er Gott auf deinem Server. Ein Unprivileged Container läuft zwar im Container als "Root" (UID 0), ist aber auf dem Host ein Niemand (UID 1001). Selbst wenn der Hacker ausbricht, hat er auf dem Server keine Rechte. Er kann nichts löschen, nichts installieren. Das ist der Goldstandard für Container-Sicherheit.

Merksatz: Ein Container, dessen Prozesse auf dem Host-System einem nicht-privilegierten Benutzer zugeordnet sind (User Namespace Remapping), um die Auswirkungen eines Container-Ausbruchs zu minimieren.


Quick-Check

  1. Warum Port 80 Problem?
    Nur Root darf Ports < 1024 binden (Linux Regel). Ein unprivilegierter Container (Nginx als User 1001) muss Port 8080 nutzen. (Ab Kernel 4.11 kann man das lockern via sysctl net.ipv4.ip_unprivileged_port_start).
  2. Ist "USER 1000" sicher genug?
    Viel sicherer als Root. Aber wenn es im Kernel eine Lücke gibt ("Dirty Pipe"), könnte User 1000 trotzdem Root werden. User Namespaces (Remapping) sind eine extra Schicht Sicherheit.
  3. Kubernetes?
    Man nutzt securityContext im Pod: runAsNonRoot: true. K8s verweigert den Start, wenn das Image als Root laufen will. Wichtig für Policy (OPA Gatekeeper).