Kubernetes SecurityContext(s)
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Pod의 보안 컨텍스트를 지정할 때 여러 속성을 사용할 수 있습니다. 방어적 보안 관점에서 고려해야 할 사항은 다음과 같습니다:
runASNonRoot를 True로 설정
runAsUser 구성
가능하다면 seLinuxOptions 및 seccompProfile을 지정하여 권한을 제한하는 것을 고려
runAsGroup 및 supplementaryGroups를 통해 privilege group 접근을 제공하지 않음
fsGroup 정수
모든 컨테이너에 적용되는 특별 보조 그룹. 일부 볼륨 유형은 Kubelet이 해당 볼륨의 소유권을 Pod에 의해 소유되도록 변경할 수 있게 합니다: 1. 소유 GID는 FSGroup이 됩니다. 2. setgid 비트가 설정됩니다 (볼륨에서 생성된 새 파일은 FSGroup에 의해 소유됩니다). 3. 권한 비트는 rw-rw----와 OR됩니다. 설정되지 않으면 Kubelet은 볼륨의 소유권 및 권한을 수정하지 않습니다.
이는 Pod 내부에서 노출되기 전에 볼륨의 소유권 및 권한을 변경하는 동작을 정의합니다.
runAsGroup 정수
컨테이너 프로세스의 진입점 실행을 위한 GID. 설정되지 않으면 런타임 기본값을 사용합니다.
runAsNonRoot 부울
컨테이너가 비루트 사용자로 실행되어야 함을 나타냅니다. true인 경우 Kubelet은 런타임에서 이미지를 검증하여 UID 0(루트)로 실행되지 않도록 하며, 그렇다면 컨테이너 시작에 실패합니다.
runAsUser 정수
컨테이너 프로세스의 진입점 실행을 위한 UID. 지정되지 않으면 이미지 메타데이터에 지정된 사용자로 기본값을 설정합니다.
seLinuxOptions SELinuxOptions 에 대한 추가 정보 seLinux
모든 컨테이너에 적용될 SELinux 컨텍스트. 지정되지 않으면 컨테이너 런타임은 각 컨테이너에 대해 무작위 SELinux 컨텍스트를 할당합니다.
seccompProfile SeccompProfile 에 대한 추가 정보 Seccomp
이 Pod의 컨테이너에서 사용할 seccomp 옵션.
supplementalGroups 정수 배열
각 컨테이너에서 실행되는 첫 번째 프로세스에 적용되는 그룹 목록, 컨테이너의 기본 GID 외에 추가로.
Sysctls는 Pod에 사용되는 네임스페이스가 있는 sysctls 목록을 보유합니다. 지원되지 않는 sysctls가 있는 Pods(컨테이너 런타임에 의해)는 시작에 실패할 수 있습니다.
모든 컨테이너에 적용되는 Windows 특정 설정. 지정되지 않으면 컨테이너의 SecurityContext 내의 옵션이 사용됩니다.
이 컨텍스트는 컨테이너 정의 내부에 설정됩니다. 방어적 보안 관점에서 고려해야 할 사항은 다음과 같습니다:
allowPrivilegeEscalation을 False로 설정
민감한 capabilities를 추가하지 않음(필요 없는 것들은 제거)
privileged를 False로 설정
가능하다면 readOnlyFilesystem을 True로 설정
runAsNonRoot를 True로 설정하고 runAsUser를 설정
가능하다면 seLinuxOptions 및 seccompProfile을 지정하여 권한을 제한하는 것을 고려
runAsGroup을 통해 privilege group 접근을 제공하지 않음.
SecurityContext와 PodSecurityContext 모두에 설정된 속성은 SecurityContext에 지정된 값이 우선권을 가집니다.
AllowPrivilegeEscalation은 프로세스가 부모 프로세스보다 더 많은 권한을 얻을 수 있는지 제어합니다. 이 bool은 컨테이너 프로세스에서 no_new_privs 플래그가 설정될지 여부를 직접 제어합니다. AllowPrivilegeEscalation은 컨테이너가 Privileged로 실행되거나 CAP_SYS_ADMIN을 가질 때 항상 true입니다.
capabilities Capabilities 에 대한 추가 정보 Capabilities
컨테이너를 실행할 때 추가/제거할 수 있는 권한. 기본적으로 기본 권한 세트를 사용합니다.
privileged 부울
특권 모드에서 컨테이너를 실행합니다. 특권 컨테이너의 프로세스는 본질적으로 호스트에서 루트와 동등합니다. 기본값은 false입니다.
procMount 문자열
procMount는 컨테이너에 사용할 proc 마운트의 유형을 나타냅니다. 기본값은 DefaultProcMount로, 읽기 전용 경로 및 마스킹된 경로에 대해 컨테이너 런타임 기본값을 사용합니다.
이 컨테이너가 읽기 전용 루트 파일 시스템을 가지고 있는지 여부. 기본값은 false입니다.
runAsGroup 정수
컨테이너 프로세스의 진입점 실행을 위한 GID. 설정되지 않으면 런타임 기본값을 사용합니다.
runAsNonRoot 부울
컨테이너가 비루트 사용자로 실행되어야 함을 나타냅니다. true인 경우 Kubelet은 런타임에서 이미지를 검증하여 UID 0(루트)로 실행되지 않도록 하며, 그렇다면 컨테이너 시작에 실패합니다.
runAsUser 정수
컨테이너 프로세스의 진입점 실행을 위한 UID. 지정되지 않으면 이미지 메타데이터에 지정된 사용자로 기본값을 설정합니다.
seLinuxOptions SELinuxOptions 에 대한 추가 정보 seLinux
컨테이너에 적용될 SELinux 컨텍스트. 지정되지 않으면 컨테이너 런타임은 각 컨테이너에 대해 무작위 SELinux 컨텍스트를 할당합니다.
이 컨테이너에서 사용할 seccomp 옵션.
모든 컨테이너에 적용되는 Windows 특정 설정.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)