반응형
Kubernetes에서 Pod 보안 표준(Pod Security Standards) 을 네임스페이스 단위로 자동 적용할 수 있게 해주는 기능이야.
🔐 Pod Security Admission이란?
- Kubernetes에서 Pod의 보안 설정을 자동으로 검사하고 강제하는 Admission Controller야.
- Kubernetes v1.25부터 기본 내장(Stable) 기능으로 제공돼.
- Pod이 생성될 때, 네임스페이스 단위로 보안 정책(Pod Security Standards) 이 적용돼.
🧱 적용 가능한 3단계 보안 수준
보안 수준 설명
Privileged | 거의 제약 없음. 테스트/인프라 용도. 위험함. |
Baseline | 일반 앱에 적합한 기본 보안. 권한 상승은 차단. |
Restricted | 매우 엄격한 보안. 민감한 서비스, 제약 환경에 적합. |
이 3단계는 Pod의 SecurityContext 설정을 기준으로 적용 여부를 판단해.
⚙️ 네임스페이스에 적용하는 방법 (라벨 사용)
Namespace에 다음 라벨을 붙이면 돼:
# <MODE>: enforce, audit, warn
# <LEVEL>: privileged, baseline, restricted
pod-security.kubernetes.io/<MODE>: <LEVEL>
📌 예: restricted 정책을 실제 강제하고, audit과 warn은 baseline으로 설정
metadata:
labels:
pod-security.kubernetes.io/enforce: "restricted"
pod-security.kubernetes.io/audit: "baseline"
pod-security.kubernetes.io/warn: "baseline"
💡 각 MODE 설명
Mode 설명
enforce | 정책 위반 시 Pod 생성 거부 |
audit | 위반하더라도 감사 로그에만 기록 |
warn | 사용자에게 경고 메시지만 표시, 실행은 허용 |
또한, 다음처럼 버전 고정도 가능해:
pod-security.kubernetes.io/enforce-version: "v1.32"
📦 Workload 객체의 경우 (Deployment, Job 등)
- 대부분의 Pod은 직접 만드는 게 아니라, Deployment, Job 등의 컨트롤러가 Pod 템플릿으로 생성함.
- 이 경우:
- audit, warn: 워크로드 수준에서도 적용됨
- enforce: 최종 생성된 Pod에만 적용됨
즉, 템플릿이 위반하더라도 Pod이 만들어질 때 검사됨!
🔓 예외 설정 (Exemptions)
특정 조건을 만족하는 요청은 보안 정책 검사를 건너뛰게 할 수 있음
✅ 예외 조건들
- Usernames: 특정 사용자
- RuntimeClassNames: 특정 런타임 클래스
- Namespaces: 특정 네임스페이스
⚠️ 주의:
대부분의 Pod은 컨트롤러가 생성하므로, 유저가 예외 대상이어도 Deployment 같은 워크로드 리소스에서 우회는 불가능함!
replicaset-controller 같은 시스템 서비스 계정은 절대 예외로 두지 말 것!
🔄 검사에서 제외되는 필드 업데이트
다음 필드만 수정하는 요청은 정책 위반이어도 허용됨:
- 메타데이터 변경 (단, AppArmor/seccomp 주석 제외)
- .spec.activeDeadlineSeconds 수정
- .spec.tolerations 수정
📊 Prometheus 메트릭 (모니터링용)
메트릭 이름 설명
pod_security_errors_total | 보안 평가 실패 횟수 |
pod_security_evaluations_total | 보안 평가 총 수행 횟수 |
pod_security_exemptions_total | 예외로 처리된 요청 수 |
📌 한 줄 요약
개념 역할 쉽게 말하면
PSS (Pod Security Standards) | 무엇을 허용하고, 무엇을 금지할지에 대한 보안 규칙 집합 | “보안 정책 목록” |
PSA (Pod Security Admission) | 그 보안 규칙(PSS)을 실제로 적용하는 기능 (Admission Controller) | “그 정책을 검사하고 적용하는 시스템” |
🔐 예시로 이해하기
✔️ “Restricted 정책은 루트로 실행되면 안 돼”
이건 PSS(Pod Security Standards) 에서 정의한 규칙이야.
🔍 그런데 사용자가 Pod을 생성할 때,
Kubernetes가 이걸 검사하고 거부하려면?
→ 그건 PSA(Pod Security Admission) 가 하는 일이야!
🔍 조금 더 구조적으로
구분 Pod Security Standards (PSS) Pod Security Admission (PSA)
종류 | 개념/정책 | 기능/메커니즘 |
내용 | privileged, baseline, restricted 등 보안 수준 정의 | 해당 정책을 네임스페이스 단위로 검사하고 적용하는 Admission Controller |
적용 대상 | Pod의 SecurityContext 등 설정값들 | Pod 생성 시점의 요청 (Admission 단계) |
설정 위치 | 문서나 기준으로 참고 | 네임스페이스에 라벨로 설정 |
예시 역할 | “root로 실행 금지” “hostPath 금지” | “위 규칙을 지키는지 검사 후 거부, 경고, 감사” |
🤝 관계 정리
- ✅ PSS: 정책 정의서
- ✅ PSA: 그 정의서를 보고 Pod을 검사하는 관리자
반응형
'Certificated 도전 > KCSA - Kubernetes' 카테고리의 다른 글
[KCSA] Kubernetes RBAC 잘 사용하는 법 (0) | 2025.03.30 |
---|---|
[KCSA] Kubernetes API 접근 제어(Controlling Access to the Kubernetes API) (0) | 2025.03.27 |
[KCSA]Pod Security Standards란? (0) | 2025.03.27 |
[KCSA] Cloud Native 보안과 Kubernetes (0) | 2025.03.27 |
[KCSA] 보안 (Security) (0) | 2025.03.27 |