Certificated 도전/KCSA - Kubernetes

[KCSA]Pod Security Admission이란?

지추월자 2025. 3. 27. 16:48
반응형

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을 검사하는 관리자
반응형