Kubernetes SecurityContext(s)

Wesprzyj HackTricks

Kontekst Bezpieczeństwa Pod

Z dokumentacji:

Podczas określania kontekstu bezpieczeństwa Pod, można użyć kilku atrybutów. Z punktu widzenia defensywnego bezpieczeństwa należy rozważyć:

  • Ustawienie runASNonRoot na True

  • Skonfigurowanie runAsUser

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

  • NIE udzielaj dostępu do grupy uprawnień poprzez 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ł on 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 nieustawione, Kubelet nie zmodyfikuje właściciela i uprawnień żadnego woluminu

fsGroupChangePolicy łańcuch znaków

Określa zachowanie zmiany właściciela i uprawnień woluminu przed jego ujawnieniem wewnątrz Poda.

runAsGroup liczba całkowita

GID, pod którym ma być uruchamiany punkt wejścia procesu kontenera. Używa domyślnego czasu wykonywania, jeśli nieustawiony. Może również być ustawiony w SecurityContext.

runAsNonRoot boolean

Wskazuje, że kontener musi działać jako użytkownik nie będący rootem. Jeśli wartość jest prawdziwa, 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 liczba całkowita

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

seLinuxOptions SELinuxOptions Więcej informacji o seLinux

Kontekst SELinux, który ma być stosowany do wszystkich kontenerów. Jeśli nieokreślony, runtime kontenera przydzieli losowy kontekst SELinux dla każdego kontenera.

seccompProfile SeccompProfile Więcej informacji o Seccomp

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

supplementalGroups tablica liczb całkowitych

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

sysctls Sysctl tablica Więcej informacji o sysctls

Sysctls zawierają listę sysctls przestrzennych używanych dla poda. Pody z nieobsługiwanymi sysctls (przez runtime kontenera) mogą nie uruchomić się poprawnie.

Specyficzne dla systemu Windows ustawienia stosowane do wszystkich kontenerów. Jeśli nieokreślone, opcje w ramach SecurityContext kontenera zostaną użyte.

## SecurityContext

Z dokumentacji:

Ten kontekst jest ustawiany w definicjach kontenerów. Z punktu widzenia obronnej bezpieczeństwa należy rozważyć:

  • allowPrivilegeEscalation ustawione na False

  • Nie dodawać wrażliwych capabilities (i usuwać te, których nie potrzebujesz)

  • privileged ustawione 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ń poprzez wskazanie seLinuxOptions i seccompProfile

  • NIE udzielać dostępu do grupy uprawnień za pomocą runAsGroup

Zauważ, że atrybuty ustawione w zarówno SecurityContext, jak i PodSecurityContext, wartość określona w SecurityContext ma najwyższy priorytet.

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

capabilities Capabilities More info about Capabilities

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

privileged boolean

Uruchom kontener w trybie uprzywilejowanym. Procesy w kontenerach uprzywilejowanych 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 jest to DefaultProcMount, który używa domyślnych ustawień ścieżek tylko do odczytu i zasłoniętych ścieżek kontenera.

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

runAsGroup integer

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

runAsNonRoot boolean

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

runAsUser integer

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

seLinuxOptions SELinuxOptions More info about seLinux

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

Opcje seccomp do użycia przez ten kontener.

Specyficzne dla systemu Windows ustawienia stosowane do wszystkich kontenerów.

References

Wesprzyj HackTricks

Last updated