[쿠버네티스 패턴] 23장 Process Containment

bocopile·2026년 1월 3일

쿠버네티스 패턴

목록 보기
21/28
post-thumbnail

컨테이너는 단순한 패키징 수단이 아닙니다. 제대로 설정하면 ‘보안 울타리(Security Fence)’가 될 수 있습니다. 이 글에서는 애플리케이션 코드 보안 외에도 쿠버네티스에서 설정할 수 있는 런타임 권한 격리를 통해 “컨테이너 안에서 일어난 일은 컨테이너 안에 머물게” 만드는 방법을 설명합니다.

0. 개념 요약: Process Containment란?

컨테이너는 기본적으로 호스트 커널을 공유합니다. 따라서 컨테이너 내부 프로세스가 과도한 권한을 가지면, 이를 통해 호스트 시스템이나 클러스터 전체에 영향을 줄 수 있는 위험이 있습니다. 이때 프로세스 격리(Process Containment) 패턴은 다음을 목표로 합니다:

  • 컨테이너가 최소 권한(Least Privilege) 으로 실행되도록 구성
  • 시스템 콜, 파일시스템, 네트워크, Capabilities를 제한하여 격리 경계 생성
  • 침해 발생 시에도 영향 범위를 해당 컨테이너로 국한

1. 보안 아키텍처에서의 위치

이 패턴은 클라우드 네이티브 보안의 “런타임 레이어”에 해당합니다. 코드를 아무리 검사해도 새로운 취약점은 계속 등장하므로, 운영 중인 컨테이너 자체의 권한을 낮추는 것이 두 번째 방어선입니다.

2. 핵심 기술: securityContext로 격리 구현

2.1 Pod-level vs Container-level

  • Pod-level securityContext: spec.securityContext
  • Container-level securityContext: spec.containers[].securityContext
  • 둘 다 설정된 경우, Container-level이 우선 적용됩니다.

2.2 주요 설정 항목

설정 항목예시설명
runAsNonRoottrueroot 사용자 실행 차단
allowPrivilegeEscalationfalsesudo/setuid 제한
readOnlyRootFilesystemtrue루트 FS를 읽기 전용으로
capabilitiesdrop: ALL커널 권한 최소화
seccompProfileRuntimeDefault시스템콜 필터 적용

3. 실습: 최소 권한 Pod YAML

루트 파일시스템을 RO로 설정하면, 앱이 /tmp나 로그 경로에 쓰기를 시도할 때 "Read-only file system" 에러가 발생하며 크래시 루프에 빠질 수 있습니다. 반드시 예제처럼 필요한 경로만 emptyDir로 열어주는 '화이트리스트' 방식의 쓰기 허용이 병행되어야 합니다.

apiVersion: v1
kind: Pod
metadata:
  name: secure-app
spec:
  securityContext:
    runAsNonRoot: true
  containers:
  - name: app
    image: nginx:latest
    securityContext:
      runAsUser: 1000
      allowPrivilegeEscalation: false
      readOnlyRootFilesystem: true
      capabilities:
        drop: ["ALL"]
        add: ["NET_BIND_SERVICE"]
      seccompProfile:
        type: RuntimeDefault
    volumeMounts:
    - name: tmp
      mountPath: /tmp
  volumes:
  - name: tmp
    emptyDir: {}

4. PSA 흐름도 및 정책 예시

PSA 정책은 네임스페이스 라벨로 적용할 수 있으며, warn 모드를 활용한 dry-run 식 점검이 가능해 운영 안정성을 높일 수 있습니다.

5. 고급 전략 및 실무 팁

5.1 initContainer로 임시 root 허용

  • 메인 컨테이너는 non-root로 실행
  • 필요한 경우 initContainer에서 root로 초기 파일 작업 후 종료

5.2 User Namespace

  • hostUsers: false 설정으로, 컨테이너 내 root(UID 0)가 호스트에선 일반 사용자로 매핑됨
  • 기존엔 이미지를 수정해야 했던 작업을 줄여줌 → 운영 부담 감소

5.3 런타임 보안 도구

  • Falco, Cilium Tetragon 등을 함께 사용하면 컨테이너 탈출 시도를 감지 가능

6. 보안 모니터링과 감지의 중요성

Process Containment는 사전 설정을 통해 사고를 예방하는 전략입니다. 하지만 완벽한 설정이란 존재하지 않기에, 런타임에서의 행위 감지(Observability) 또한 중요합니다.

다음과 같은 오픈소스 도구들이 추천됩니다:

  • Falco: CNCF 프로젝트. system call을 실시간으로 감시해, setuid, netcat 실행, bash 진입 등 이상행위를 탐지
  • Cilium Tetragon: eBPF 기반의 고성능 런타임 보안 감시 도구. 네트워크 + 프로세스 행위를 모두 분석 가능
  • Tracee: Aqua Security에서 만든 lightweight eBPF 기반 runtime trace 도구

이 도구들은 쿠버네티스 설정 외부에서 행위 기반 감시를 통해 마지막 방어선을 제공합니다.

결론

Process Containment는 쿠버네티스 환경에서 최소 권한 원칙을 실현하기 위한 핵심 패턴입니다. 설정 자체는 단순하지만, 보안 사고의 확산을 막는 마지막 방어선으로 작동합니다.

보안은 설정만으로 끝나는 것이 아니라, 정책 + 감시 + 점진적 적용 전략이 모두 어우러져야 완성됩니다.


참고:

profile
DevOps Engineer

0개의 댓글