Kubernetes SecurityContext(s)

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

PodSecurityContext

Z dokumentacji:

Podczas określania kontekstu bezpieczeństwa Podu można użyć kilku atrybutów. Z punktu widzenia defensywnego bezpieczeństwa należy wziąć pod uwagę:

  • Ustawienie runASNonRoot na True

  • Konfigurację runAsUser

  • Jeśli to możliwe, rozważ ograniczenie uprawnień poprzez określenie seLinuxOptions i seccompProfile

  • NIE udzielanie dostępu do grupy uprzywilejowanej za pomocą runAsGroup i supplementaryGroups

fsGroup liczba całkowita

Specjalna grupa uzupełniająca, która dotyczy wszystkich kontenerów w podzie. Niektóre typy woluminów pozwalają Kubeletowi zmienić właściciela tego woluminu, aby był własnością poda: 1. GID właściciela będzie FSGroup 2. Ustawiony zostanie bit setgid (nowe pliki utworzone w woluminie będą własnością FSGroup) 3. Bity uprawnień są OR-owane z rw-rw---- Jeśli nie jest ustawione, Kubelet nie będzie modyfikował właściciela i uprawnień żadnego woluminu

fsGroupChangePolicy łańcuch znaków

Określa zachowanie zmiany właściciela i uprawnień woluminu przed udostępnieniem go wewnątrz Podu.

runAsGroup liczba całkowita

GID, pod którym ma być uruchomiony punkt wejścia procesu kontenera. Używa domyślnych ustawień czasu wykonywania, jeśli nie jest ustawione. Może być również ustawione w SecurityContext.

runAsNonRoot wartość logiczna

Wskazuje, że kontener musi być uruchomiony jako użytkownik nie będący rootem. Jeśli wartość jest true, Kubelet sprawdzi obraz w czasie wykonywania, aby upewnić się, że nie jest uruchomiony jako UID 0 (root) i nie uruchomi kontenera, jeśli tak jest.

runAsUser liczba całkowita

UID, pod którym ma być uruchomiony punkt wejścia procesu kontenera. Domyślnie jest to użytkownik określony w metadanych obrazu, jeśli nie jest określony.

seLinuxOptions SELinuxOptions Więcej informacji na temat seLinux

Kontekst SELinux, który ma być zastosowany do wszystkich kontenerów. Jeśli nie jest określony, środowisko uruchomieniowe kontenera przydzieli losowy kontekst SELinux dla każdego kontenera.

seccompProfile SeccompProfile Więcej informacji na temat Seccomp

Opcje seccomp do użycia przez kontenery w tym podzie.

supplementalGroups tablica liczb całkowitych

Lista grup stosowanych do pierwszego uruchomionego procesu w każdym kontenerze, oprócz podstawowego GID kontenera.

sysctls Sysctl tablica Więcej informacji na temat sysctls

Sysctls zawiera listę sysctls przestrzeni nazw używanych dla poda. Pody z nieobsługiwanymi sysctls (przez środowisko uruchomieniowe kontenera) mogą nie uruchomić się.

Windowsowe ustawienia specyficzne dla wszystkich kontenerów. Jeśli nie jest określone, będą używane opcje w ramach SecurityContext kontenera.

## SecurityContext

Z dokumentacji:

Ten kontekst jest ustawiany w definicjach kontenerów. Z perspektywy defensywnego bezpieczeństwa należy wziąć pod uwagę:

  • allowPrivilegeEscalation ustawione na False

  • Nie dodawaj wrażliwych capabilities (i usuń te, których nie potrzebujesz)

  • privileged ustawione na False

  • Jeśli to możliwe, ustaw readOnlyFilesystem na True

  • Ustaw runAsNonRoot na True i podaj runAsUser

  • Jeśli to możliwe, rozważ ograniczenie uprawnień poprzez określenie seLinuxOptions i seccompProfile

  • NIE udzielaj dostępu do grupy z uprawnieniami poprzez runAsGroup

Należy zauważyć, że atrybuty ustawione zarówno w SecurityContext, jak i PodSecurityContext, wartość określona w SecurityContext ma priorytet.

AllowPrivilegeEscalation kontroluje, czy proces może uzyskać więcej uprawnień niż jego proces nadrzędny. To boolowskie pole bezpośrednio kontroluje, czy flaga no_new_privs zostanie ustawiona dla procesu kontenera. AllowPrivilegeEscalation jest zawsze true, gdy kontener jest uruchamiany jako Privileged lub ma CAP_SYS_ADMIN.

capabilities Capabilities Więcej informacji na temat Capabilities

Capabilities do dodania/usunięcia podczas uruchamiania kontenerów. Domyślnie ustawione na zestaw domyślnych capabilities.

privileged boolean

Uruchom kontener w trybie privileged. Procesy w kontenerach privileged są w zasadzie równoważne z rootem na hoście. Domyślnie ustawione na false.

procMount string

procMount określa typ montowania proc do użycia dla kontenerów. Domyślnie używane są domyślne ścieżki tylko do odczytu i zmaskowane ścieżki dla kontenera.

Czy ten kontener ma system plików root tylko do odczytu. Domyślnie ustawione na false.

runAsGroup integer

GID, z którego ma być uruchomiony entrypoint procesu kontenera. Używa domyślnych ustawień czasu wykonania, jeśli nie jest ustawione.

runAsNonRoot boolean

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

runAsUser integer

UID, z którego ma być uruchomiony entrypoint procesu kontenera. Domyślnie używany jest użytkownik określony w metadanych obrazu, jeśli nie jest określony.

seLinuxOptions SELinuxOptions Więcej informacji na temat seLinux

Kontekst SELinux, który ma być zastosowany do kontenera. Jeśli nie jest określony, środowisko wykonawcze kontenera przydzieli losowy kontekst SELinux dla każdego kontenera.

Opcje seccomp do użycia przez ten kontener.

Specyficzne dla systemu Windows ustawienia, które są stosowane do wszystkich kontenerów.

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated