AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

AI 에이전트 보안 팁 – 에이전트 본체와 코드 실행 샌드박스를 분리하기

에이전트가 안전하게 오래 일하려면 “에이전트가 사는 곳”과 “에이전트가 위험한 코드를 실행하는 곳”을 분리해야 한다. Fly.io의 Sprite 사례는 이를 Brain/Hands 분리로 설명한다. Brain은 장기 상태와 히스토리를 가진 에이전트 루프이고, Hands는 명령을 실행하는 격리 샌드박스다.

핵심 패턴

계층역할수명
Brain모델 호출, 세션 상태, 메모리, 사용자 연결길게 유지
Hands셸 명령, 테스트 실행, 마이그레이션, 파일 작업세션별 또는 작업별로 생성·폐기

에이전트 자체를 샌드박스에서 실행하더라도, 그 안에서 생성한 임의 명령을 같은 환경에서 실행하면 에이전트가 자기 상태나 자격증명을 망가뜨릴 수 있다. 명령 실행은 별도 샌드박스로 밀어내는 편이 안전하다.

실전 설계 원칙

  1. 세션마다 샌드박스 생성: 사용자별 작업 파일과 도구를 격리한다.
  2. 자격증명은 파일에 쓰지 않는다: 토큰은 특정 명령 실행 순간에만 환경 변수로 주입하고 즉시 사라지게 한다.
  3. 샌드박스는 버릴 수 있어야 한다: 세션이 끝나면 폐기하고, 재개가 필요하면 새 샌드박스를 만든다.
  4. 복구 가능한 상태는 Brain에 둔다: 장기 메모리, 대화 히스토리, 작업 요약은 샌드박스 밖에 둔다.

언제 유용한가

  • 여러 사용자가 같은 에이전트 서비스를 쓰는 경우
  • 에이전트가 실제 git, flyctl, kubectl, DB migration을 실행해야 하는 경우
  • 위험 명령 승인 프롬프트를 줄이고 싶지만 호스트를 보호해야 하는 경우
  • hermes-agent나 사내 트러블슈팅 에이전트처럼 장기 세션과 실행 환경이 모두 필요한 경우

관련 문서

  • agent-harness — 샌드박스와 실행 루프를 포함한 에이전트 하네스 설계
  • docker-sandbox — MicroVM 기반 AI 에이전트 격리 실행 환경
  • sandboxd — AI 앱 빌더를 위한 셀프호스팅 샌드박스 엔진
  • agent-vault — 에이전트 자격증명 관리

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)