Kubernetes SecurityContext(s)
Kontekst Bezpieczeństwa Pod
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 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 |
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 boolean | 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. |
readOnlyRootFilesystem boolean | 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
Last updated