Kubernetes SecurityContext(s)

Unterstützen Sie HackTricks

PodSecurityContext

Aus den Dokumenten:

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

  • runASNonRoot als True zu haben

  • runAsUser konfigurieren

  • Wenn möglich, Berechtigungen durch Angabe von seLinuxOptions und seccompProfile einzuschränken

  • NICHT das Privilegien-Gruppen-Zugriff ü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

Dies 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 Standardwert zur Laufzeit, 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, 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 Ganze Zahl

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

seLinuxOptions SELinuxOptions Weitere Informationen zu seLinux

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

seccompProfile SeccompProfile Weitere Informationen zu Seccomp

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

supplementalGroups Ganze Zahl-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 den Container-Runtime) 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, setzen Sie readOnlyFilesystem auf True

  • 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

  • Geben Sie KEINEN Privilegien-Gruppenzugriff über runAsGroup.

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, die hinzugefügt/entfernt werden sollen, wenn Container ausgeführt werden. 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 ist dies false.

runAsGroup integer

Die GID, unter der der Einstiegspunkt des Containerprozesses ausgeführt werden soll. Verwendet Standardwert zur Laufzeit, 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 Containerstart fehlschlagen lassen, wenn dies der Fall ist.

runAsUser integer

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

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 spezifischen Windows-Einstellungen.

Referenzen

Unterstützen Sie HackTricks

Last updated