Kubernetes SecurityContext(s)

htARTE (HackTricks AWS Red Team Expert)에서 제로에서 영웅까지 AWS 해킹을 배워보세요!

HackTricks를 지원하는 다른 방법:

PodSecurityContext

문서에서 확인하세요:

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

  • runASNonRootTrue로 설정합니다.

  • runAsUser를 구성합니다.

  • 가능하면 seLinuxOptionsseccompProfile을 사용하여 권한을 제한합니다.

  • runAsGroupsupplementaryGroups를 통해 권한 그룹에 대한 액세스 권한을 부여하지 않습니다.

fsGroup integer

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

이는 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 Sysctl array sysctls에 대한 자세한 정보 sysctls

Sysctls는 Pod에서 사용되는 네임스페이스 sysctl 목록을 보유합니다. 컨테이너 런타임에서 지원되지 않는 sysctl (by the container runtime)을 사용하는 Pod는 시작하지 못할 수 있습니다.

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

## SecurityContext

문서에서 확인하세요:

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

  • allowPrivilegeEscalationFalse로 설정합니다.

  • 민감한 capabilities를 추가하지 않고 (필요하지 않은 경우 제거합니다).

  • privilegedFalse로 설정합니다.

  • 가능하다면 readOnlyFilesystemTrue로 설정합니다.

  • runAsNonRootTrue로 설정하고 runAsUser를 지정합니다.

  • 가능하다면 seLinuxOptionsseccompProfile을 지정하여 permissions제한합니다.

  • runAsGroup을 통해 privilege group 액세스를 주지 않습니다.

SecurityContext 및 PodSecurityContext에서 설정된 속성은 SecurityContext에서 지정한 값이 우선합니다.

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

capabilities Capabilities Capabilities에 대한 자세한 정보

컨테이너 실행 시 추가/제거할 수 있는 capabilities입니다. 기본적으로 기본 capabilities 집합으로 설정됩니다.

privileged boolean

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

procMount string

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

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

runAsGroup integer

컨테이너 프로세스의 진입점을 실행할 GID입니다. 설정되지 않은 경우 런타임 기본값을 사용합니다.

runAsNonRoot boolean

컨테이너가 루트 사용자가 아닌 사용자로 실행되어야 함을 나타냅니다. true인 경우, Kubelet은 컨테이너가 UID 0 (루트)로 실행되지 않도록 이미지를 런타임에서 확인하고 컨테이너를 시작하지 못하도록 실패합니다.

runAsUser integer

컨테이너 프로세스의 진입점을 실행할 UID입니다. 지정되지 않은 경우 이미지 메타데이터에서 지정된 사용자를 기본값으로 사용합니다.

seLinuxOptions SELinuxOptions seLinux에 대한 자세한 정보

컨테이너에 적용할 SELinux 컨텍스트입니다. 지정되지 않은 경우 컨테이너 런타임은 각 컨테이너에 대해 임의의 SELinux 컨텍스트를 할당합니다.

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

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

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로에서 영웅까지 AWS 해킹을 배워보세요**!

HackTricks를 지원하는 다른 방법:

最終更新