2026: OpenClaw Gateway — исходящее управление и защитные ограждения: белый список доменов, Sandbox, аудит JSONL и человек в контуре на удалённом физическом Mac (openclaw.json + FAQ)
Командам безопасности и платформы, которые запускают OpenClaw Gateway на удалённом физическом Mac ZoneMac, нужна та же строгость, что и у любого сервиса с тяжёлым egress: явная исходящая политика, Sandbox инструментов, дополняемый аудит и человек в контуре (HITL) для необратимых действий. В статье — матрица решений, готовая к вставке структура openclaw.json, семишаговый runbook, цифры для отчётов, FAQ и ссылки на сценарии 7×24 и сетевую приёмку.
1. Введение и область
Исходящее управление — это не «отрезать интернет», а контракт: какие upstream может вызывать шлюз, какие инструменты разрешены, что пишется в лог и когда нужен человек. На безлюдном физическом Mac этот контракт отделяет полезного агента от открытого прокси.
Ниже предполагается доступ к шлюзу на 127.0.0.1 и возможность править openclaw.json. Для сквозных сценариев агентов 7×24 на железе ZoneMac см.
автоматизацию ИИ-агентов на физических узлах ZoneMac.
Перед расширением egress зафиксируйте RTT и потери относительно локаций операторов по
мультирегиональной приёмке удалённого Mac: RTT, джиттер, потери и SLO.
2. Точки боли
- Невидимый рост исходящего трафика. Каждый новый endpoint модели, OAuth или «быстрое» зеркало пакетов расширяет зону поражения; без именованного белого списка при инциденте нельзя отличить ожидаемый трафик агента от компрометации.
- Инструменты без границ Sandbox. Shell, браузер и файловые инструменты на общем Mac могут дотянуться до пользовательских данных или секретов CI; слишком мягкие умолчания превращают prompt injection в выполнение команд с правами хоста.
- Пробелы в аудите и отсутствие HITL. JSONL без корреляции
request_idи ротации забивает диск и ломает комплаенс; необратимые действия без очереди одобрения дают «тихие операции» и риск на пуле железа.
3. Матрица: ограждение × стратегия
Левый столбец подписывает безопасность; правый — минимально жизнеспособная поза для прод-агентов на общих удалённых Mac.
| Ограждение | Рискованный shortcut | Рекомендуемый baseline |
|---|---|---|
| Исходящие домены | Разрешить весь HTTPS «ради гибкости» | Default-deny с явными FQDN по профилям; break-glass с тикетом и сроком |
| Sandbox инструментов | Тот же shell, что и у интерактивного пользователя | Отдельные корни workspace, белые списки команд, лимиты подпроцессов и wall-clock по профилю |
| Аудит JSONL | Только консольный лог | Структурированные поля: ts, request_id, actor, decision, egress_host; ротация по размеру |
| HITL | Ручное доверие на каждую сессию | Политика: высокорисковые инструменты в очередь; SLA-таймеры; эскалация по тайм-ауту |
| Секреты | API-ключи в world-readable файлах | Связка Keychain macOS или env из launchd; ACL на пути конфигурации |
| Управление изменениями | Правка JSON без диффа | Бэкап, ссылка на PR/тикет, золотой запрос на staging, архив отката |
4. Воспроизводимые фрагменты openclaw.json
Блоки ниже иллюстративны: имена ключей должны совпадать с вашей версией OpenClaw; сливайте без затирания привязок каналов и ссылок на креденшелы, держите метку времени в бэкапе на Mac. Для резервного копирования и выгрузки JSONL в расписании см. OpenClaw Gateway: Cron, бэкап и наблюдаемость JSONL на удалённом Mac 7×24.
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 инструментов (workspace и белый список команд)
{
"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, пока активен только профиль break-glass под аудитом.
5. Семишаговый runbook (удалённый физический Mac)
- Инвентаризация egress. Соберите FQDN из трасс шлюза за неделю; сравните с целевыми LLM и OAuth; уберите «неизвестные» резолвы до ужесточения.
- Бэкап и ветка конфигурации.
cp openclaw.json openclaw.json.bak.$(date +%Y%m%d%H%M); приложите дифф к тикету. - Слияние блоков outbound и Sandbox. Сначала
defaultPolicy: deny, затем белые списки; привяжитеnetworkинструментов к тем же именам профилей. - JSONL-аудит и ротация. Каталог логов — только для пользователя шлюза; при политике — выгрузка ротированных файлов в центральное хранилище.
- HITL для высокорисковых инструментов. Начните с платежей и прод-оркестрации; для staging используйте
dryRunChannels. - Золотые тесты на localhost. Один разрешённый запрос, один намеренный deny (ожидайте структурированную блокировку в аудите), одна постановка в HITL с путями одобрения и тайм-аутом.
- Наблюдаемость и ревью. Дашборды: доля deny, глубина очереди HITL, сбои записи аудита; в календарь — квартальный пересмотр белого списка и команд Sandbox.
6. Разбор deny и HITL
| Симптом | Вероятная причина | Действие |
|---|---|---|
| Всплеск событий deny | Новый upstream или расклад CDN | Дифф недавних промптов/инструментов; добавьте FQDN с тикетом; избегайте широких масок без необходимости |
| В dev работает, в prod блок | Несовпадение профиля или более строгий Sandbox | Сравните activeProfile и workspaceRoots; выровняйте маппинг канал→профиль |
| Очередь HITL забита | Слишком много инструментов в классе одобрения | Сузьте шаблоны requireApprovalFor; добавьте согласующих в рабочие часы; удлиняйте тайм-аут только после разбора SLA |
| Файл аудита пропал днём | Ротация, права или заполнение диска | Проверьте df и stderr launchd; алертьте сбои приёмника аудита отдельно от ошибок запросов |
| Ложное чувство безопасности | Белый список без усиления ОС | Парами: FileVault, пользователь с минимальными правами, автообновления безопасности и сетевые контролы на Mac |
7. Цифры для цитирования (runbook)
- Ротация JSONL:
rotateBytes: 268435456(256 МиБ) на файл перед выгрузкой в холодное хранилище — баланс между криминалистикой и давлением на inode в APFS. - Ожидание HITL по умолчанию:
timeoutMs: 300000(пять минут) для внутренних очередей ops; короче для клиентских ботов после измерения p95 времени одобрения. - Wall-clock Sandbox:
wallClockMs: 120000(две минуты) как первый потолок для нестриминговых цепочек — повышайте только с тикетом и профилированием.
8. FAQ
Заменяет ли белый список доменов корпоративный фаервол для egress OpenClaw?
Нет. Белый список — политика уровня приложения; периметр и фаерволы хоста по-прежнему важны. Накладывайте слои: сетевые контролы для Mac и явные FQDN внутри OpenClaw.
Что относится к Sandbox инструментов, а что к усилению ОС?
Sandbox ограничивает команды и пути агента; Gatekeeper, SIP, FileVault и каденция патчей защищают систему. Нужны оба слоя.
Как долго хранить JSONL на общем удалённом Mac?
Обычно 30–90 дней горячо на диске, дольше — в неизменяемом объектном хранилище при требованиях комплаенса; всегда ротируйте и выгружайте в SIEM — не один бесконечно растущий файл без бэкапа.
Когда обязателен человек в контуре?
Для необратимых или высокорисковых действий: платежи, изменения в проде, массовые коммуникации или широкий egress. Диалог оставляйте автоматическим только если исходящая политика и Sandbox уже ограничивают риск.
Нужен ли рестарт шлюза после правок outbound или Sandbox?
Часть ключей может подхватиться горячей перезагрузкой; привязки TLS, профили песочницы или env launchd часто требуют reload. Проверяйте на staging одним золотым запросом до прода.
9. Итог и выбор узла
Исходящее управление превращает трафик агента в аудируемый контракт: egress по умолчанию запрещён, инструменты в Sandbox, структурированный JSONL и HITL там, где ошибка дорога. Такой стек позволяет держать OpenClaw на общих физических Mac, не превращая каждый узел в универсальный egress-реле.
macOS добавляет устойчивую ценность для безлюдных шлюзов: Gatekeeper, SIP и FileVault снижают классовый риск вредоносного ПО относительно типичных баз Windows; нативный Unix-стек и стабильный надзор launchd удерживают дрейф конфигурации на виду. Mac mini M4 — часто около 4 Вт в простое, бесшумно и надёжно для нагрузок 7×24 — подходит под шлюз и лёгкие инструменты без стойки. Те же политики на железе ZoneMac совпадают с реальными путями SSH и файлов в runbook.
Если нужны ограждения OpenClaw на предсказуемом Apple Silicon с минимальным операционным шумом, Mac mini M4 — сильная стартовая точка: оформите удалённый физический Mac через ZoneMac и закрепите этот runbook на выделенном узле.
Нужен физический Mac под исходящую политику OpenClaw?
Аренда Mac mini в ZoneMac: реальное железо, launchd-надзор, JSONL на APFS и SSH для runbook — без шумных общих ВМ.