배포 가이드 2026-04-16 · 12 분

2026년 OpenClaw Gateway 출발 거버넌스·보안 가드레일: 도메인 허용 목록, Sandbox, 감사 로그, HITL을 원격 물리 Mac에서 재현(openclaw.json + FAQ)

ZoneMac 원격 물리 Mac에서 OpenClaw Gateway를 운영하는 보안·플랫폼 팀은 이그레스가 많은 서비스와 같은 엄격함이 필요합니다: 명시적 아웃바운드 정책, 툴 Sandbox, 추가 전용 감사, 되돌리기 어려운 동작을 위한 사람 개입(HITL). 이 글은 의사결정 매트릭스, 붙여 넣을 수 있는 openclaw.json 구조, 7단계 런북, 인용 가능한 임계값, FAQ, 그리고 7×24 자동화·네트워크 수용 기준선으로 이어지는 링크를 담습니다.

2026년 OpenClaw Gateway 출발 거버넌스 도메인 허용 Sandbox 감사 HITL 원격 물리 Mac

1. 도입과 범위

출발(아웃바운드) 거버넌스는 “인터넷을 막는다”가 아니라 계약입니다: 게이트웨이가 어떤 상류를 호출할 수 있는지, 어떤 툴이 돌 수 있는지, 무엇을 로그에 남길지, 언제 사람이 승인해야 하는지를 정합니다. 무인 물리 Mac에서는 이 계약이 곧 “도우미 에이전트”와 “열린 프록시”의 차이입니다.

이 런북은 127.0.0.1로 게이트웨이에 닿고 openclaw.json을 편집할 수 있다고 가정합니다. ZoneMac 베어메탈에서 끝까지 이어지는 7×24 에이전트 흐름은 2026년 OpenClaw 실전 튜토리얼: ZoneMac 물리 노드에 24/7 완전 자동 AI 에이전트 비즈니스 흐름 배포를 참고하세요. 이그레스를 넓히기 전에 운영자 위치 대비 RTT·손실 기준선은 다중 리전 원격 물리 Mac 수용: RTT·지터·손실 SLO 베이스라인과 임대·스케일 전 매트릭스로 맞추는 편이 안전합니다.

2. 왜 아픈가

  1. 보이지 않는 이그레스 팽창. 새 모델 엔드포인트, OAuth 발급자, “잠깐” 쓰는 패키지 미러가 폭발 반경을 넓힙니다. 이름 있는 허용 목록 없이는 사고 대응 시 “예상된 에이전트 트래픽”인지 “침해”인지 구분할 수 없습니다.
  2. Sandbox 경계 없는 툴링. 셸·브라우저·파일 툴은 공유 Mac에서 사용자 데이터나 CI 시크릿에 닿을 수 있습니다. 느슨한 기본값은 프롬프트 인젝션을 호스트 권한으로 이어지는 명령 실행으로 바꿉니다.
  3. 감사 공백과 HITL 부재. request_id 상관과 로테이션 없는 JSONL은 디스크를 채우고 규정을 깨뜨립니다. 승인 없는 되돌리기 어려운 동작은 풀링된 하드웨어에서 “조용한 운영” 책임을 남깁니다.

3. 의사결정 매트릭스: 가드레일 × 전략

왼쪽 열은 보안과 서명하고, 오른쪽 열은 공유 원격 Mac에서 프로덕션 에이전트에 필요한 최소 자세입니다.

가드레일 위험한 지름길 권장 기준선
아웃바운드 도메인 유연성을 위해 HTTPS 전부 허용 프로필별 명시 FQDN으로 기본 거부; 티켓·만료가 있는 비상(break-glass) 목록
툴 Sandbox 대화형 사용자와 동일 셸 전용 작업공간 루트, 명령 허용 목록, 프로필별 하위 프로세스·월클락 상한
감사 JSONL 콘솔 로그만 구조화 필드: ts, request_id, actor, decision, egress_host; 크기 기준 로테이션
HITL 세션마다 수동 신뢰 정책 기반: 고위험 툴은 대기열, SLA 타이머, 타임아웃 시 에스컬레이션
시크릿 전 세계 읽기 가능 파일에 API 키 macOS 키체인 또는 launchd가 주입하는 환경 변수; 설정 경로 파일 ACL 제한
변경 통제 diff 없이 라이브 JSON 편집 백업, PR 또는 티켓 참조, 스테이징 노드 골든 요청, 롤백 조각 보관

4. 재현 가능한 openclaw.json 조각

아래 블록은 예시입니다. 키 이름은 사용 중인 OpenClaw 버전과 맞추고, 채널 바인딩이나 자격 증명 참조를 덮어쓰지 말며 Mac에 타임스탬프 백업을 남기세요.

4.1 아웃바운드 정책과 도메인 허용 목록

