안녕하세요! 쿠버네티스(Kubernetes)를 사용하다 보면 '보안'이라는 키워드를 빼놓을 수 없죠. 수많은 컨테이너들이 오케스트레이션 되는 환경에서 보안을 확보하는 것은 매우 중요합니다. 오늘은 쿠버네티스 클러스터의 보안을 한 단계 끌어올려 줄 Pod Security Standards(PSS) 에 대해 쉽고 자세하게 알아보겠습니다. 🚀

🤔 Pod Security Standards, 왜 필요할까요?
쿠버네티스에서 파드(Pod)는 애플리케이션의 가장 작은 배포 단위입니다. 그런데 만약 이 파드에 과도한 권한이 부여되거나 보안 설정이 미흡하다면 어떻게 될까요? 😱 해커가 취약점을 이용해 파드의 제어권을 탈취하고, 이를 통해 전체 클러스터를 장악하는 끔찍한 상황이 발생할 수도 있습니다.
Pod Security Standards는 이러한 위협을 방지하기 위해 등장했습니다. 파드가 생성될 때 특정 보안 요구사항을 충족하도록 강제하는 정책 표준이라고 할 수 있죠. 과거에는 PodSecurityPolicy(PSP)라는 기능이 사용되었지만, Kubernetes v1.25부터는 PSS가 이를 대체하며 더 유연하고 표준화된 방식을 제공하게 되었습니다.
Pod Security Standards (PSS)는 쿠버네티스 v1.23부터 기본으로 내장되어 활성화되어 있는 기능입니다. 과거에 사용되던 PodSecurityPolicy(PSP)와 달리, 어드미션 컨트롤러를 별도로 활성화하거나 추가적인 플러그인을 설치할 필요가 없습니다.
핵심은 파드에 대한 보안 컨텍스트(Security Context)를 정의하고, 이를 통해 파드가 할 수 있는 일과 할 수 없는 일을 명확히 구분하는 것입니다.
🌟 세 가지 보안 레벨: Privileged, Baseline, Restricted
Pod Security Standards는 세 가지 다른 수준의 보안 정책을 제공합니다. 각 정책은 허용하는 권한의 범위와 보안 수준이 다릅니다. 하나씩 살펴볼까요?
1. Privileged (특권) 👑
- 설명: 이름 그대로 가장 자유로운 정책입니다. 알려진 모든 권한 상승(privilege escalation)을 허용하며, 사실상 아무런 제한이 없는 상태라고 볼 수 있습니다.
- 특징:
- 제한이 거의 없어 매우 유연합니다.
- 보안적으로는 가장 취약합니다. 😨
- 사용 사례: 일반적으로 시스템 전체에 접근해야 하는 인프라 관리용 파드나 신뢰할 수 있는 특수한 워크로드에 제한적으로 사용해야 합니다. 예를 들어, 모니터링 에이전트나 스토리지 플러그인 등이 해당될 수 있습니다. 일반적인 애플리케이션에는 절대 권장되지 않습니다!
2. Baseline (기본) 👍
- 설명: 중간 수준의 보안을 제공하는 합리적인 정책입니다. 알려진 권한 상승 방법들을 대부분 차단하면서도, 일반적인 애플리케이션들이 큰 수정 없이 동작할 수 있도록 균형을 맞춘 레벨입니다.
- 특징:
- hostNetwork, hostPID, hostIPC 등 호스트 네임스페이스 접근을 차단합니다.
- privileged 컨테이너 실행을 금지합니다.
- 특정 리눅스 커널 기능(Capabilities)을 제한합니다.
- 사용 사례: 대부분의 일반적인 애플리케이션 배포에 권장되는 기본값입니다. 특별한 권한이 필요 없는 웹 서버, API 서버 등이 여기에 해당됩니다.
3. Restricted (제한) 🔒
- 설명: 가장 엄격하고 안전한 정책입니다. 현재 파드 보안 모범 사례를 따르며, 파드가 사용할 수 있는 권한을 최소한으로 제한합니다.
- 특징:
- Baseline의 모든 제한 사항을 포함합니다.
- root 권한으로 실행되는 것을 방지합니다 (runAsNonRoot: true 강제).
- 컨테이너가 사용할 수 있는 리눅스 커널 기능(Capabilities)을 NET_BIND_SERVICE를 제외하고 모두 제거하도록 강제합니다. (seccompProfile 설정 필요)
- 볼륨 타입도 제한됩니다. (configMap, secret, pvc 등 안전한 볼륨만 허용)
- 사용 사례: 보안이 매우 중요한 워크로드나 외부 공격에 노출될 가능성이 있는 애플리케이션에 적합합니다. 처음에는 적용하기 다소 까다로울 수 있지만, 가장 강력한 보안을 제공합니다.
⚙️ 어떻게 적용할 수 있나요?
Pod Security Standards는 네임스페이스(Namespace) 단위로 적용됩니다. 네임스페이스의 레이블(Label)을 사용하여 원하는 보안 레벨을 설정할 수 있습니다.
예를 들어, my-secure-ns라는 네임스페이스에 Restricted 정책을 적용하고 싶다면 다음과 같은 레이블을 추가하면 됩니다.
apiVersion: v1
kind: Namespace
metadata:
name: my-secure-ns
labels:
pod-security.kubernetes.io/enforce: restricted
enforce 모드 외에도 audit(위반 시 경고만 기록)나 warn(사용자에게 경고 표시) 모드를 사용하여 점진적으로 정책을 적용할 수도 있습니다.
✨ 마무리하며
Pod Security Standards는 복잡한 쿠버네티스 환경에서 보안을 유지하기 위한 필수적인 도구입니다. 각 정책의 특징을 잘 이해하고 워크로드의 성격에 맞는 적절한 보안 레벨을 적용하는 것이 중요합니다.
- Privileged: 꼭 필요한 경우에만 신중하게 사용하세요.
- Baseline: 대부분의 애플리케이션에 기본으로 적용하세요.
- Restricted: 보안이 최우선이라면 강력하게 추천합니다!
지금 바로 여러분의 클러스터에 Pod Security Standards를 적용하여 더욱 안전한 쿠버네티스 환경을 만들어보세요! 💪
'클라우드 > 쿠버네티스 보안' 카테고리의 다른 글
| 🤔 allowPrivilegeEscalation: false - 쓰기만 하면 정말 안전할까? (privileged: true와 완벽 비교) (0) | 2025.10.07 |
|---|---|
| 🔒 철통보안 쿠버네티스 RBAC: 당신이 놓치고 있던 Best Practices 총정리 (0) | 2025.10.07 |
| 헷갈리는 보안 개념, Security Policy vs. Security Context 완벽 정리! 🧐 (0) | 2025.10.07 |
| 파드 보안 표준(Pod Security Standards), 왜 필요할까요? 🤔 (0) | 2025.10.06 |
| 쿠버네티스 보안 강화: AdmissionConfiguration과 ImagePolicyWebhook 파헤치기 🛡️ (0) | 2025.10.06 |