쿠버네티스에서 파드(Pod)는 애플리케이션이 실행되는 가장 작은 단위입니다. 그런데 만약 파드가 호스트 노드(Host Node)의 중요한 정보에 접근하거나 다른 파드에 영향을 줄 수 있다면 큰 보안 위협이 될 수 있겠죠? 💣
이러한 위협을 방지하기 위해 쿠버네티스는 파드 보안 표준을 정의하여, 파드가 생성될 때 특정 보안 요구사항을 충족하도록 강제합니다. 이를 통해 클러스터 전체의 보안 수준을 높일 수 있습니다.

파드 보안 표준의 세 가지 레벨 🛡️
파드 보안 표준은 세 가지 레벨로 나뉩니다. 각 레벨은 허용하는 권한의 범위가 다르며, privileged가 가장 허용적이고 restricted가 가장 엄격합니다.
- Privileged (특권): 가장 허용적인 정책입니다. 알려진 모든 권한 상승을 허용하며, 거의 모든 파드를 실행할 수 있습니다. 시스템 수준의 워크로드를 관리하는 등 특별한 경우에만 사용해야 합니다.
- Baseline (기준): 중간 수준의 정책입니다. 알려진 권한 상승을 방지하며, 대부분의 일반적인 애플리케이션에 권장됩니다. 깐깐하지만 너무 제한적이지는 않은, 합리적인 기본값이라고 생각하시면 됩니다. ✅
- Restricted (제한): 가장 엄격한 정책입니다. 파드 강화(hardening) 모범 사례를 따르며, 보안이 매우 중요한 워크로드에 적합합니다. 이 레벨을 사용하면 일부 애플리케이션이 제대로 실행되지 않을 수 있으므로, 적용 전에 충분한 테스트가 필요합니다. 🔒
클러스터와 네임스페이스에 적용하기 🚀
파드 보안 표준은 클러스터 전체에 적용하거나 특정 네임스페이스에만 선택적으로 적용할 수 있습니다.
네임스페이스 레벨에서 적용하기
특정 네임스페이스에만 파드 보안 표준을 적용하고 싶다면, 네임스페이스의 **레이블(label)**을 사용하면 됩니다. 정말 간단해요!
예를 들어, my-namespace라는 네임스페이스에 baseline 정책을 적용하고 싶다면 다음 명령어를 실행합니다.
kubectl label --overwrite ns my-namespace pod-security.kubernetes.io/enforce=baseline
이렇게 레이블을 설정하면, my-namespace에 생성되는 모든 파드는 baseline 정책을 통과해야만 합니다. 만약 정책을 위반하는 파드를 생성하려고 하면, API 서버가 생성을 거부합니다. 🙅♀️
네임스페이스 레이블은 다음과 같이 세 가지 모드(mode)를 가질 수 있습니다.
- enforce: 정책을 위반하는 파드의 생성을 차단합니다.
- audit: 정책을 위반하는 파드가 생성될 때 경고 로그를 남깁니다. (생성은 허용)
- warn: 정책을 위반하는 파드가 생성될 때 사용자에게 경고 메시지를 표시합니다. (생성은 허용)
예를 들어, enforce는 baseline으로, warn은 restricted로 설정하여 점진적으로 보안 수준을 높여갈 수 있습니다.
kubectl label --overwrite ns my-namespace pod-security.kubernetes.io/enforce=baseline pod-security.kubernetes.io/warn=restricted
클러스터 레벨에서 적용하기
클러스터 전체에 기본적으로 파드 보안 표준을 적용하고 싶다면, Admission Controller 설정을 변경해야 합니다. 이는 클러스터를 처음 설정하거나 관리할 때 주로 사용되는 방법입니다.
PodSecurity 어드미션 컨트롤러의 설정 파일에 다음과 같이 클러스터 전체에 적용할 기본 정책을 정의할 수 있습니다.
# admission-configuration.yaml
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: PodSecurity
configuration:
apiVersion: pod-security.k8s.io/v1beta1
kind: PodSecurityConfiguration
defaults:
enforce: "baseline"
enforce-version: "latest"
audit: "restricted"
audit-version: "latest"
warn: "restricted"
warn-version: "latest"
exemptions:
# 시스템 네임스페이스는 정책에서 제외
namespaces: ["kube-system"]
이 설정은 클러스터의 모든 네임스페이스에 기본적으로 baseline 정책을 강제하고, restricted 정책 위반 시에는 경고를 표시하도록 합니다. kube-system과 같이 쿠버네티스 시스템 컴포넌트가 실행되는 네임스페이스는 정책 적용에서 제외(exemption)하는 것이 일반적입니다.
마무리하며 ✨
지금까지 쿠버네티스 클러스터와 네임스페이스 레벨에서 파드 보안 표준을 적용하는 방법에 대해 알아보았습니다. 애플리케이션의 특성과 보안 요구사항에 맞는 적절한 정책 레벨과 모드를 선택하여 클러스터를 더욱 안전하게 보호하세요! 🛡️
쿠버네티스 보안, 어렵지 않아요! 😉
'클라우드 > 쿠버네티스 보안' 카테고리의 다른 글
| 🔒 철통보안 쿠버네티스 RBAC: 당신이 놓치고 있던 Best Practices 총정리 (0) | 2025.10.07 |
|---|---|
| 👩💻 Kubernetes 보안의 핵심: Pod Security Standards 완벽 정복하기 (0) | 2025.10.07 |
| 헷갈리는 보안 개념, Security Policy vs. Security Context 완벽 정리! 🧐 (0) | 2025.10.07 |
| 쿠버네티스 보안 강화: AdmissionConfiguration과 ImagePolicyWebhook 파헤치기 🛡️ (0) | 2025.10.06 |
| SBOM, 이제 어렵지 않아요! 🤯 bom 커맨드로 손쉽게 SBOM 만들기 (0) | 2025.10.06 |