{
  "gateway": {
    "outbound": {
      "defaultPolicy": "deny",
      "profiles": {
        "prod-llm": {
          "allowHosts": [
            "api.openai.com",
            "api.anthropic.com",
            "*.openai.azure.com"
          ],
          "denyHosts": ["metadata.google.internal"],
          "tlsMinVersion": "1.2",
          "dns": { "resolver": "system", "ndots": 1 }
        },
        "breakglass-24h": {
          "allowHosts": ["pypi.org", "files.pythonhosted.org"],
          "expiresAt": "2026-04-17T00:00:00Z",
          "ticket": "SEC-4821"
        }
      },
      "activeProfile": "prod-llm"
    }
  }
}

4.2 툴 Sandbox(작업공간 + 명령 허용 목록)

{
  "gateway": {
    "tools": {
      "sandbox": {
        "enabled": true,
        "profile": "strict-ci",
        "profiles": {
          "strict-ci": {
            "workspaceRoots": ["/Users/agent/OpenClawWorkspaces/ci-bot"],
            "allowCommands": ["/usr/bin/git", "/usr/bin/curl", "/opt/homebrew/bin/jq"],
            "denyPatterns": ["**/\.ssh/**", "**/Library/Keychains/**"],
            "maxSubprocesses": 4,
            "wallClockMs": 120000,
            "network": "outbound-profile:prod-llm"
          }
        }
      }
    }
  }
}

4.3 감사 로깅(JSONL)

{
  "gateway": {
    "audit": {
      "enabled": true,
      "sink": "file",
      "path": "/var/log/openclaw/audit.jsonl",
      "rotateBytes": 268435456,
      "fields": [
        "ts", "request_id", "channel", "actor", "tool", "decision",
        "egress_host", "http_status", "latency_ms", "hil_state"
      ],
      "redact": ["authorization", "cookie", "x-api-key"]
    }
  }
}

4.4 사람 개입(HITL) 게이트

{
  "gateway": {
    "humanInTheLoop": {
      "enabled": true,
      "queues": {
        "default": { "timeoutMs": 300000, "escalateTo": "pagerduty:gateway" }
      },
      "requireApprovalFor": [
        { "toolPattern": "payment.*", "queue": "default" },
        { "toolPattern": "prod-k8s.*", "queue": "default" },
        { "egressHost": "*.corp.internal", "queue": "default" }
      ],
      "dryRunChannels": ["staging-slack"]
    }
  }
}

아웃바운드 프로필, 툴 Sandbox 네트워크, HITL 대기열을 한 줄로 맞추세요: 임의 호스트를 부를 수 있는 툴이 감사 없이 defaultPolicy: deny를 우회하면 안 되며, 비상 프로필이 켜져 있을 때만 예외로 두고 감사해야 합니다.

5. 7단계 런북(원격 물리 Mac)

  1. 이그레스 목록화. 일주일간 게이트웨이 트레이스에서 FQDN을 모으고 의도한 LLM·OAuth 엔드포인트와 비교합니다. 조여기 전 “미스터리” 해석을 제거합니다.
  2. 백업·브랜치. cp openclaw.json openclaw.json.bak.$(date +%Y%m%d%H%M) 후 변경 티켓에 diff를 붙입니다.
  3. 아웃바운드와 Sandbox 블록 병합. 먼저 defaultPolicy: deny를 넣고 허용 목록을 추가합니다. 툴 network를 같은 프로필 이름에 묶습니다.
  4. JSONL 감사 + 로테이션. 로그 디렉터리는 게이트웨이 사용자만 쓸 수 있게 하고, 정책상 필요하면 로테이션된 파일을 중앙 저장소로 보냅니다.
  5. 고위험 툴에 HITL. 결제·프로덕션 오케스트레이션 패턴부터 시작하고 스테이징에는 dryRunChannels를 씁니다.
  6. 로컬 골든 테스트. 허용 요청 한 번, 의도적 거부 한 번(감사에 구조화된 차단 기대), 승인·타임아웃 경로를 포함한 HITL 대기 한 번.
  7. 관측과 리뷰. 거부율, HITL 대기 깊이, 감사 쓰기 실패를 대시보드에 올리고 분기마다 허용 목록과 Sandbox 명령 목록을 검토합니다.

6. 거부 / HITL 트리아지

증상 가능 원인 조치
거부 이벤트 급증 새 상류 호스트명 또는 CDN 분할 최근 프롬프트·툴 diff; 티켓과 함께 FQDN 추가; 범위가 명확할 때만 와일드카드
개발에선 되고 프로덕션에선 차단 프로필 불일치 또는 더 엄격한 Sandbox activeProfile과 툴 workspaceRoots를 비교하고 채널→프로필 매핑을 맞춥니다
HITL 대기열 적체 승인 클래스에 툴이 너무 많음 requireApprovalFor 패턴을 좁히고 업무시간 승인자를 추가합니다. SLA 검토 전에는 타임아웃만 올리지 않습니다
한낮에 감사 파일이 사라짐 로테이션, 권한, 디스크 가득 참 df와 launchd stderr 확인; 감사 싱크 오류를 요청 오류와 별도로 알림
안전하다는 착각 허용 목록만 있고 OS 강화 없음 FileVault, 최소 권한 사용자, 자동 보안 업데이트, Mac에 대한 네트워크 통제를 짝으로 둡니다

