Kubernetes SecurityContext(s)

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

PodSecurityContext

Z dokumentacji:

Podczas określania kontekstu bezpieczeństwa Podu możesz użyć kilku atrybutów. Z punktu widzenia defensywnego bezpieczeństwa powinieneś rozważyć:

  • Ustawienie runASNonRoot na True
  • Skonfigurowanie runAsUser
  • Jeśli to możliwe, rozważ ograniczenie uprawnień wskazując seLinuxOptions i seccompProfile
  • NIE przyznawaj dostępu do grupy privilege za pomocą runAsGroup i supplementaryGroups

| Parameter | Description | |

fsGroup
integer

|

Specjalna grupa pomocnicza, która ma zastosowanie do wszystkich kontenerów w podzie. Niektóre typy wolumenów pozwalają Kubeletowi na zmianę właściciela tego wolumenu na właściciela podu:
1. Właściciel GID będzie FSGroup
2. Bit setgid jest ustawiony (nowe pliki utworzone w wolumenie będą własnością FSGroup)
3. Bity uprawnień są OR’d z rw-rw–– Jeśli nie ustawione, Kubelet nie zmieni właściciela i uprawnień żadnego wolumenu

|

|

fsGroupChangePolicy
string

| To definiuje zachowanie zmiany właściciela i uprawnień wolumenu przed jego udostępnieniem wewnątrz Podu. | |

runAsGroup
integer

| GID do uruchomienia punktu wejścia procesu kontenera. Używa domyślnej wartości czasu wykonywania, jeśli nie jest ustawione. | |

runAsNonRoot
boolean

| Wskazuje, że kontener musi działać jako użytkownik niebędący rootem. Jeśli prawda, Kubelet zweryfikuje obraz w czasie wykonywania, aby upewnić się, że nie działa jako UID 0 (root) i nie uruchomi kontenera, jeśli tak jest. | |

runAsUser
integer

| UID do uruchomienia punktu wejścia procesu kontenera. Domyślnie użytkownik określony w metadanych obrazu, jeśli nie jest określony. | |

seLinuxOptions
SELinuxOptions
Więcej informacji o seLinux

| Kontekst SELinux, który ma być zastosowany do wszystkich kontenerów. Jeśli nie określono, czas wykonywania kontenera przydzieli losowy kontekst SELinux dla każdego kontenera. | |

seccompProfile
SeccompProfile
Więcej informacji o Seccomp

| Opcje seccomp, które mają być używane przez kontenery w tym podzie. | |

supplementalGroups
integer array

| Lista grup stosowanych do pierwszego procesu uruchomionego w każdym kontenerze, oprócz głównego GID kontenera. | |

sysctls
Sysctl array
Więcej informacji o sysctls

| Sysctls zawierają listę namespaced sysctls używanych dla podu. Pody z nieobsługiwanymi sysctls (przez czas wykonywania kontenera) mogą nie uruchomić się. | |

windowsOptions
WindowsSecurityContextOptions

| Ustawienia specyficzne dla systemu Windows stosowane do wszystkich kontenerów. Jeśli nie określono, użyte zostaną opcje w SecurityContext kontenera. |

SecurityContext

Z dokumentacji:

Ten kontekst jest ustawiony wewnątrz definicji kontenerów. Z punktu widzenia defensywnego bezpieczeństwa powinieneś rozważyć:

  • allowPrivilegeEscalation na False
  • Nie dodawaj wrażliwych capabilities (i usuń te, których nie potrzebujesz)
  • privileged na False
  • Jeśli to możliwe, ustaw readOnlyFilesystem na True
  • Ustaw runAsNonRoot na True i ustaw runAsUser
  • Jeśli to możliwe, rozważ ograniczenie uprawnień wskazując seLinuxOptions i seccompProfile
  • NIE przyznawaj dostępu do grupy privilege za pomocą runAsGroup.

Zauważ, że atrybuty ustawione w zarówno SecurityContext, jak i PodSecurityContext, wartość określona w SecurityContext ma pierwszeństwo.

allowPrivilegeEscalation
boolean

AllowPrivilegeEscalation kontroluje, czy proces może uzyskać więcej uprawnień niż jego proces nadrzędny. Ta wartość boolowska bezpośrednio kontroluje, czy flaga no_new_privs zostanie ustawiona na proces kontenera. AllowPrivilegeEscalation jest zawsze prawdziwe, gdy kontener jest uruchamiany jako Privileged lub ma CAP_SYS_ADMIN

capabilities
Capabilities
Więcej informacji o Capabilities

Capabilities do dodania/usunięcia podczas uruchamiania kontenerów. Domyślnie używa domyślnego zestawu uprawnień.

privileged
boolean

Uruchom kontener w trybie uprzywilejowanym. Procesy w uprzywilejowanych kontenerach są zasadniczo równoważne z rootem na hoście. Domyślnie jest to fałsz.

procMount
string

procMount oznacza typ montowania proc, który ma być używany dla kontenerów. Domyślnie jest to DefaultProcMount, który używa domyślnych ustawień czasu wykonywania dla ścieżek tylko do odczytu i zamaskowanych ścieżek.

readOnlyRootFilesystem
boolean

Czy ten kontener ma system plików root tylko do odczytu. Domyślnie jest to fałsz.

runAsGroup
integer

GID do uruchomienia punktu wejścia procesu kontenera. Używa domyślnej wartości czasu wykonywania, jeśli nie jest ustawione.

runAsNonRoot
boolean

Wskazuje, że kontener musi działać jako użytkownik niebędący rootem. Jeśli prawda, Kubelet zweryfikuje obraz w czasie wykonywania, aby upewnić się, że nie działa jako UID 0 (root) i nie uruchomi kontenera, jeśli tak jest.

runAsUser
integer

UID do uruchomienia punktu wejścia procesu kontenera. Domyślnie użytkownik określony w metadanych obrazu, jeśli nie jest określony.

seLinuxOptions
SELinuxOptions
Więcej informacji o seLinux

Kontekst SELinux, który ma być zastosowany do kontenera. Jeśli nie określono, czas wykonywania kontenera przydzieli losowy kontekst SELinux dla każdego kontenera.

seccompProfile
SeccompProfile

Opcje seccomp do użycia przez ten kontener.

windowsOptions
WindowsSecurityContextOptions

Ustawienia specyficzne dla systemu Windows stosowane do wszystkich kontenerów.

References

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks