Kubernetes v1.33: Benutzer-Namensräume jetzt standardmäßig aktiviert!
Entdecken Sie die Vorteile von Benutzer-Namensräumen in Kubernetes v1.33 und wie sie Ihre Sicherheitsarchitektur verbessern können.
In Kubernetes v1.33 ist die Unterstützung für Benutzer-Namensräume standardmäßig aktiviert. Das bedeutet, dass Pods, wenn die Systemanforderungen erfüllt sind, die Möglichkeit haben, Benutzer-Namensräume zu verwenden. Es ist nicht mehr erforderlich, ein Kubernetes-Feature-Flag zu aktivieren!
Was sind Benutzer-Namensräume?
Hinweis: Linux-Benutzer-Namensräume sind ein anderes Konzept als Kubernetes-Namensräume. Erstere sind eine Funktion des Linux-Kernels; letztere sind eine Funktion von Kubernetes.
Linux bietet verschiedene Namensräume, um Prozesse voneinander zu isolieren. Ein typischer Kubernetes-Pod läuft beispielsweise innerhalb eines Netzwerk-Namensraums, um die Netzwerkidentität zu isolieren, und eines PID-Namensraums, um die Prozesse zu isolieren.
Ein Linux-Namensraum, der oft übersehen wird, ist der Benutzer-Namensraum. Dieser isoliert die UIDs und GIDs der Container von denen des Hosts. Die Identifikatoren in einem Container können so auf Identifikatoren auf dem Host abgebildet werden, dass es keine Überschneidungen bei den UID/GIDs zwischen Host und Container gibt. Darüber hinaus können die Identifikatoren auf unprivilegierte, nicht überlappende UIDs und GIDs auf dem Host abgebildet werden. Dies bringt drei wesentliche Vorteile:
-
Verhinderung seitlicher Bewegungen: Da die UIDs und GIDs für verschiedene Container auf unterschiedliche UIDs und GIDs auf dem Host abgebildet sind, haben Container es schwerer, sich gegenseitig anzugreifen, selbst wenn sie die Containergrenzen überschreiten. Angenommen, Container A läuft mit anderen UIDs und GIDs auf dem Host als Container B. In diesem Fall sind die Operationen, die Container A auf den Dateien und Prozessen von Container B durchführen kann, eingeschränkt: Er kann nur lesen/schreiben, was eine Datei anderen erlaubt, da er niemals über Besitzer- oder Gruppenberechtigungen verfügt (die UIDs/GIDs auf dem Host sind garantiert unterschiedlich für verschiedene Container).
-
Erhöhte Host-Isolation: Da die UIDs und GIDs auf unprivilegierte Benutzer auf dem Host abgebildet sind, hat ein Container, der die Containergrenzen überschreitet, selbst wenn er als Root innerhalb des Containers läuft, keine Berechtigungen auf dem Host. Dies schützt erheblich, welche Host-Dateien er lesen/schreiben kann, welche Prozesse er ansprechen kann usw. Darüber hinaus sind die gewährten Berechtigungen nur innerhalb des Benutzer-Namensraums gültig und nicht auf dem Host, was die Auswirkungen einer Container-Escape erheblich einschränkt.
-
Ermöglichung neuer Anwendungsfälle: Benutzer-Namensräume ermöglichen es Containern, bestimmte Berechtigungen innerhalb ihres eigenen Benutzer-Namensraums zu erlangen, ohne den Host zu beeinträchtigen. Dies eröffnet neue Möglichkeiten, wie das Ausführen von Anwendungen, die privilegierte Operationen erfordern, ohne vollständigen Root-Zugriff auf dem Host zu gewähren. Dies ist besonders nützlich für das Ausführen von geschachtelten Containern.
Wenn ein Pod, der als Root-Benutzer ohne Benutzer-Namensraum läuft, ausbricht, hat er Root-Rechte auf dem Knoten. Wenn dem Container einige Berechtigungen gewährt wurden, sind diese auch auf dem Host gültig. All dies gilt nicht, wenn Benutzer-Namensräume verwendet werden (außer bei Bugs, natürlich 🙂).
Mit der Einführung von Benutzer-Namensräumen in Kubernetes v1.33 können Entwickler und DevOps-Teams ihre Sicherheitsarchitektur erheblich verbessern und neue, innovative Anwendungsfälle realisieren. ayedo steht Ihnen als Partner zur Seite, um diese neuen Möglichkeiten optimal zu nutzen!
Quelle: Kubernetes Blog