파드 보안 표준
파드 보안 표준 (Pod Security Standards)
이 문서에서는 파드 보안 표준(Pod Security Standards)에 대한 개요를 제공해요. 이 표준은 다양한 범위의 수준(레벨)으로 파드의 보안 요구 사항을 세 가지 수준으로 정의하는 정책으로, 보안 요구 사항을 실행하는 쉬운 방법을 제공합니다.
출처: 문서
본문
수준 (Policy levels)
이 정책은 다음 세 가지 수준으로 정의됩니다:
| 수준 | 설명 |
|---|---|
| privileged | 의도적으로 제한 없는 정책. 최대한 폭넓은 권한을 제공합니다. 이 수준은 신뢰할 수 있고 권한을 가진 사용자에게 알려진 권한 확대 취약점에 대해 의도적으로 허용합니다. |
| baseline | 알려진 권한 확대를 방지하도록 설계된 최소 제한 정책. 파드가 기본 허용(권장) 설정으로 실행되는 것을 쉽게 채택하고 최소한의 제약을 제공합니다. 이 수준은 알려진 취약점으로부터의 보호에 필요하지 않은 과도한 정책을 요구하지 않습니다. |
| restricted | 파드 하드닝 모범 사례를 따르는 심층 방어 정책. 이는 baseline보다 제한적이며 심각한 권한 확대를 크게 제한하는 난이한 보안 요구 사항을 포함합니다. |
이 정책은 컨테이너, 파드, 파드의 상위 수준(Deployment, StatefulSet 등)의 순서로 점진적으로 제한합니다. 정책 수준은 필수 측면에 대한 게이트웨이(gatekeeper) 역할을 합니다.
쿠버네티스의 파드 보안 승인을 설명하는 문서에 대한 링크 이외에도, 이 문서의 "상태 시행(Enforcement)" 섹션은 파드 보안 표준을 구현하고 검증하는 방법을 설명합니다.
보안 컨텍스트 (Security Context)
정책은 보안 컨텍스트(securityContext)의 구성으로 정의됩니다. securityContext는 파드와 컨테이너 수준에서 쿠버네티스 API에 정의된 필드로, 파드 컨테이너의 권한과 접근 제어 설정을 나타냅니다. 파드 보안 표준은 파드 사양의 컨테이너와 (적용 가능하면) 상위 수준에서 특정 securityContext 필드를 요구합니다.
파드 보안 표준 검토 (Review of Pod Security Standards)
privileged
privileged 수준은 어떤 보안 제약도 정의하지 않습니다. 이 수준은 필수 접근 제어 요구 사항을 포함하지 않습니다. 일반적으로 이 정책은 시스템, 인프라, 클러스터 수준 관리를 위해 설계되었습니다.
허용 — 표준의 스코프에서 정의된 요구 사항이 없습니다.
baseline
baseline 수준은 미지 근본적 취약점에 대비한 권한 확대 방지를 최소화하고자 합니다. 이 수준은 파드에 적용되는 필수(그리고 현재의) 기능 요구 사항에 초점을 맞춥니다. 이 수준을 초과하는 것은 baseline 이상의 파드 하드닝이 필요한 워크로드 경우입니다(예: 클러스터 관리자).
권한 제어
| 정책 | 값 |
|---|---|
| HostProcess | Windows 파드가 HostProcess 컨테이너를 자신보다 높은 권한으로 실행하지 못하도록 합니다. privileged 컨테이너가 있는 파드는 baseline의 요구 사항을 충족하지 않습니다. |
| Host Namespaces | hostPID, hostIPC, hostNetwork 컨테이너 및 파드를 허용하지 않습니다(기본 영역). |
| Privileged Containers | privileged 컨테이너를 허용하지 않습니다. |
| Capabilities | ALL capabilities를 추가하지 않습니다. |
| Seccomp | 파드가 seccomp 프로필로 시작하는 것을 요구하지 않습니다. |
| SELinux | SELinux 유형, 사용자, 역할을 제한하지 않습니다. |
| AppArmor | AppArmor 프로필이 있으면 제한하지 않습니다. |
| Sysctls | 시스템 sysctls를 허용하지 않습니다. |
restricted
restricted 수준은 baseline 정책 요구 사항을 상속하며, 파드 보안을 더 강화하는 추가 요구 사항을 추가합니다. 이 수준은 워크로드를 실행하기 위한 제한된 보안 컨텍스트로 인해 상당한 제약을 초래합니다. 실행 중인 파드에서 사용되는 컨테이너 이미지와 애플리케이션은 이 정책의 요구 사항을 충족해야 합니다.
| 정책 | 값 |
|---|---|
| baseline의 모든 요구 사항 | 제한 수준은 baseline 수준의 모든 요구 사항을 상속합니다. |
| AppArmor | 파드가 기본 AppArmor 정책 runtime/default를 사용하도록 요구합니다. |
| Seccomp | 파드가 기본 seccomp 프로필 runtime/default를 사용하도록 요구합니다. |
| SELinux | SELinux 유형을 container_t 또는 허용 정책으로 제한합니다. |
| Capabilities | NET_RAW capability를 제거하고, CAP_SYS_ADMIN, CAP_NET_ADMIN, CAP_SYS_PTRACE, CAP_SYS_MODULE를 허용하지 않습니다. |
| Security Context | allowPrivilegeEscalation: false를 요구합니다. |
파드 보안 표준에 대한 구현 (Implementations)
파드 보안 표준을 구현하는 방법:
- 파드 보안 승인: 쿠버네티스 API에 내장된 표준의 기본 구현입니다.
- OPA Gatekeeper: 쿠버네티스의 승인 웹훅에서 표준을 구현하는 타사 구현 사례입니다.
파드 보안 표준 시행 (Enforcement)
pod-security-admission과 같은 정책 시행은 클러스터 수준 또는 네임스페이스 수준에서 구성할 수 있습니다. 파드 보안 표준은 쿠버네티스 클러스터에서 파드의 보안을 시행하는 방법을 결정하려 할 때 가이드로 사용할 수 있습니다.