Kubernetes SecurityContext(s)
PodSecurityContext
Podczas określania kontekstu bezpieczeństwa Podu można użyć kilku atrybutów. Z punktu widzenia defensywnego bezpieczeństwa należy wziąć pod uwagę:
Ustawienie runASNonRoot na True
Konfigurację runAsUser
Jeśli to możliwe, rozważ ograniczenie uprawnień poprzez określenie seLinuxOptions i seccompProfile
NIE udzielanie dostępu do grupy uprzywilejowanej za pomocą 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ł 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 nie jest ustawione, Kubelet nie będzie modyfikował właściciela i uprawnień żadnego woluminu |
fsGroupChangePolicy łańcuch znaków | Określa zachowanie zmiany właściciela i uprawnień woluminu przed udostępnieniem go wewnątrz Podu. |
runAsGroup liczba całkowita | GID, pod którym ma być uruchomiony punkt wejścia procesu kontenera. Używa domyślnych ustawień czasu wykonywania, jeśli nie jest ustawione. Może być również ustawione w SecurityContext. |
runAsNonRoot wartość logiczna | Wskazuje, że kontener musi być uruchomiony jako użytkownik nie będący rootem. Jeśli wartość jest true, Kubelet sprawdzi obraz w czasie wykonywania, aby upewnić się, że nie jest uruchomiony jako UID 0 (root) i nie uruchomi kontenera, jeśli tak jest. |
runAsUser liczba całkowita | UID, pod którym ma być uruchomiony punkt wejścia procesu kontenera. Domyślnie jest to użytkownik określony w metadanych obrazu, jeśli nie jest określony. |
seLinuxOptions SELinuxOptions Więcej informacji na temat seLinux | Kontekst SELinux, który ma być zastosowany do wszystkich kontenerów. Jeśli nie jest określony, środowisko uruchomieniowe kontenera przydzieli losowy kontekst SELinux dla każdego kontenera. |
seccompProfile SeccompProfile Więcej informacji na temat Seccomp | Opcje seccomp do użycia przez kontenery w tym podzie. |
supplementalGroups tablica liczb całkowitych | Lista grup stosowanych do pierwszego uruchomionego procesu w każdym kontenerze, oprócz podstawowego GID kontenera. |
Sysctls zawiera listę sysctls przestrzeni nazw używanych dla poda. Pody z nieobsługiwanymi sysctls (przez środowisko uruchomieniowe kontenera) mogą nie uruchomić się. | |
Windowsowe ustawienia specyficzne dla wszystkich kontenerów. Jeśli nie jest określone, będą używane opcje w ramach SecurityContext kontenera. | |
## SecurityContext |
Ten kontekst jest ustawiany w definicjach kontenerów. Z perspektywy defensywnego bezpieczeństwa należy wziąć pod uwagę:
allowPrivilegeEscalation ustawione na False
Nie dodawaj wrażliwych capabilities (i usuń te, których nie potrzebujesz)
privileged ustawione na False
Jeśli to możliwe, ustaw readOnlyFilesystem na True
Ustaw runAsNonRoot na True i podaj runAsUser
Jeśli to możliwe, rozważ ograniczenie uprawnień poprzez określenie seLinuxOptions i seccompProfile
NIE udzielaj dostępu do grupy z uprawnieniami poprzez runAsGroup
Należy zauważyć, że atrybuty ustawione zarówno w SecurityContext, jak i PodSecurityContext, wartość określona w SecurityContext ma priorytet.
allowPrivilegeEscalation boolean | AllowPrivilegeEscalation kontroluje, czy proces może uzyskać więcej uprawnień niż jego proces nadrzędny. To boolowskie pole bezpośrednio kontroluje, czy flaga no_new_privs zostanie ustawiona dla procesu kontenera. AllowPrivilegeEscalation jest zawsze true, gdy kontener jest uruchamiany jako Privileged lub ma CAP_SYS_ADMIN. |
capabilities Capabilities Więcej informacji na temat Capabilities | Capabilities do dodania/usunięcia podczas uruchamiania kontenerów. Domyślnie ustawione na zestaw domyślnych capabilities. |
privileged boolean | Uruchom kontener w trybie privileged. Procesy w kontenerach privileged 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 używane są domyślne ścieżki tylko do odczytu i zmaskowane ścieżki dla kontenera. |
readOnlyRootFilesystem boolean | Czy ten kontener ma system plików root tylko do odczytu. Domyślnie ustawione na false. |
runAsGroup integer | GID, z którego ma być uruchomiony entrypoint procesu kontenera. Używa domyślnych ustawień czasu wykonania, jeśli nie jest ustawione. |
runAsNonRoot boolean | Wskazuje, że kontener musi działać jako użytkownik nie będący rootem. Jeśli true, Kubelet sprawdzi obraz w czasie wykonania, aby upewnić się, że nie działa jako UID 0 (root) i nie uruchomi kontenera, jeśli tak jest. |
runAsUser integer | UID, z którego ma być uruchomiony entrypoint procesu kontenera. Domyślnie używany jest użytkownik określony w metadanych obrazu, jeśli nie jest określony. |
seLinuxOptions SELinuxOptions Więcej informacji na temat seLinux | Kontekst SELinux, który ma być zastosowany do kontenera. Jeśli nie jest określony, środowisko wykonawcze kontenera przydzieli losowy kontekst SELinux dla każdego kontenera. |
Opcje seccomp do użycia przez ten kontener. | |
Specyficzne dla systemu Windows ustawienia, które są stosowane do wszystkich kontenerów. |
Odwołania
Last updated