Kubernetes SecurityContext(s)
PodSecurityContext
Pod의 보안 컨텍스트를 지정할 때 여러 속성을 사용할 수 있습니다. 방어적 보안 관점에서 고려해야 할 사항은 다음과 같습니다:
runASNonRoot를 True로 설정합니다.
runAsUser를 구성합니다.
가능하면 seLinuxOptions 및 seccompProfile을 사용하여 권한을 제한합니다.
runAsGroup 및 supplementaryGroups를 통해 권한 그룹에 대한 액세스 권한을 부여하지 않습니다.
fsGroup integer | Pod의 모든 컨테이너에 적용되는 특수 보조 그룹입니다. 일부 볼륨 유형은 Kubelet이 해당 볼륨의 소유권을 Pod에 속한 것으로 변경할 수 있습니다: 1. 소유 GID는 FSGroup이 됩니다. 2. setgid 비트가 설정됩니다 (볼륨에 생성된 새 파일은 FSGroup이 소유합니다). 3. 허가 비트는 rw-rw----와 OR됩니다. 설정되지 않으면 Kubelet은 어떤 볼륨의 소유권과 허가를 수정하지 않습니다. |
fsGroupChangePolicy string | 이는 Pod 내부에 노출되기 전에 볼륨의 소유권과 허가를 변경하는 동작을 정의합니다. |
runAsGroup integer | 컨테이너 프로세스의 진입점을 실행할 GID입니다. 설정되지 않으면 런타임 기본값을 사용합니다. SecurityContext에서도 설정할 수 있습니다. |
runAsNonRoot boolean | 컨테이너가 반드시 비루트 사용자로 실행되어야 함을 나타냅니다. true인 경우 Kubelet은 이미지를 런타임에서 검증하여 UID 0 (루트)로 실행되지 않도록 하고, 그렇게 되면 컨테이너를 시작하지 못하도록 합니다. |
runAsUser integer | 컨테이너 프로세스의 진입점을 실행할 UID입니다. 지정되지 않은 경우 이미지 메타데이터에서 지정된 사용자가 기본값으로 사용됩니다. |
seLinuxOptions SELinuxOptions seLinux에 대한 자세한 정보 | 모든 컨테이너에 적용되는 SELinux 컨텍스트입니다. 지정되지 않으면 컨테이너 런타임은 각 컨테이너에 대해 임의의 SELinux 컨텍스트를 할당합니다. |
seccompProfile SeccompProfile Seccomp에 대한 자세한 정보 | 이는 이 Pod의 컨테이너에서 사용할 seccomp 옵션입니다. |
supplementalGroups integer array | 각 컨테이너에서 실행되는 첫 번째 프로세스에 적용되는 그룹 목록입니다. 이는 컨테이너의 기본 GID에 추가됩니다. |
Sysctls는 Pod에서 사용되는 네임스페이스 sysctl 목록을 보유합니다. 컨테이너 런타임에서 지원되지 않는 sysctl (by the container runtime)을 사용하는 Pod는 시작하지 못할 수 있습니다. | |
모든 컨테이너에 적용되는 Windows 특정 설정입니다. 지정되지 않으면 컨테이너의 SecurityContext 내의 옵션이 사용됩니다. | |
## SecurityContext |
이 컨텍스트는 컨테이너 정의 내에서 설정됩니다. 방어적 보안 관점에서 고려해야 할 사항은 다음과 같습니다:
allowPrivilegeEscalation을 False로 설정합니다.
민감한 capabilities를 추가하지 않고 (필요하지 않은 경우 제거합니다).
privileged를 False로 설정합니다.
가능하다면 readOnlyFilesystem을 True로 설정합니다.
runAsNonRoot를 True로 설정하고 runAsUser를 지정합니다.
가능하다면 seLinuxOptions 및 seccompProfile을 지정하여 permissions를 제한합니다.
runAsGroup을 통해 privilege group 액세스를 주지 않습니다.
SecurityContext 및 PodSecurityContext에서 설정된 속성은 SecurityContext에서 지정한 값이 우선합니다.
allowPrivilegeEscalation boolean | AllowPrivilegeEscalation은 프로세스가 부모 프로세스보다 더 많은 권한을 얻을 수 있는지를 제어합니다. 이 bool은 컨테이너 프로세스에 no_new_privs 플래그가 설정되는지 직접 제어합니다. AllowPrivilegeEscalation은 컨테이너가 Privileged로 실행되거나 CAP_SYS_ADMIN을 가지고 있을 때 항상 true입니다. |
capabilities Capabilities Capabilities에 대한 자세한 정보 | 컨테이너 실행 시 추가/제거할 수 있는 capabilities입니다. 기본적으로 기본 capabilities 집합으로 설정됩니다. |
privileged boolean | 특권 모드에서 컨테이너를 실행합니다. 특권 컨테이너의 프로세스는 사실상 호스트의 루트와 동등합니다. 기본값은 false입니다. |
procMount string | procMount는 컨테이너에 대해 사용할 proc 마운트 유형을 나타냅니다. 기본값은 DefaultProcMount로, 읽기 전용 경로와 마스크된 경로에 대한 컨테이너 런타임 기본값을 사용합니다. |
readOnlyRootFilesystem boolean | 이 컨테이너가 읽기 전용 루트 파일 시스템을 가지는지 여부입니다. 기본값은 false입니다. |
runAsGroup integer | 컨테이너 프로세스의 진입점을 실행할 GID입니다. 설정되지 않은 경우 런타임 기본값을 사용합니다. |
runAsNonRoot boolean | 컨테이너가 루트 사용자가 아닌 사용자로 실행되어야 함을 나타냅니다. true인 경우, Kubelet은 컨테이너가 UID 0 (루트)로 실행되지 않도록 이미지를 런타임에서 확인하고 컨테이너를 시작하지 못하도록 실패합니다. |
runAsUser integer | 컨테이너 프로세스의 진입점을 실행할 UID입니다. 지정되지 않은 경우 이미지 메타데이터에서 지정된 사용자를 기본값으로 사용합니다. |
seLinuxOptions SELinuxOptions seLinux에 대한 자세한 정보 | 컨테이너에 적용할 SELinux 컨텍스트입니다. 지정되지 않은 경우 컨테이너 런타임은 각 컨테이너에 대해 임의의 SELinux 컨텍스트를 할당합니다. |
이 컨테이너에서 사용할 seccomp 옵션입니다. | |
모든 컨테이너에 적용되는 Windows 특정 설정입니다. |
참고 자료
最終更新