Kubernetes SecurityContext(s)
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
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
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.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
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 montażu 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 nie-root. 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 jest określony, czas wykonania kontenera przydzieli losowy kontekst SELinux dla każdego kontenera.
Opcje seccomp do użycia przez ten kontener.
Ustawienia specyficzne dla systemu Windows stosowane do wszystkich kontenerów.
fsGroup integer
Specjalna grupa uzupełniająca, 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ą należały do FSGroup) 3. Bity uprawnień są OR'd z rw-rw---- Jeśli nie jest 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 nie-root. 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 jest określony, czas wykonania 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 zawierają listę namespaced sysctls używanych dla podu. Pody z nieobsługiwanymi sysctls (przez czas wykonania kontenera) mogą nie uruchomić się.
Ustawienia specyficzne dla systemu Windows stosowane do wszystkich kontenerów. Jeśli nie jest określone, użyte zostaną opcje w SecurityContext kontenera.