7. 인용 가능한 수치(런북용)

  • JSONL 로테이션: rotateBytes: 268435456(256 MiB)마다 파일을 넘겨 콜드 스토리지로 보냅니다—포렌식 세분성과 APFS inode 부담의 균형입니다.
  • HITL 기본 대기: 내부 운영 대기열에는 timeoutMs: 300000(5분)을 기본으로 두고, 고객 대면 봇은 p95 승인 시간을 잰 뒤 줄입니다.
  • Sandbox 월클락: 비스트리밍 툴 체인 첫 상한으로 wallClockMs: 120000(2분)—올리려면 티켓과 프로파일링을 전제로 하세요.

8. FAQ

도메인 허용 목록이 OpenClaw 이그레스에 대해 기업 방화벽을 대체하나요?
아니요. 허용 목록은 애플리케이션 수준 정책이고 경계·호스트 방화벽은 여전히 중요합니다. 레이어하세요: Mac에 대한 네트워크 통제, OpenClaw 안의 명시적 FQDN 정책.

툴 Sandbox 설정과 OS 수준 강화에는 각각 무엇이 들어가나요?
Sandbox는 에이전트 명령과 경로를 제한하고, Gatekeeper·SIP·FileVault·패치 주기는 시스템을 보호합니다. 둘 다 필요합니다.

공유 원격 Mac에서 JSONL 감사 파일을 얼마나 보관해야 하나요?
일반적으로 디스크 핫은 30~90일, 규정상 필요하면 불변 객체 스토리지에 더 길게; 항상 로테이션하고 SIEM으로 보내세요—백업 없이 커지는 단일 파일에 의존하지 마세요.

언제 사람 개입(HITL)이 필수인가요?
되돌리기 어렵거나 피해 반경이 큰 동작: 결제, 프로덕션 변경, 대량 커뮤니케이션, 넓은 이그레스. 아웃바운드와 Sandbox로 위험이 이미 상한 대화형 Q&A만 자동으로 둡니다.

아웃바운드나 Sandbox 편집 시 게이트웨이를 재시작해야 하나요?
일부 키는 핫 리로드될 수 있고, TLS 바인드·샌드박스 프로필·launchd 환경은 리로드나 재시작이 필요할 수 있습니다. 스테이징에서 골든 요청 한 번으로 검증한 뒤 프로덕션에 반영하세요.

9. 요약과 노드 선택

출발 거버넌스는 에이전트 트래픽을 감사 가능한 계약으로 바꿉니다: 기본 거부 이그레스, Sandbox된 툴, 구조화된 JSONL, 실수가 아픈 지점의 HITL. 이 스택이 공유 물리 Mac에서 OpenClaw를 돌릴 때 각 노드를 범용 이그레스 릴레이로 만들지 않는 방법입니다.

무인 게이트웨이에는 macOS가 오래 쓸 가치가 있습니다: Gatekeeper, SIP, FileVault가 전형적인 Windows 플릿 기준선 대비 악성코드 위험 클래스를 줄이고, 네이티브 Unix 툴링과 안정적인 launchd 감독이 설정 드리프트를 드러냅니다. 유휴 약 4W에 조용하고 7×24 부하에 견디는 Mac mini M4는 게이트웨이와 가벼운 툴 워크로드에 랙 없이 잘 맞습니다. ZoneMac 원격 금속에서 같은 정책을 쓰면 SSH와 실제 파일 경로에 맞춘 런북을 유지하기 쉽습니다.

예측 가능한 Apple Silicon 위에 OpenClaw 가드레일을 얹고 운영 부담을 줄이려면 Mac mini M4가 강한 출발점입니다—ZoneMac으로 전용 원격 물리 Mac에 이 런북을 올려 보세요. 지금이 교체·확장을 검토하기 좋은 시점입니다. 홈에서 Mac mini 옵션을 확인할 수 있습니다.

한정 혜택

OpenClaw 출발 거버넌스용 원격 물리 Mac이 필요하신가요?

ZoneMac Mac mini 클라우드는 launchd 감독 게이트웨이, APFS 위 JSONL, SSH로 닿는 런북에 맞춰 실제 금속을 제공합니다—시끄러운 공유 VM이 아닙니다.

종량제 물리 하드웨어 SSH 직접
macOS 클라우드 렌탈 한정 특가
지금 구매