핵심 인사이트 (3줄 요약)

  1. 본질: 기본 컨테이너(runc)는 호스트 커널을 공유하므로 커널 취약점을 통한 컨테이너 탈출(Container Escape) 위험이 있다. 샌드박싱 런타임은 커널 접근을 차단하는 추가 격리 계층을 삽입하여 보안을 강화한다.
  2. 가치: gVisor는 **유저 스페이스 커널(Sentry)**로 시스콜을 중간 차단하고, Kata Containers는 경량 VM 안에 컨테이너를 격리하여, 멀티테넌트 환경에서 워크로드 간 완벽 격리를 달성한다.
  3. 판단 포인트: gVisor는 시스콜 호환성 제한+성능 오버헤드 5~15%, Kata는 VM 부팅 지연+메모리 오버헤드라는 트레이드오프가 있으며, 신뢰할 수 없는 코드(CI Runner, FaaS) 실행 시 도입을 검토한다.

Ⅰ. 개요 및 필요성

기본 컨테이너 런타임(runc)은 Namespace·cgroups로 프로세스를 격리하지만, 호스트 커널을 직접 공유한다. 커널에 제로데이 취약점이 발생하면 컨테이너 안의 악성 코드가 호스트 전체를 장악할 수 있다(Container Escape).

┌───────────────────────────────────────────────────────┐
│      런타임별 격리 수준 비교                            │
├───────────────────────────────────────────────────────┤
│  [runc (기본)]                                        │
│   Container ──syscall──▶ Host Kernel (직접 접근 ⚠️)  │
│                                                       │
│  [gVisor (runsc)]                                     │
│   Container ──syscall──▶ Sentry(유저커널) ──▶ Kernel  │
│   시스콜 중간 차단, 200+개만 허용                     │
│                                                       │
│  [Kata Containers]                                    │
│   Container ──▶ [경량 VM (QEMU/Firecracker)]         │
│                      └──▶ Guest Kernel ──▶ Host      │
│   완전한 커널 격리, VM 수준 보안                      │
└───────────────────────────────────────────────────────┘
  • 📢 섹션 요약 비유: runc는 사무실 칸막이(넘어가기 쉬움), gVisor는 유리벽(보이지만 못 넘어감), Kata는 별도 건물(완전 분리)이다.

Ⅱ. 아키텍처 및 핵심 원리

런타임격리 방식커널 공유성능 오버헤드호환성
runcNamespace+cgroups공유거의 없음100%
gVisor유저 스페이스 커널 (Sentry)차단5~15%제한 (200+ syscall)
Kata경량 VM (Firecracker)게스트 커널부팅 지연+메모리높음

gVisor 동작 원리

앱이 open() 시스콜을 호출하면, 호스트 커널에 직접 가지 않고 **Sentry(유저 스페이스 커널)**가 가로채어 검증 후 제한적으로 호스트에 전달한다. 악성 시스콜은 Sentry에서 차단된다.

  • 📢 섹션 요약 비유: gVisor는 회사 메일 시스템이다. 직원(컨테이너)이 외부에 메일(시스콜)을 보내면, 보안팀(Sentry)이 검열한 후 통과시킨다.

Ⅲ. 비교 및 연결

비교기본 컨테이너VMgVisorKata
격리약함강함중간~강함강함 (VM급)
성능최고낮음중간중간
부팅ms수 초ms< 100ms (Firecracker)
밀도최고낮음높음중간

Ⅳ. 실무 적용 및 기술사 판단

도입 시나리오

  1. CI/CD Runner: 사용자 제출 코드를 빌드 → gVisor 격리로 악성 코드 차단.
  2. FaaS (Lambda): 멀티테넌트 함수 실행 → Firecracker (Kata 기반) 격리.
  3. 일반 워크로드: 신뢰 가능한 내부 앱 → runc 유지 (성능 우선).

안티패턴

  • 모든 파드를 gVisor로 실행: 시스콜 호환성 문제로 일부 앱 오작동 → 신뢰도 높은 내부 앱에는 불필요.

Ⅴ. 기대효과 및 결론

지표runc (기본)gVisor / Kata개선
컨테이너 탈출 위험높음차단/격리보안 강화
멀티테넌트 격리약함강함규정 준수
성능최고5~15% 오버헤드트레이드오프

컨테이너 샌드박싱은 Confidential Computing(기밀 컴퓨팅)과 결합하여 하드웨어 TEE(Trusted Execution Environment) 내에서 컨테이너를 실행하는 방향으로 진화하고 있다.


📌 관련 개념 맵

개념연결 포인트
runcOCI 표준 기본 컨테이너 런타임
gVisor (runsc)Google의 유저 스페이스 커널 샌드박스
Kata Containers경량 VM 기반 컨테이너 격리
FirecrackerAWS Lambda가 사용하는 마이크로VM
Container Escape샌드박싱이 방지하려는 공격 벡터

📈 관련 키워드 및 발전 흐름도

[Docker + runc (2013~) — 커널 공유 컨테이너 표준화]
    │
    ▼
[Container Escape 공격 증가 (2017~) — CVE-2019-5736 등]
    │
    ▼
[gVisor (2018, Google) — 유저 스페이스 커널 격리]
    │
    ▼
[Kata + Firecracker (2018~) — 경량 VM 격리]
    │
    ▼
[현재: Confidential Containers — 하드웨어 TEE + 컨테이너]

👶 어린이를 위한 3줄 비유 설명

  1. 보통 컨테이너(runc)는 교실 칸막이로 나뉜 거예요. 칸막이를 넘으면 옆 자리를 볼 수 있죠.
  2. gVisor는 유리벽이에요. 보이지만 넘어갈 수 없어요.
  3. Kata는 아예 다른 건물로 분리해서, 절대 옆 교실에 갈 수 없게 만든답니다!