Kubernetes SecurityContext(s)

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

PodSecurityContext

Aus den Dokumenten:

Beim Festlegen des Sicherheitskontexts eines Pods können mehrere Attribute verwendet werden. Aus defensiver Sicherheitssicht sollten Sie in Betracht ziehen:

  • runASNonRoot als True zu haben

  • runAsUser zu konfigurieren

  • Wenn möglich, Berechtigungen zu beschränken, indem Sie seLinuxOptions und seccompProfile angeben

  • KEINE Privilegien über runAsGroup und supplementaryGroups zu gewähren

fsGroup Ganze Zahl

Eine spezielle zusätzliche Gruppe, die auf alle Container in einem Pod angewendet wird. Einige Volumenarten ermöglichen es dem Kubelet, das Eigentum dieses Volumens zu ändern, sodass es im Besitz des Pods ist: 1. Die besitzende GID wird die FSGroup sein 2. Das setgid-Bit ist gesetzt (neue Dateien, die im Volumen erstellt werden, gehören der FSGroup) 3. Die Berechtigungsbits werden mit rw-rw---- verknüpft. Wenn nicht festgelegt, ändert der Kubelet nicht das Eigentum und die Berechtigungen eines Volumens

fsGroupChangePolicy Zeichenfolge

Definiert das Verhalten der Änderung des Eigentums und der Berechtigung des Volumens, bevor es im Pod freigegeben wird.

runAsGroup Ganze Zahl

Die GID, unter der der Einstiegspunkt des Containerprozesses ausgeführt wird. Verwendet den Laufzeitstandard, wenn nicht festgelegt. Kann auch im Sicherheitskontext festgelegt werden.

runAsNonRoot Boolesch

Gibt an, dass der Container als Nicht-Root-Benutzer ausgeführt werden muss. Wenn true, validiert der Kubelet das Bild zur Laufzeit, um sicherzustellen, dass es nicht als UID 0 (Root) ausgeführt wird, und startet den Container nicht, wenn dies der Fall ist.

runAsUser Ganze Zahl

Die UID, unter der der Einstiegspunkt des Containerprozesses ausgeführt wird. Standardmäßig wird der im Bildmetadaten angegebene Benutzer verwendet, wenn nicht festgelegt.

seLinuxOptions SELinuxOptions Weitere Informationen zu seLinux

Der SELinux-Kontext, der auf alle Container angewendet werden soll. Wenn nicht festgelegt, weist der Container-Laufzeitumgebung jedem Container einen zufälligen SELinux-Kontext zu.

seccompProfile SeccompProfile Weitere Informationen zu Seccomp

Die Seccomp-Optionen, die von den Containern in diesem Pod verwendet werden sollen.

supplementalGroups Ganze-Zahlen-Array

Eine Liste von Gruppen, die auf den ersten Prozess angewendet werden, der in jedem Container ausgeführt wird, zusätzlich zur primären GID des Containers.

sysctls Sysctl Array Weitere Informationen zu sysctls

Sysctls enthalten eine Liste von namespaced sysctls, die für den Pod verwendet werden. Pods mit nicht unterstützten sysctls (durch die Container-Laufzeitumgebung) können möglicherweise nicht gestartet werden.

Die für alle Container angewendeten Windows-spezifischen Einstellungen. Wenn nicht festgelegt, werden die Optionen innerhalb des Sicherheitskontexts eines Containers verwendet.

## SecurityContext

Aus den Dokumenten:

Dieser Kontext wird innerhalb der Containerdefinitionen festgelegt. Aus einer defensiven Sicherheitsperspektive sollten Sie Folgendes beachten:

  • allowPrivilegeEscalation auf False setzen

  • Fügen Sie keine sensiblen Fähigkeiten hinzu (und entfernen Sie diejenigen, die Sie nicht benötigen)

  • privileged auf False setzen

  • Wenn möglich, readOnlyFilesystem auf True setzen

  • Setzen Sie runAsNonRoot auf True und legen Sie einen runAsUser fest

  • Wenn möglich, erwägen Sie, Berechtigungen durch Angabe von seLinuxOptions und seccompProfile zu beschränken

  • NICHT über runAsGroup Zugriff auf Privilegien gruppe geben.

Beachten Sie, dass die Attribute sowohl im SecurityContext als auch im PodSecurityContext festgelegt sind, wobei der im SecurityContext angegebene Wert Vorrang hat.

AllowPrivilegeEscalation steuert, ob ein Prozess mehr Berechtigungen erlangen kann als sein übergeordneter Prozess. Dieses bool steuert direkt, ob das no_new_privs-Flag für den Containerprozess gesetzt wird. AllowPrivilegeEscalation ist immer dann true, wenn der Container als Privileged ausgeführt wird oder CAP_SYS_ADMIN hat

capabilities Fähigkeiten Weitere Informationen zu Fähigkeiten

Die Fähigkeiten zum Hinzufügen/Entfernen beim Ausführen von Containern. Standardmäßig auf den Standardfähigkeitssatz festgelegt.

privileged boolean

Container im privilegierten Modus ausführen. Prozesse in privilegierten Containern sind im Wesentlichen äquivalent zu root auf dem Host. Standardmäßig auf false festgelegt.

procMount string

procMount gibt den Typ des proc-Mounts an, der für die Container verwendet werden soll. Standardmäßig wird DefaultProcMount verwendet, das die Standardwerte des Container-Runtimes für schreibgeschützte Pfade und maskierte Pfade verwendet.

Ob dieses Container ein schreibgeschütztes Stammdateisystem hat. Standardmäßig auf false festgelegt.

runAsGroup integer

Die GID, unter der der Einstiegspunkt des Containerprozesses ausgeführt werden soll. Verwendet das Laufzeitstandard, wenn nicht festgelegt.

runAsNonRoot boolean

Gibt an, dass der Container als Nicht-Root-Benutzer ausgeführt werden muss. Wenn true, wird der Kubelet das Bild zur Laufzeit validieren, um sicherzustellen, dass es nicht als UID 0 (root) ausgeführt wird, und den Container nicht starten, wenn dies der Fall ist.

runAsUser integer

Die UID, unter der der Einstiegspunkt des Containerprozesses ausgeführt werden soll. Standardmäßig auf den im Bildmetadaten angegebenen Benutzer festgelegt, wenn nicht angegeben.

seLinuxOptions SELinuxOptions Weitere Informationen zu seLinux

Der SELinux-Kontext, der auf den Container angewendet werden soll. Wenn nicht festgelegt, wird der Container-Runtime für jeden Container einen zufälligen SELinux-Kontext zuweisen.

Die seccomp-Optionen, die von diesem Container verwendet werden sollen.

Die auf alle Container angewendeten Windows-spezifischen Einstellungen.

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated