리눅스에서 AI 에이전트를 샌드박싱하기

4 days ago 4

  • AI 개발 보조 도구를 점점 더 자주 사용하는 상황에서, 시스템 안전성과 편의성을 모두 확보하기 위한 샌드박스 실행 환경이 필요해짐
  • 기본적으로 Claude Code는 파일 접근이나 실행 시마다 허가를 요청하지만, 이는 반복적 확인으로 작업 흐름을 방해
  • 이를 해결하기 위해 bubblewrap을 이용한 경량 샌드박스 구성이 제안되며, Docker보다 가볍고 로컬 환경과 유사한 개발 환경 유지 가능
  • 스크립트는 /etc, $HOME, 프로젝트 디렉터리 등 필요한 최소 경로만 바인드하고, 프로젝트 외부 접근을 제한
  • 이러한 접근은 AI 에이전트의 안전한 실행과 개발 효율성을 동시에 확보할 수 있는 실용적 방법

AI 에이전트의 파일 접근 문제

  • Claude Code는 명령줄 인터페이스로, 파일 읽기·쓰기 및 소프트웨어 실행 시마다 사용자 허가를 요청함
    • 이는 보안상 합리적이지만, 반복적 확인으로 인해 병렬 작업이 어려움
  • --dangerously-skip-permissions 옵션을 사용하면 모든 작업을 묻지 않고 실행 가능
    • 일부 사용자는 이를 사용하지만, 시스템 손상 위험이 존재함

샌드박싱 개념과 선택지

  • 일반적인 해결책은 원격 머신(exe.dev, sprites.dev, daytona.io)이나 Docker 등 가상화 기술을 이용한 샌드박스 실행
  • 리눅스에서는 bubblewrap이 경량 대안으로, cgroupsuser namespaces를 활용해 프로세스를 격리함
  • 샌드박스 환경에서 필요한 조건은 다음과 같음
    • 기존 개발 환경과 동일한 구조 유지
    • 현재 프로젝트 외부 정보 접근 최소화
    • 프로젝트 디렉터리만 쓰기 가능
    • IDE와 동일 파일을 직접 확인·수정 가능
    • AI 제공자 연결 및 서버 실행을 위한 네트워크 접근 허용

보안 고려와 한계

  • bubblewrap과 Docker는 완전한 보안 격리를 제공하지 않음
    • 커널 제로데이 취약점, 사이드채널 통신, 데이터 유출 등의 위험은 남음
  • 그러나 작성자는 이러한 위험보다 개발 편의성을 우선함
  • 코드베이스는 git으로 관리되고 GitHub 등에 백업되어 있어 손상 위험이 낮음
  • API 키 유출 위험을 줄이기 위해 프로젝트별 API 키 분리를 권장함

bubblewrap 샌드박스 스크립트 구성

  • 스크립트는 bwrap 명령으로 다양한 디렉터리를 읽기 전용(ro-bind) 또는 쓰기 가능(bind) 형태로 마운트함
    • /bin, /lib, /usr/bin 등 시스템 경로는 읽기 전용
    • $HOME/.claude, $HOME/.cache, 현재 작업 디렉터리($PWD)는 쓰기 가능
    • $HOME/.claude.json은 파일 디스크립터로 주입되어, 변경이 실제 파일에 반영되지 않음
    • 호스트명은 bubblewrap으로 변경해 구분 가능
  • /tmp, /proc, /dev는 bubblewrap이 자동 처리
  • /etc 전체를 노출하지 않고, 필요한 최소 파일만 바인드함
  • Node.js는 /opt/node/node-v22.11.0-linux-x64/ 경로에 설치되어 있음

사용자 맞춤 설정 방법

  • 다른 AI 에이전트나 시스템에 맞추려면 스크립트를 수정해 bash를 실행한 뒤, 수동으로 에이전트를 실행하며 필요한 파일을 확인
  • strace 명령을 이용해 파일 접근 호출을 추적 가능
    • 예시: strace -e trace=open,openat,stat,statx,access -o /tmp/strace.log codex
    • 로그를 분석해 필요한 파일을 식별하고, 해당 경로를 바인드하여 환경을 조정

결론

  • bubblewrap을 활용한 샌드박싱은 로컬 개발 환경과 동일한 편의성을 유지하면서도 AI 에이전트의 오작동이나 데이터 유출 위험을 최소화할 수 있는 실용적 접근임
  • 작성자는 이 구성을 기반으로 필요에 따라 지속적으로 스크립트를 조정할 계획

Read Entire Article