Kubernetes SecurityContext(s)
Reading time: 8 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
PodSecurityContext
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 내부에서 노출되기 전에 볼륨의 소유권 및 권한을 변경하는 동작을 정의합니다. | | | 컨테이너 프로세스의 진입점 실행을 위한 GID. 설정되지 않으면 런타임 기본값을 사용합니다. | | | 컨테이너가 비루트 사용자로 실행되어야 함을 나타냅니다. true인 경우 Kubelet은 런타임에서 이미지를 검증하여 UID 0(루트)로 실행되지 않도록 하며, 그렇다면 컨테이너 시작에 실패합니다. | | | 컨테이너 프로세스의 진입점 실행을 위한 UID. 지정되지 않으면 이미지 메타데이터에 지정된 사용자로 기본값을 설정합니다. | |seLinuxOptions
SELinuxOptions
에 대한 더 많은 정보 seLinux
seccompProfile
SeccompProfile
에 대한 더 많은 정보 Seccomp
supplementalGroups
정수 배열
sysctls
Sysctl 배열
에 대한 더 많은 정보 sysctls
windowsOptions
WindowsSecurityContextOptions
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 세트를 사용합니다. |
특권 모드에서 컨테이너를 실행합니다. 특권 컨테이너의 프로세스는 본질적으로 호스트의 루트와 동등합니다. 기본값은 false입니다. | |
procMount | procMount는 컨테이너에 사용할 proc 마운트의 유형을 나타냅니다. 기본값은 DefaultProcMount로, 읽기 전용 경로 및 마스킹된 경로에 대한 컨테이너 런타임 기본값을 사용합니다. |
이 컨테이너가 읽기 전용 루트 파일 시스템을 가지고 있는지 여부. 기본값은 false입니다. | |
컨테이너 프로세스의 진입점을 실행하기 위한 GID. 설정되지 않으면 런타임 기본값을 사용합니다. | |
컨테이너가 비루트 사용자로 실행되어야 함을 나타냅니다. true인 경우 Kubelet은 런타임에서 이미지를 검증하여 UID 0(루트)로 실행되지 않도록 하며, 그렇다면 컨테이너 시작에 실패합니다. | |
컨테이너 프로세스의 진입점을 실행하기 위한 UID. 지정되지 않으면 이미지 메타데이터에 지정된 사용자로 기본값을 설정합니다. | |
seLinuxOptions | 컨테이너에 적용될 SELinux 컨텍스트. 지정되지 않으면 컨테이너 런타임이 각 컨테이너에 대해 무작위 SELinux 컨텍스트를 할당합니다. |
이 컨테이너에서 사용할 seccomp 옵션. | |
모든 컨테이너에 적용되는 Windows 특정 설정. |
References
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.