1. Pod Security Admission (PSA) 개요
- kubernetes KEP-2579를 통해 PSP를 대체할 새로운 보안 방식이 도입됨.
- 기본적으로 활성화된 Admission Controller이며, 추가 설정 없이 사용 가능.
- 네임스페이스 수준에서 보안 정책을 적용.
- 복잡한 보안 요구 사항은 Kyverno, OPA Gatekeeper 같은 외부 솔루션과 함께 사용 가능.
pod-security-admission
2. Pod Security Standards (PSS)
PSA는 3가지 사전 정의된 보안 프로필을 제공함.
1) Privileged (최소 제한)
- 제한 없음, 높은 권한을 허용
- 보안 제한이 없으며, 권한 상승이 가능한 환경.
- 관리자가 완전한 제어가 필요할 때 사용.
2) Baseline (기본 보안)
- 일반적인 컨테이너 기반 애플리케이션을 위해 설계됨.
- 위험한 권한 상승을 방지하지만, 일반적인 사용 사례는 허용.
- 보안과 편의성의 균형을 맞춘 설정.
3) Restricted (최대 제한)
- 최신 보안 모범 사례를 적용하며, 강력한 보안을 제공.
- 일부 애플리케이션과 호환성 문제가 발생할 수 있음.
- 보안을 최우선으로 하는 환경에서 사용.
pod-security-standards
3. PSA의 동작 모드 (Mode 설정)
PSA는 정책 위반 시 취할 행동을 모드로 설정할 수 있음.
모드 | 동작 방식 |
---|
Enforce | 위반 시 Pod 생성이 거부됨 |
Audit | 위반해도 Pod 생성이 허용되지만, 감사 로그에 기록됨 |
Warn | 위반해도 Pod 생성이 허용되지만, 사용자에게 경고 메시지 표시 |
여러 모드 조합하여도 적용 가능
4. PSA 적용 예시
각 네임스페이스에 다른 보안 정책을 적용할 수 있음.
✅ 급여 시스템 (Payroll)
- 보안이 중요한 시스템이므로 제한된 정책(Restricted) + Enforce 적용
- 위반하는 Pod는 생성 불가
kubectl label namespace payroll \
pod-security.kubernetes.io/enforce=restricted
✅ HR 시스템
- 보안을 유지하되, 너무 엄격하지 않은 기본(Baseline) + Enforce 적용
- 일부 보안 규칙을 완화하여 운영 가능
kubectl label namespace hr \
pod-security.kubernetes.io/enforce=baseline
✅ 개발 환경 (Dev)
- 개발자 편의를 위해 보안 정책을 완화하여 Restricted + Warn 적용
- 보안 정책을 위반하더라도 Pod 생성은 가능하지만 경고 표시
kubectl label namespace dev \
pod-security.kubernetes.io/warn=restricted
5. Kubernetes 보안 정책 적용 시 고려 사항
- 네임스페이스별 보안 수준을 설정하여 운영 환경과 개발 환경의 유연성 유지
- Pod 보안 정책을 사전 정의된 프로필(Privileged, Baseline, Restricted) 중 선택
- Enforce / Audit / Warn 모드를 적절히 조합하여 정책 위반 시의 대응 방식 결정
- Kyverno, OPA Gatekeeper 등과 함께 사용하여 세부적인 정책 강화 가능