Kubernetes SecurityContext(s)

Reading time: 9 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

PodSecurityContext

Aus den Dokumenten:

Beim Festlegen des Sicherheitskontexts eines Pods können Sie mehrere Attribute verwenden. Aus der Sicht der defensiven Sicherheit sollten Sie Folgendes berücksichtigen:

  • runASNonRoot auf True setzen
  • runAsUser konfigurieren
  • Wenn möglich, Berechtigungen einschränken, indem Sie seLinuxOptions und seccompProfile angeben
  • Geben Sie keinen Zugriff auf Privilegierte Gruppen über runAsGroup und supplementaryGroups

| Parameter | Beschreibung | |

fsGroup
integer

|

Eine spezielle ergänzende Gruppe, die auf alle Container in einem Pod angewendet wird. Einige Volumentypen erlauben es dem Kubelet, den Besitz dieses Volumens zu ändern, sodass es dem Pod gehört:
1. Die besitzende GID wird die FSGroup sein
2. Das setgid-Bit ist gesetzt (neue Dateien, die im Volumen erstellt werden, gehören zur FSGroup)
3. Die Berechtigungsbits werden mit rw-rw---- OR'd. Wenn nicht gesetzt, wird das Kubelet den Besitz und die Berechtigungen eines Volumens nicht ändern

|

|

fsGroupChangePolicy
string

| Dies definiert das Verhalten des Änderns von Besitz und Berechtigungen des Volumens, bevor es innerhalb des Pods exponiert wird. | |

runAsGroup
integer

| Die GID, unter der der Einstiegspunkt des Containerprozesses ausgeführt wird. Verwendet den Standardwert zur Laufzeit, wenn nicht gesetzt. | |

runAsNonRoot
boolean

| Gibt an, dass der Container als ein Nicht-Root-Benutzer ausgeführt werden muss. Wenn dies wahr ist, validiert das Kubelet das Image zur Laufzeit, um sicherzustellen, dass es nicht als UID 0 (Root) ausgeführt wird, und schlägt fehl, den Container zu starten, wenn dies der Fall ist. | |

runAsUser
integer

| Die UID, unter der der Einstiegspunkt des Containerprozesses ausgeführt wird. Standardmäßig wird der Benutzer verwendet, der in den Metadaten des Images angegeben ist, wenn nicht angegeben. | |

seLinuxOptions
SELinuxOptions
Weitere Informationen über seLinux

| Der SELinux-Kontext, der auf alle Container angewendet werden soll. Wenn nicht angegeben, weist die Containerlaufzeit jedem Container einen zufälligen SELinux-Kontext zu. | |

seccompProfile
SeccompProfile
Weitere Informationen über Seccomp

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

supplementalGroups
integer 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 über sysctls

| Sysctls halten eine Liste von namespaced sysctls, die für den Pod verwendet werden. Pods mit nicht unterstützten Sysctls (durch die Containerlaufzeit) könnten beim Starten fehlschlagen. | |

windowsOptions
WindowsSecurityContextOptions

| Die Windows-spezifischen Einstellungen, die auf alle Container angewendet werden. Wenn nicht angegeben, werden die Optionen innerhalb des Sicherheitskontexts eines Containers verwendet. |

SecurityContext

Aus den Dokumenten:

Dieser Kontext wird innerhalb der Containerdefinitionen festgelegt. Aus der Sicht der defensiven Sicherheit sollten Sie Folgendes berücksichtigen:

  • allowPrivilegeEscalation auf False
  • Fügen Sie keine sensiblen Capabilities hinzu (und entfernen Sie die, die Sie nicht benötigen)
  • privileged auf False
  • Wenn möglich, setzen Sie readOnlyFilesystem auf True
  • Setzen Sie runAsNonRoot auf True und setzen Sie eine runAsUser
  • Wenn möglich, Berechtigungen einschränken, indem Sie seLinuxOptions und seccompProfile angeben
  • Geben Sie keinen Zugriff auf Privilegierte Gruppen über runAsGroup.

Beachten Sie, dass die in SecurityContext und PodSecurityContext festgelegten Attribute, der in SecurityContext angegebene Wert Vorrang hat.

allowPrivilegeEscalation
boolean

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

capabilities
Capabilities
Weitere Informationen über Capabilities

Die Capabilities, die beim Ausführen von Containern hinzugefügt/entfernt werden sollen. Standardmäßig wird die Standardmenge an Capabilities verwendet.

privileged
boolean

Führen Sie den Container im privilegierten Modus aus. Prozesse in privilegierten Containern sind im Wesentlichen gleichwertig mit Root auf dem Host. Standardmäßig ist dies falsch.

procMount
string

procMount bezeichnet den Typ des proc-Mounts, der für die Container verwendet werden soll. Der Standardwert ist DefaultProcMount, der die Standardwerte der Containerlaufzeit für schreibgeschützte Pfade und maskierte Pfade verwendet.

readOnlyRootFilesystem
boolean

Ob dieser Container ein schreibgeschütztes Root-Dateisystem hat. Der Standardwert ist falsch.

runAsGroup
integer

Die GID, unter der der Einstiegspunkt des Containerprozesses ausgeführt wird. Verwendet den Standardwert zur Laufzeit, wenn nicht gesetzt.

runAsNonRoot
boolean

Gibt an, dass der Container als ein Nicht-Root-Benutzer ausgeführt werden muss. Wenn dies wahr ist, validiert das Kubelet das Image zur Laufzeit, um sicherzustellen, dass es nicht als UID 0 (Root) ausgeführt wird, und schlägt fehl, den Container zu starten, wenn dies der Fall ist.

runAsUser
integer

Die UID, unter der der Einstiegspunkt des Containerprozesses ausgeführt wird. Standardmäßig wird der Benutzer verwendet, der in den Metadaten des Images angegeben ist, wenn nicht angegeben.

seLinuxOptions
SELinuxOptions
Weitere Informationen über seLinux

Der SELinux-Kontext, der auf den Container angewendet werden soll. Wenn nicht angegeben, weist die Containerlaufzeit jedem Container einen zufälligen SELinux-Kontext zu.

seccompProfile
SeccompProfile

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

windowsOptions
WindowsSecurityContextOptions

Die Windows-spezifischen Einstellungen, die auf alle Container angewendet werden.

References

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks