Sandbox

Docker와 VM의 코드 격리 방식

Sandbox는 코드를 제한된 공간에서 실행해서 바깥 환경에 영향을 주지 않게 하는 격리 방식. Docker는 namespace+cgroup으로 가볍게 격리하고, 완전한 격리가 필요하면 VM을 쓴다.

Security

개념

Sandbox는 코드를 제한된 공간에서 실행해서 바깥 환경에 영향을 주지 않게 하는 격리 방식이다. 격리 수준은 "프로세스만 분리"부터 "OS 전체 분리"까지 다양하고, 상황에 맞게 골라 쓴다. 실험·테스트·신뢰할 수 없는 코드 실행에 기본적으로 필요하다.

왜 필요한가

  • 실험하다가 파일시스템·네트워크·프로세스에 영향이 나면 롤백이 어렵다
  • 신뢰할 수 없는 코드(플러그인, 사용자 제출 코드, CI 빌드)를 돌릴 때 보호막이 필요
  • 보안의 기본 원칙인 최소 권한을 구현하는 수단
  • 여러 환경을 한 머신에서 돌릴 때 서로 간섭 방지

격리 수준별 비교

방식 격리 수준 속도 용도
chroot 파일시스템만 빠름 빌드 환경 분리
Docker 컨테이너 프로세스 + 네트워크 + 파일시스템 빠름 개발/배포
VM (VirtualBox, QEMU) OS 전체 느림 완전 격리 필요할 때
브라우저 sandbox 탭/프로세스 단위 - 웹 보안
온라인 IDE (CodeSandbox) 서버 측 컨테이너 - 빠른 프로토타이핑

Docker가 sandbox인 이유

호스트 OS
├── 컨테이너 A (namespace + cgroup으로 격리)
│   ├── 자체 파일시스템
│   ├── 자체 네트워크
│   └── 자체 프로세스 트리
└── 컨테이너 B
    └── ...
  • Linux namespace로 프로세스·네트워크·파일시스템 분리
  • cgroup으로 CPU·메모리 제한
  • VM처럼 OS를 통째로 띄우지 않아서 가벼움

보안 관점

sandbox를 쓰는 핵심 이유는 최소 권한 원칙이다.

  • 컨테이너가 뚫려도 호스트에 바로 접근 못 함
  • 브라우저 탭이 악성 코드를 실행해도 다른 탭/OS에 영향 없음
  • CI/CD에서 빌드할 때 신뢰할 수 없는 코드를 격리 실행

한계

  • Docker는 호스트와 커널을 공유하기 때문에 커널 취약점으로 탈출 가능 (container escape)
  • 완전한 격리가 필요하면 VM이나 gVisor, Kata Containers 같은 경량 VM 솔루션 사용

git clone과의 차이

"코드 복사"와 "환경 격리"는 완전히 다른 일이다.

git clone sandbox
의미 코드 복사 실행 환경 격리
목적 프로젝트 가져오기 안전한 실행/테스트
효과 폴더는 분리됨 권한/파일/네트워크까지 제한 가능
같이 쓰는지 단독 사용 가능 clone 후 같이 쓰면 더 안전

더 보기

  • 서버-배포-구성 — Docker를 실제 배포에 쓰는 구성 예시
  • MCP — AI Agent의 도구 실행을 sandbox에 격리하는 경우
sunshinemoon · 2026