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 지원하기

PodSecurityContext

문서에서:

Pod의 보안 컨텍스트를 지정할 때 여러 속성을 사용할 수 있습니다. 방어적 보안 관점에서 고려해야 할 사항은 다음과 같습니다:

  • runASNonRootTrue로 설정
  • runAsUser 구성
  • 가능하다면 seLinuxOptionsseccompProfile을 지정하여 권한제한하는 것을 고려
  • runAsGroupsupplementaryGroups를 통해 privilege group 접근을 제공하지 않음

| 매개변수 | 설명 | |

fsGroup
정수

|

모든 컨테이너에 적용되는 특별 보조 그룹. 일부 볼륨 유형은 Kubelet이 해당 볼륨의 소유권을 Pod에 의해 소유되도록 변경할 수 있게 합니다:
1. 소유 GID는 FSGroup이 됩니다.
2. setgid 비트가 설정됩니다 (볼륨에서 생성된 새 파일은 FSGroup에 의해 소유됩니다).
3. 권한 비트는 rw-rw----와 OR 연산됩니다. 설정되지 않으면 Kubelet은 볼륨의 소유권 및 권한을 수정하지 않습니다.

|

|

fsGroupChangePolicy
문자열

| Pod 내부에서 노출되기 전에 볼륨의 소유권 및 권한을 변경하는 동작을 정의합니다. | |

runAsGroup
정수

| 컨테이너 프로세스의 진입점 실행을 위한 GID. 설정되지 않으면 런타임 기본값을 사용합니다. | |

runAsNonRoot
부울

| 컨테이너가 비루트 사용자로 실행되어야 함을 나타냅니다. true인 경우 Kubelet은 런타임에서 이미지를 검증하여 UID 0(루트)로 실행되지 않도록 하며, 그렇다면 컨테이너 시작에 실패합니다. | |

runAsUser
정수

| 컨테이너 프로세스의 진입점 실행을 위한 UID. 지정되지 않으면 이미지 메타데이터에 지정된 사용자로 기본값을 설정합니다. | |

seLinuxOptions
SELinuxOptions
에 대한 더 많은 정보 seLinux

| 모든 컨테이너에 적용될 SELinux 컨텍스트. 지정되지 않으면 컨테이너 런타임이 각 컨테이너에 대해 무작위 SELinux 컨텍스트를 할당합니다. | |

seccompProfile
SeccompProfile
에 대한 더 많은 정보 Seccomp

| 이 Pod의 컨테이너에서 사용할 seccomp 옵션. | |

supplementalGroups
정수 배열

| 각 컨테이너에서 실행되는 첫 번째 프로세스에 적용되는 그룹 목록, 컨테이너의 기본 GID 외에 추가로. | |

sysctls
Sysctl 배열
에 대한 더 많은 정보 sysctls

| Sysctls는 Pod에 사용되는 네임스페이스가 있는 sysctls 목록을 보유합니다. 지원되지 않는 sysctls가 있는 Pod(컨테이너 런타임에 의해)는 시작에 실패할 수 있습니다. | |

windowsOptions
WindowsSecurityContextOptions

| 모든 컨테이너에 적용되는 Windows 특정 설정. 지정되지 않으면 컨테이너의 SecurityContext 내의 옵션이 사용됩니다. |

SecurityContext

문서에서:

이 컨텍스트는 컨테이너 정의 내에서 설정됩니다. 방어적 보안 관점에서 고려해야 할 사항은 다음과 같습니다:

  • allowPrivilegeEscalationFalse로 설정
  • 민감한 capabilities를 추가하지 않음(필요 없는 것들은 제거)
  • privilegedFalse로 설정
  • 가능하다면 readOnlyFilesystemTrue로 설정
  • runAsNonRootTrue로 설정하고 runAsUser를 설정
  • 가능하다면 seLinuxOptionsseccompProfile을 지정하여 권한제한하는 것을 고려
  • runAsGroup을 통해 privilege group 접근을 제공하지 않음.

SecurityContext와 PodSecurityContext 모두에 설정된 속성은 SecurityContext에 지정된 값이 우선합니다.

allowPrivilegeEscalation
부울

AllowPrivilegeEscalation은 프로세스가 부모 프로세스보다 더 많은 권한을 얻을 수 있는지 제어합니다. 이 bool은 컨테이너 프로세스에 no_new_privs 플래그가 설정될지 여부를 직접 제어합니다. AllowPrivilegeEscalation은 컨테이너가 Privileged로 실행되거나 CAP_SYS_ADMIN을 가질 때 항상 true입니다.

capabilities
Capabilities
에 대한 더 많은 정보 Capabilities

컨테이너 실행 시 추가/제거할 수 있는 capabilities. 기본적으로 기본 capabilities 세트를 사용합니다.

privileged
부울

특권 모드에서 컨테이너를 실행합니다. 특권 컨테이너의 프로세스는 본질적으로 호스트의 루트와 동등합니다. 기본값은 false입니다.

procMount
문자열

procMount는 컨테이너에 사용할 proc 마운트의 유형을 나타냅니다. 기본값은 DefaultProcMount로, 읽기 전용 경로 및 마스킹된 경로에 대한 컨테이너 런타임 기본값을 사용합니다.

readOnlyRootFilesystem
부울

컨테이너가 읽기 전용 루트 파일 시스템을 가지고 있는지 여부. 기본값은 false입니다.

runAsGroup
정수

컨테이너 프로세스의 진입점을 실행하기 위한 GID. 설정되지 않으면 런타임 기본값을 사용합니다.

runAsNonRoot
부울

컨테이너가 비루트 사용자로 실행되어야 함을 나타냅니다. true인 경우 Kubelet은 런타임에서 이미지를 검증하여 UID 0(루트)로 실행되지 않도록 하며, 그렇다면 컨테이너 시작에 실패합니다.

runAsUser
정수

컨테이너 프로세스의 진입점을 실행하기 위한 UID. 지정되지 않으면 이미지 메타데이터에 지정된 사용자로 기본값을 설정합니다.

seLinuxOptions
SELinuxOptions
에 대한 더 많은 정보 seLinux

컨테이너에 적용될 SELinux 컨텍스트. 지정되지 않으면 컨테이너 런타임이 각 컨테이너에 대해 무작위 SELinux 컨텍스트를 할당합니다.

seccompProfile
SeccompProfile

이 컨테이너에서 사용할 seccomp 옵션.

windowsOptions
WindowsSecurityContextOptions

모든 컨테이너에 적용되는 Windows 특정 설정.

References

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 지원하기