Kubernetes Pod Security 완벽 가이드! Container 실행 제한과 보안 정책 구조 이해하기

Kubernetes Cluster를 운영할 때 Network와 접근 권한뿐만 아니라 Container 자체의 실행 환경도 보호해야 합니다.

예를 들어 공격자가 취약한 Application Container에 접근하면 다음과 같은 문제가 발생할 수 있습니다.

  • Root 권한으로 Container 실행
  • Host System 접근 시도
  • 불필요한 Linux Capability 사용
  • 민감한 파일 접근
  • Privileged Container 실행

이러한 위험을 줄이기 위해 Kubernetes는 Pod Security 기능을 제공합니다.

Pod Security는 Container가 어떤 권한으로 실행되고 어떤 작업을 수행할 수 있는지 제한하는 보안 관리 방식입니다.

구성 요소역할
Pod Security AdmissionPod 보안 정책 적용
SecurityContextContainer 권한 설정
Linux Capability실행 권한 제한
SeccompSystem Call 제한

Pod Security 구조를 이해하면 Kubernetes 환경에서 Container 실행 권한을 최소화하고 안전한 Production 환경을 구축할 수 있습니다.

Kubernetes Pod Security가 필요한 이유

기본 Kubernetes 환경에서는 Container가 다양한 권한으로 실행될 수 있습니다.

잘못된 설정 예:

Container 실행

Root User 사용

Host 접근 가능

보안 위험 발생

Production 환경에서는 Container도 하나의 공격 대상이 될 수 있기 때문에 실행 권한 제한이 필요합니다.

Kubernetes SecurityContext란?

SecurityContext는 Pod 또는 Container의 보안 설정을 정의하는 기능입니다.

설정 가능한 항목:

설정역할
runAsUser실행 User 지정
runAsNonRootRoot 실행 제한
readOnlyRootFilesystem파일 시스템 보호
allowPrivilegeEscalation권한 상승 제한
capabilitiesLinux 권한 관리

Container 실행 환경을 제어합니다.

Kubernetes Root Container 실행 문제

Linux Container는 기본적으로 Root User로 실행되는 경우가 많습니다.

문제:

Application Container

Root 권한

취약점 발생

Host 공격 가능성 증가

보안을 위해 일반 User 실행을 권장합니다.

Kubernetes runAsNonRoot 설정

Root 실행을 방지하는 설정입니다.

예:

securityContext:
  runAsNonRoot: true

의미:

Container는 Root User로 실행될 수 없음

Application 보안을 강화합니다.

Kubernetes runAsUser 설정

특정 Linux User ID로 Container를 실행합니다.

예:

securityContext:
  runAsUser: 1000

의미:

UID 1000 User로 실행

운영 환경에서는 Application 전용 User를 사용하는 것이 좋습니다.

Kubernetes readOnlyRootFilesystem

Container Root 파일 시스템을 읽기 전용으로 설정합니다.

예:

securityContext:
  readOnlyRootFilesystem: true

효과:

  • 악성 파일 생성 방지
  • Container 변경 방지
  • 보안 강화

로그나 임시 데이터는 별도 Volume을 사용합니다.

Kubernetes Linux Capability 관리

Linux Capability는 Container가 사용할 수 있는 시스템 권한입니다.

예:

기본:

Container

여러 Capability 보유

문제:

불필요한 권한 증가

해결:

필요한 Capability만 허용

예:

capabilities:
  drop:
  - ALL

최소 권한 환경을 구성합니다.

Kubernetes Privileged Container 위험

Privileged Container는 Host System에 가까운 권한을 가집니다.

가능한 작업:

  • Host Device 접근
  • Kernel 기능 사용
  • 시스템 변경

일반 Application에서는 사용하지 않는 것이 좋습니다.

Kubernetes allowPrivilegeEscalation 제한

Container 내부에서 추가 권한 상승을 막는 설정입니다.

예:

allowPrivilegeEscalation: false

보안 공격 가능성을 줄입니다.

