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 z uprawnieniami za pomocą runAsGroup i supplementaryGroups
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ą 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
To definiuje zachowanie zmiany właściciela i uprawnień wolumenu przed jego udostępnieniem wewnątrz Podu.
GID do uruchomienia punktu wejścia procesu kontenera. Używa domyślnej wartości czasu wykonywania, jeśli nie jest ustawione.
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.
UID do uruchomienia punktu wejścia procesu kontenera. Domyślnie użytkownik określony w metadanych obrazu, jeśli nie jest określony.
Kontekst SELinux, który ma być zastosowany do wszystkich kontenerów. Jeśli nie jest określony, czas wykonywania kontenera przydzieli losowy kontekst SELinux dla każdego kontenera.
Opcje seccomp, które mają być używane przez kontenery w tym podzie.
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 wykonywania 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 uprawnień (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 z uprawnieniami za pomocą runAsGroup.
Zauważ, że atrybuty ustawione w zarówno SecurityContext, jak i PodSecurityContext, wartość określona w SecurityContext ma pierwszeństwo.
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
Uprawnienia do dodania/usunięcia podczas uruchamiania kontenerów. Domyślnie używa domyślnego zestawu uprawnień.
Uruchom kontener w trybie uprzywilejowanym. Procesy w uprzywilejowanych kontenerach są zasadniczo równoważne z rootem na hoście. Domyślnie fałsz.
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.
Czy ten kontener ma system plików tylko do odczytu. Domyślnie fałsz.
GID do uruchomienia punktu wejścia procesu kontenera. Używa domyślnej wartości czasu wykonywania, jeśli nie jest ustawione.
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.
UID do uruchomienia punktu wejścia procesu kontenera. Domyślnie użytkownik określony w metadanych obrazu, jeśli nie jest określony.
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.
Ustawienia specyficzne dla systemu Windows stosowane do wszystkich kontenerów.
integer
string
integer
boolean
integer
Więcej informacji o seLinux
Więcej informacji o Seccomp
integer array
array Więcej informacji o
boolean
Więcej informacji o Capabilities
boolean
string
boolean
integer
boolean
integer
Więcej informacji o seLinux
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)