AI Agent에게 왜 전용 격리 환경이 필요할까요?
Cursor, Claude Code 같은 로컬 도구 기반 AI Agent를 써 본 적이 있다면 「권한 넘침」 순간을 기억할 겁니다. 설정 파일 하나만 고치라고 했는데 rm -rf를 실행하거나, SSH 키를 임시 서버로 올려 버리는 식입니다. 이건 AI의 버그가 아니라 시스템 설계 문제입니다. 경계를 정해 주지 않았기 때문이죠.
로컬 Mac에서 샌드박스를 쓰기는 까다롭습니다. macOS App Sandbox는 GUI 앱 중심이고, Docker 컨테이너는 완전한 macOS 환경을 제공하지 못합니다. 코드 서명, Xcode 시뮬레이터, Apple Neural Engine은 컨테이너 안에서 돌아가지 않습니다. 더 큰 문제는 Agent가 다루는 작업 자체가 고권한인 경우가 많다는 점입니다. 소프트웨어 설치, 시스템 설정 변경, Keychain 접근처럼 충분한 권한이 필요한 일을 하면서 동시에 아무것도 못 하게 가두는 것은 불가능에 가깝습니다.
OpenClaw는 이 모순을 풀기 위해 설계되었습니다. Agent를 제한된 상자에 가두는 게 아니라, 완전한 macOS 물리 환경 위에서 작업마다 감사·추적·중단 가능한 「작업 경계」를 그립니다. 접근 가능한 디렉터리, 허용된 시스템 명령, 나갈 수 있는 네트워크를 정밀하게 제어하면서도 나머지 macOS 기능은 그대로 쓸 수 있습니다.
이 글은 첫 샌드박스 세션을 빠르게 돌려 보는 데 초점을 맞춥니다. 콘솔 운영, CI/CD 통합, 다중 사용자 협업까지 다루려면 OpenClaw 완전 사용 가이드를 이어서 읽어 보세요.
이 글의 모든 작업은 ZilCloud 한국 서울 노드의 Mac mini M4(16 GB 통합 메모리, 256 GB SSD, 1 Gbps 독점 대역폭)에서 수행했습니다. macOS Sequoia 15.3, OpenClaw 1.4.2 기준입니다.
OpenClaw 핵심 아키텍처: 3계층 격리 모델
손을 대기 전에 아키텍처를 2분만 이해해 두면 권한 설정에서 시행착오를 크게 줄일 수 있습니다.
OpenClaw는 AI Agent 작업 경계를 관리하는 「3계층 격리」 모델을 사용합니다.
1계층: 파일 시스템 네임스페이스(Namespace). OpenClaw 세션이 시작되면 지정 디렉터리에 임시 네임스페이스 마운트 포인트가 만들어집니다. 세션 안의 모든 파일 읽기·쓰기는 이 네임스페이스로 리다이렉트됩니다. Agent가 /etc/hosts에 쓰려 해도 실제로는 네임스페이스 복사본에만 기록되고 주 시스템에는 영향이 없습니다. 세션 종료 후 네임스페이스는 자동 정리하거나 영구 보존할 수 있습니다.
2계층: 시스템 호출 필터(Syscall Filter). OpenClaw는 macOS Endpoint Security 프레임워크로 시스템 호출을 가로채고 필터링합니다. 설정 파일에서 허용·차단할 syscall 유형을 지정할 수 있습니다(예: fork / exec 허용, ptrace / setuid 차단). 「컴파일 모드」, 「웹 크롤링 모드」, 「읽기 전용 검토 모드」 같은 사전 템플릿도 제공합니다.
3계층: 네트워크 접근 제어(Network ACL). 각 OpenClaw 세션에 독립 네트워크 정책을 바인딩할 수 있습니다. 허용 도메인·IP 범위, 포트 리슨 여부, 외부 DNS 조회 허용 여부를 설정합니다. 정책을 벗어난 요청은 Agent에게 바로 오류를 내지 않고 조용히 드롭한 뒤 감사 로그에 기록합니다. Agent가 경계를 인지하고 우회를 시도하는 것을 막기 위함입니다.
사전 준비: ZilCloud에서 Mac mini M4 개통하기
OpenClaw는 ZilCloud에 내장된 기능으로, 콘솔에서 활성화하면 별도 설치가 필요 없습니다. 아직 계정이 없다면 먼저 가입과 첫 부팅을 완료하세요. 전체 과정은 약 5분입니다.
-
01노드와 요금제 선택
주문 구성 페이지에서 대상 사용자와 가장 가까운 노드를 고릅니다(싱가포르 / 일본 / 한국 / 홍콩 / 미국 동부). AI Agent 작업에는 기본 256 GB SSD로 충분하며, 일 $20.9부터 이용할 수 있습니다.
-
02결제 후 자동 개통 대기
결제가 완료되면 시스템이 인스턴스를 자동 할당·인도합니다. 보통 1–5분 안에 끝납니다. SSH 접속 정보와 VNC 비밀번호가 담긴 확인 메일을 받게 됩니다.
-
03VNC 또는 SSH로 시스템 준비 확인
콘솔에 로그인한 뒤 「VNC 열기」를 누르면 브라우저에서 바로 macOS 데스크톱을 볼 수 있습니다. 클라이언트 설치가 필요 없습니다. SSH:
ssh admin@<공인 IP> -p <포트>
OpenClaw 샌드박스 활성화(콘솔 작업)
인스턴스가 정상 동작하는 것을 확인한 뒤, ZilCloud 콘솔에서 해당 주문의 「OpenClaw」 메뉴로 이동합니다. 처음 활성화할 때는 「제로 트러스트 초기화」가 필요합니다. 이 과정에서 인스턴스에 바인딩된 접근 키 쌍이 생성되고, OpenClaw 데몬이 시스템 백그라운드 서비스로 설치됩니다.
초기화가 끝나면 macOS 터미널에서 OpenClaw 서비스 상태를 확인합니다.
# Check OpenClaw daemon status
launchctl list | grep openclaw
# Expected output:
# - 0 com.zilcloud.openclaw.daemon
종료 코드가 0이면 데몬이 실행 중입니다. 다음으로 CLI 도구를 설치합니다(콘솔 초기화 시 자동 완료되지 않은 경우).
# Install OpenClaw CLI
curl -fsSL https://cdn.zilcloud.com/openclaw/install.sh | bash
# Verify version
claw --version
# openclaw 1.4.2 (darwin/arm64)
claw status 실행 후 "daemon: running"과 유효한 session token이 보이면 환경이 준비된 것입니다. 이제 권한 구성을 진행할 수 있습니다.
AI Agent 권한 경계 구성하기
OpenClaw는 YAML 설정 파일로 각 샌드박스 세션의 권한 정책을 정의합니다. AI Agent 시나리오용 사전 템플릿 3가지를 CLI로 바로 불러올 수 있습니다.
# List available templates
claw template list
# output:
# readonly — read-only audit mode (no writes, no network)
# dev — developer mode (full fs write, npm/pip allowed, no external network)
# agent — AI agent mode (scoped fs, curated syscalls, filtered network)
처음이라면 agent 템플릿부터 시작한 뒤 필요에 따라 조정하는 것을 권장합니다.
# Generate a config file from the agent template
claw template export agent > ~/openclaw-agent.yaml
생성된 openclaw-agent.yaml의 대략적인 구조는 다음과 같습니다(주석은 간략화).
version: "1"
session:
name: "my-agent-session"
auto_cleanup: true # clean namespace on session exit
filesystem:
workspace: "~/agent-workspace" # agent's r/w root
readonly_mounts:
- /Applications # read access to installed apps
- /usr/local/bin # allow calling homebrew tools
deny:
- ~/.ssh # block ssh key access
- ~/Library/Keychains # block keychain access
syscalls:
preset: "agent" # allows fork/exec, blocks ptrace/setuid
network:
allow_domains:
- "api.openai.com"
- "api.anthropic.com"
- "*.github.com"
block_all_others: true # silent-drop, not reject
이 설정의 핵심은 세 가지입니다. Agent의 파일 쓰기는 ~/agent-workspace로 제한됩니다. 설치된 앱과 Homebrew 도구는 읽을 수 있지만 SSH 키나 Keychain에는 접근할 수 없습니다. 네트워크는 명시한 도메인만 허용하고 나머지 아웃바운드는 조용히 차단합니다.
처음에는 /usr/local/bin을 읽기 전용 마운트 화이트리스트에 넣지 않았습니다. Agent가 git, python3를 호출할 때 전부 실패했습니다. Homebrew로 설치된 symlink를 OpenClaw가 실제 경로로 해석했는데, 대상 경로가 허용 목록에 없어 차단된 것이었습니다. 감사 로그를 확인한 뒤에야 원인을 찾을 수 있었습니다.
첫 AI Agent 작업 실행하기
설정 파일이 준비되면 claw run으로 격리 세션을 시작하고, 세션 안에서 Agent를 실행합니다.
# Start a sandboxed session with the config
claw run --config ~/openclaw-agent.yaml --attach
# Inside the session, you are now in the sandboxed environment
# Prompt changes to indicate active sandbox:
# (claw:my-agent-session) admin@mac-ZC-xxxxx:~$
# Now run your AI agent tool, e.g. Claude Code
claude --dangerously-skip-permissions
--attach는 샌드박스 셸에 바로 들어가게 합니다. 여기서 시작한 모든 프로세스는 OpenClaw 모니터링 대상입니다. claude --dangerously-skip-permissions는 Claude Code가 파일 시스템을 자율 조작하도록 허용하는 플래그인데, OpenClaw 샌드박스 안에서는 「자율 조작」 범위가 이미 YAML로 정해져 있습니다. 위험한 권한이 샌드박스 경계 안에 가둬지는 셈입니다.
작업이 돌아가는 동안 다른 터미널에서 감사 스트림을 실시간으로 볼 수 있습니다.
# Tail the audit stream for the active session
claw audit tail my-agent-session --follow
# Sample output:
# [10:23:41] ALLOW exec /usr/local/bin/git clone https://github.com/...
# [10:23:42] ALLOW write ~/agent-workspace/repo/README.md
# [10:23:45] BLOCK network outbound → 142.250.x.x (google.com) — policy: block_all_others
# [10:23:48] ALLOW exec /usr/bin/python3 analyze.py
각 기록에는 타임스탬프, 결정(ALLOW / BLOCK), 작업 유형(exec / write / network / read), 구체적 대상이 포함됩니다. BLOCK인 경우 어떤 정책 규칙에 걸렸는지도 표시됩니다. 로그는 영구 저장되며 세션 종료 후에도 조회할 수 있습니다.
제로 트러스트 접근과 감사 로그의 실제 가치
위에서 차단된 google.com 요청은 실제로 발생한 일입니다. Agent가 코드를 분석하는 과정에서 내부 라이브러리를 호출했고, 그 라이브러리가 시작 시 Google Analytics 초기화 ping을 내려 했습니다. 일반 환경에서는 이 행동을 전혀 눈치채기 어렵습니다. OpenClaw 샌드박스에서는 기록으로 남습니다.
이것이 「제로 트러스트」의 실질적 의미입니다. Agent를 믿지 말라는 뜻이 아니라, 모든 행동이 기대와 일치한다고 가정하지 않는다는 뜻입니다. 작업을 시각화하고 감사 가능하게 만드는 것이 Agent가 실제로 무엇을 하는지 이해하는 유일한 방법입니다.
감사 로그는 컴플라이언스에도 쓰입니다. AI Agent로 고객 데이터나 코드 리뷰를 처리한다면, 보안 팀은 종종 「AI가 데이터를 외부로 보내지 않았다」는 것을 증명하라고 요구합니다. OpenClaw 감사 로그는 검증 가능한 기록이며 JSON으로 보내 제출할 수 있습니다.
# Export full audit log as JSON for compliance review
claw audit export my-agent-session \
--format json \
--output audit-report-$(date +%Y%m%d).json
흔한 시나리오별 설정 빠른 참조
AI Agent 사용 목적에 따라 agent 템플릿을 기반으로 아래처럼 조정할 수 있습니다.
| 사용 시나리오 | 권장 syscall 프리셋 | 네트워크 정책 | 핵심 주의사항 |
|---|---|---|---|
| 코드 생성 / 리팩터링 | agent |
npm / pip 레지스트리 허용 | 패키지 매니저 도메인 개방 필요 |
| iOS 프로젝트 빌드(Xcode) | dev |
Apple CDN 허용 | /Applications/Xcode.app 마운트 필요 |
| 데이터 분석(읽기 전용 입력) | readonly |
전체 차단 | 민감 데이터에 가장 높은 보안 수준 |
| 웹 크롤링 / 정보 검색 | agent |
대상 도메인 화이트리스트 | 허용 도메인을 정밀하게 제한해 유출 방지 |
| CI/CD 자동화 작업 | dev |
GitHub / CI 서비스 허용 | CI 실행마다 새 세션 생성 권장 |
OpenClaw는 세션 템플릿화를 지원합니다. 튜닝한 설정을 이름 있는 템플릿으로 저장해 두면 claw run --template xcode-build처럼 바로 시작할 수 있습니다. CI/CD 파이프라인에서는 템플릿 YAML을 코드 저장소에 커밋해 매 빌드가 동일하고 감사 가능한 샌드박스에서 실행되게 할 수 있습니다.
독립 Agent 작업마다 새 OpenClaw 세션을 만드세요. 여러 작업이 한 세션을 공유하면 감사 로그가 섞이고, 파일 네임스페이스도 겹쳐 서로의 중간 상태를 읽을 위험이 있습니다.
Docker 컨테이너나 VM으로 AI Agent를 격리하지 않는 이유
OpenClaw를 시연할 때마다 나오는 질문입니다. Docker나 VM으로 충분하지 않나요?
Docker 컨테이너는 Linux 격리 메커니즘입니다. macOS에서 Docker를 쓰면 실제로는 Linux VM 안에서 컨테이너가 돕니다. Docker Desktop의 HyperKit이든 OrbStack의 Lima든 결국 Linux 커널 위입니다. Agent는 macOS가 아니라 Linux 환경에서 실행됩니다. Xcode 툴체인, Apple Neural Engine, codesign, simctl 같은 작업은 Linux 컨테이너에서 불가능합니다. 이 도구들은 macOS 전용 프레임워크에 의존합니다.
macOS 네이티브 가상화(Virtualization.framework + UTM 또는 VMware Fusion)로 완전한 macOS VM을 돌릴 수는 있지만 세 가지 현실적 문제가 있습니다. 첫째, 클라우드 Mac 위에 macOS VM을 중첩하면 성능 손실이 큽니다. M4 Neural Engine은 중첩 가상화에서 게스트가 직접 쓰기 어렵습니다. 둘째, VM 관리 부담(이미지, 스냅샷, 네트워크 브리지)이 OpenClaw 세션 모델보다 훨씬 큽니다. 셋째, VM 내부에도 OpenClaw 수준의 감사 로그가 내장되어 있지 않아 별도 로그 수집 도구를 깔아야 합니다.
OpenClaw는 다른 길을 택합니다. 실제 macOS 물리 환경에서 Endpoint Security로 작업을 가로채며, 성능 오버헤드는 매우 낮습니다(실측 CPU 약 3%). Agent는 자신이 샌드박스 안에 있다는 사실을 거의 느끼지 못합니다. Apple Silicon Neural Engine, Xcode 전체 툴체인, 코드 서명 서비스는 모두 진짜 macOS 기능이고, 미리 정한 경계만 지키면 됩니다.
지금 GitHub Actions macOS Runner를 쓰고 있다면 비교해 보세요. GitHub는 macOS VM을 제공하지만 물리 서버 독점이 아니고, Runner 환경에서 세밀한 감사를 하기 어렵습니다. macOS Runner 요금은 Linux의 10배 수준입니다. ZilCloud Mac mini M4는 일 $20.9부터 물리 서버 독점이며, OpenClaw를 켜면 감사·격리·협업이 가능한 macOS AI Agent 실행 환경을 바로 얻습니다. 「대충 쓸 만한」 대안이 아니라 프로덕션에 맞는 환경입니다.
진짜 물리 Mac에서 AI Agent 샌드박스 실행하기
OpenClaw 샌드박스는 ZilCloud Mac mini M4마다 내장되어 있어 별도 설치가 필요 없습니다. 물리 서버 독점, Apple Neural Engine 직접 접근, 제로 트러스트 접근 제어와 완전 작업 감사 로그. 일 단위 과금으로 언제든 시작하고 중단할 수 있습니다.