Kubernetes Pod Security Admission이란?

Pod Security Admission(PSA)은 Kubernetes에서 Pod 보안 수준을 관리하는 기능입니다.

보안 수준:

Level설명
Privileged제한 없음
Baseline일반적인 보안 제한
Restricted강력한 보안 적용

Production 환경에서는 Restricted 수준을 고려합니다.

Kubernetes Pod Security Standard(PSS)

PSS는 Kubernetes에서 정의한 보안 기준입니다.

3가지 정책:

Privileged

모든 권한 허용

개발 및 특수 환경 사용

Baseline

위험한 설정 제한

일반 운영 환경 사용

Restricted

강력한 보안 정책

보안 중요 서비스 사용

Kubernetes Pod Security 적용 구조

동작:

Namespace 설정

Pod 생성 요청

Security Policy 검사

허용 또는 차단

보안 정책을 자동 적용할 수 있습니다.

Kubernetes Pod Security Label 설정

Namespace에 보안 수준을 지정합니다.

예:

kubectl label namespace production \
pod-security.kubernetes.io/enforce=restricted

Production Namespace 보호에 사용됩니다.

Kubernetes SecurityContext와 RBAC 차이

두 기능은 목적이 다릅니다.

구분역할
RBAC누가 무엇을 할 수 있는지 관리
SecurityContextContainer가 무엇을 할 수 있는지 관리

둘을 함께 사용해야 완성된 보안 구조가 됩니다.

Kubernetes Pod Security 장애 사례

보안 정책 적용 후 Application이 실행되지 않을 수 있습니다.

문제원인
Pod 생성 실패Security Policy 위반
Permission 오류User 권한 문제
파일 접근 실패ReadOnly 설정
Application 실행 실패Root 필요 Application

보안 적용 전 테스트가 필요합니다.

Kubernetes Pod Security 운영 전략

Production 환경에서는 단계적으로 적용합니다.

1단계

현재 Container 권한 확인

2단계

Root 실행 제거

3단계

Capability 제한

4단계

Restricted 정책 적용

갑작스러운 정책 적용으로 인한 서비스 문제를 줄일 수 있습니다.

Kubernetes Pod Security와 DevSecOps

현대적인 운영 환경에서는 보안을 배포 과정에 포함합니다.

구조:

Code 작성

Security 검사

Container Image 검사

Kubernetes 배포

Pod Security 적용

DevSecOps 운영 방식입니다.

Kubernetes Pod Security 장점

장점설명
권한 최소화공격 범위 감소
Container 보호실행 환경 제한
Compliance 대응보안 기준 적용
운영 안정성위험 설정 방지

Pod Security는 Kubernetes Production 운영의 중요한 보안 계층입니다.

자주 묻는 질문

Kubernetes Pod Security와 RBAC는 같은 기능인가요?

아닙니다.

RBAC는 사용자 권한 관리이고 Pod Security는 Container 실행 권한 관리입니다.

모든 Container를 Root로 실행하면 안 되나요?

가능하지만 보안 위험이 증가하므로 일반 Application에서는 권장되지 않습니다.

Pod Security를 적용하면 기존 Application이 실행되지 않을 수 있나요?

가능합니다.

기존 Container의 User 권한과 File 접근 설정을 확인해야 합니다.

마무리

Kubernetes Pod Security는 Container 실행 권한을 제한하고 Cluster 내부 보안을 강화하는 기능입니다.

구성 요소역할
SecurityContextContainer 권한 설정
Pod Security Admission정책 적용
CapabilityLinux 권한 제어
SeccompSystem Call 제한

Pod Security 구조를 이해하면 Kubernetes 환경에서 Container 기반 Application을 더욱 안전하게 운영할 수 있습니다.

다음 글에서는 Kubernetes Network와 Application 접근 보안을 강화하는 Kubernetes Security Context와 Secret 관리 완벽 가이드! 민감 정보 보호 구조 이해하기를 알아보겠습니다.

댓글 남기기