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
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. |
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 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. |
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)