Benutzer-Namensräume: Stateful Pods jetzt in Kubernetes 1.28 verfügbar!
Erfahren Sie, wie Benutzer-Namensräume die Sicherheit und Flexibilität von Stateful Pods in Kubernetes 1.28 verbessern.
Erfahren Sie, wie Benutzer-Namensräume die Sicherheit und Flexibilität von Stateful Pods in Kubernetes 1.28 verbessern.
Kubernetes v1.25 führte die Unterstützung von Benutzer-Namensräumen nur für stateless Pods ein. Mit Kubernetes 1.28 wurde diese Einschränkung aufgehoben, nachdem in der Version 1.27 einige Designänderungen vorgenommen wurden.
Die Schönheit dieser Funktion liegt darin, dass:
Dieser Beitrag erklärt die Grundlagen der Benutzer-Namensräume und zeigt:
Ein Benutzer-Namensraum ist ein Linux-Feature, das die Benutzer- und Gruppenidentifikatoren (UIDs und GIDs) der Container von denjenigen des Hosts isoliert. Die Identifikatoren im Container können so auf Identifikatoren auf dem Host abgebildet werden, dass sich die verwendeten Host-UIDs/GIDs für verschiedene Container niemals überschneiden. Darüber hinaus können die Identifikatoren auf unprivilegierte nicht-überlappende UIDs und GIDs auf dem Host abgebildet werden. Dies bedeutet im Wesentlichen zwei Dinge:
Da die UIDs und GIDs für verschiedene Container auf unterschiedliche UIDs und GIDs auf dem Host abgebildet sind, haben Container es schwerer, einander anzugreifen, selbst wenn sie die Grenzen des Containers überschreiten. Wenn beispielsweise Container A mit anderen UIDs und GIDs auf dem Host läuft als Container B, sind die Operationen, die es auf den Dateien und Prozessen von Container B durchführen kann, eingeschränkt: Es kann nur lesen/schreiben, was eine Datei für andere erlaubt, da es niemals die Berechtigung für den Eigentümer oder die Gruppe haben wird (die UIDs/GIDs auf dem Host sind garantiert unterschiedlich für verschiedene Container).
Da die UIDs und GIDs auf unprivilegierte Benutzer auf dem Host abgebildet sind, hat ein Container, der die Grenzen des Containers ü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 Signale senden kann usw.
Darüber hinaus sind die gew granted capabilities nur innerhalb des Benutzer-Namensraums gültig und nicht auf dem Host.
Ohne die Verwendung eines Benutzer-Namensraums hat ein Container, der als root läuft, im Fall eines Container-Breakouts root-Rechte auf dem Knoten. Und wenn dem Container einige Berechtigungen gewährt wurden, sind diese Berechtigungen auch auf dem Host gültig. Nichts davon trifft zu, wenn Benutzer-Namensräume verwendet werden (außer bei Bugs, natürlich 🙂).
Wie bereits erwähnt, unterstützt Kubernetes ab Version 1.28 Benutzer-Namensräume mit Stateful Pods. Das bedeutet, dass Pods mit Benutzer-Namensräumen jeden Typ von Volume verwenden können und nicht mehr auf einige Volumenarten beschränkt sind wie zuvor.
Das Feature-Flag zur Aktivierung dieser Funktion wurde umbenannt. Es heißt nicht mehr UserNamespacesStatelessPodsSupport
, sondern ab 1.28 sollten Sie UserNamespacesSupport
verwenden. Es wurden viele Änderungen vorgenommen und die Anforderungen an die Knoten-Hosts haben sich geändert. Das Feature-Flag wurde umbenannt, um dies widerzuspiegeln.
Die ayedo GmbH unterstützt Sie gerne bei der Implementierung und Nutzung von Kubernetes und den neuen Funktionen wie Benutzer-Namensräumen, um Ihre Anwendungen sicherer und flexibler zu gestalten.
Quelle: Kubernetes Blog
Profitieren Sie von skalierbarem App Hosting in Kubernetes, hochverfügbarem Ingress Loadbalancing und erstklassigem Support durch unser Plattform Team. Mit der ayedo Cloud können Sie sich wieder auf das konzentrieren, was Sie am besten können: Software entwickeln.
Interessiert an weiteren Inhalten? Hier gehts zu allen Blogs →