Почему диск и shell требуют взрослых настроек по умолчанию
Интерактивные демо поощряют широкие права: человек замечает ошибки до инцидента. Продакшен-агенты крутятся без присмотра, повторяют вызовы инструментов и местами творчески читают инструкции. Если POSIX-пользователь за шлюзом читает секреты, меняет репозитории или поднимает shell без узких рабочих каталогов, вы делегировали root-подобную гибкость стохастическому процессу.
workspaceAccess — декларативное описание того, какие деревья — легитимный контекст, а что шум ФС. Отражайте раскладку репозитория, выходы сборки и пути, которые никогда не должны попадать в ответы инструментов. Это правила файрвола: явные разрешения и документированные исключения, а не молчаливое разрешение на $HOME.
Shell-инструменты усиливают риск: наследуют переменные окружения, алиасы и иногда пути из login-скриптов. Даже только читающие файловые инструменты могут просочить структуру для цепочек промптов. Пишущие инструменты перезаписывают конфигурацию, которую шлюз подхватит при следующем старте, превращая одну плохую автоматизацию в устойчивый компромисс.
Минимальные привилегии — не только Unix. Это политика модели: кто может вызывать мутирующие инструменты, кто остаётся только чтением, кому нужно человеческое подтверждение. Статья про human-in-the-loop и Lobster подходит, когда нужны структурированные одобрения вместо тихого shell.
Эксплуатационные команды ценят повторяемую диагностику. Когда права дрейфуют, симптомы похожи на нестабильные каналы или загадочные «файл не найден». Лестница статус шлюза, doctor, логи удерживает инциденты ИБ в знакомом playbook, а не в вики «только для паники».
Конфигурация мигрирует: ноутбук с мягким workspaceAccess копируют в CI и затем в клиентский шлюз. Кодируйте продакшен-позу в версионируемом конфиге, ревьюйте как код приложения, проверяйте откаты привычками из руководств по установке и откату.
Общие build-хосты и мультитенант усиливают ошибки: workspace агента, видящий чужие артефакты, ждёт неверного промпта, чтобы стать утечкой конфиденциальности. Разделяйте пользователей, корни или машины. Фиксируйте границу в онбординге, чтобы новички не размывали её ради удобства.
Количественный мониторинг важен не меньше деклараций. Считайте отказы по путям, вызовы shell в час, уникальные файлы за сессию. Всплески часто предшествуют сбежавшей автоматизации или prompt injection через чтение файлов.
Обратный прокси и TLS-край не заменяют политику ФС, но формируют доверие к удалённым плоскостям управления. Держите TLS и origin согласованными с руководством по обратному прокси, чтобы админ-интерфейсы не оказались открытыми, пока вы сжимаете локальный диск.
Болевые точки
1. Пользователь шлюза слишком могуществен. Если сервисный аккаунт читает .ssh, кэши облачных CLI или профили браузера, любой файловый инструмент становится каналом выноса секретов. Сначала сожмите учётку, потом спорьте о выравнивании модели.
2. Записываемый workspace — риск цепочки поставок. Агенты, патчащие package.json, профили shell или конфиг шлюза на диске, могут закреплять вред после перезапусков. Разделяйте исследовательских агентов только чтения и релизных с явными шагами продвижения.
3. Shell обходит высокоуровневый замысел. Shell связывает утилиты, которые продукт не ревьюил. Логируйте фрагменты argv, рабочие каталоги, коды выхода; блокируйте рекурсивные удаления и произвольный curl-в-файл, если политика не разрешает.
4. MCP и нативные инструменты расходятся в охвате. MCP-сервер с широким окружением достигает путей, скрытых файловыми инструментами OpenClaw. Согласуйте жизненный цикл и перезапуск с лимитами MCP stdio и транспорта, чтобы смена прав реально применялась.
5. doctor зелёный, реальность гниёт. doctor проверяет файлы и известные проверки, не каждый syscall рантайма. Добавьте ручные выборки, auditd или endpoint-логи, периодические промпты с запрещённым чтением.
Модель угроз простым языком
Предполагайте манипулируемые промпты через недоверенный контент из сети или загрузок. Предполагайте, что модель под давлением повторов иногда выполнит вредные указания. Предполагайте вставку секретов в чат. Контроли должны пережить эти дефолты.
Угрозы ФС делятся на конфиденциальность, целостность, доступность. Конфиденциальность ломается, если агенты читают учётки или данные клиента вне тикета. Целостность — при перезаписи кода или конфигурации. Доступность — при fork bomb, заполнении диска или удалении артефактов shell-инструментами.
Сетевые шлюзы добавляют класс: достигнув канала управления, атакующий может удалённо провоцировать вызовы инструментов. Поэтому входное усиление из статей про SSRF и webhooks в продакшене в одной программе с лимитами диска. Цепочки часто ведут от удалённого ввода к локальному действию.
Инсайдеры и скомпрометированные ноутбуки тоже в модели. Минимальные привилегии сужают blast radius при утечке ключа разработчика и укорачивают криминалистику: меньше учёток мутирует чувствительные деревья.
Идентичность автоматизации должна быть скучной: выделенный пользователь без интерактивного входа, без пароля, ключи только из ожидаемых сетей. На macOS-шлюзах сочетайте с паттернами демонов из матриц launchd и systemd, чтобы перезапуски были чистыми без «временного» расширения прав.
Цепочка зависимостей: агенты, ставящие пакеты, могут тянуть вредоносные скрипты. Если установки нужны — только в эфемерных средах или выделенных build-хостах, не на узле с ключами подписи.
Матрица решений для workspace и командной позы
| Поза | Сила | Операционные затраты | Риск при ошибке | Лучше всего для |
|---|---|---|---|---|
| Узкий корень workspaceAccess | Ясный blast radius для файловых инструментов | Рефактор путей при переезде репо | Сломанная сборка, если исключения прячут заголовки | Автоматизация одного репозитория |
| Профиль инструментов только чтение | Безопасные исследовательские и triage-агенты | Второй профиль для релизов | Трение, когда ждут записи | Помощники поддержки |
| Разные пользователи шлюза по средам | Сильная изоляция секретов | Больше юнитов и ротация ключей | Дрейф конфигурации между средами | Регулируемые или мультитенант команды |
| Белый список shell или обёртка | Блок сюрприз-конвейеров | Поддерживать список при эволюции инструментов | Ложноотрицательные обходы через интерпретаторы | Высокорисковые продакшен-кластеры |
| Мягкая песочница онбординга | Быстрая итерация для новичков | Нужно осознанно выводить из эксплуатации | Случайное попадание в прод | Только учебные хосты первой недели |
Выберите строку по умолчанию для продакшена, более мягкую — только на одноразовых хостах, планируйте квартальные обзоры: репозитории растут новыми чувствительными каталогами.
Как объявить границы и проверить их
{
"workspaceAccess": {
"root": "/var/openclaw/work/crm-sync",
"allowReadGlobs": [
"/var/openclaw/work/crm-sync/**",
"/var/openclaw/shared/readme/**"
],
"denyGlobs": [
"**/.ssh/**",
"**/.aws/**",
"**/.config/gcloud/**",
"/var/openclaw/secrets/**"
]
},
"agents": {
"profiles": {
"readonly-triage": { "tools": { "shell": false, "fileWrite": false } },
"release-bot": { "tools": { "shell": "restricted", "fileWrite": true } }
}
}
}
Имена полей зависят от дистрибутива; JSON — структурный ориентир. Секреты — в переменных окружения или vault, не inline в файлах, читаемых агентами.
Шаг 1 отметьте все пути playbooks, кэши, тестовые фикстуры, сгенерированные каталоги. Шаг 2 задайте workspaceAccess на минимальный корень, при котором ещё собирается. Шаг 3 разделите профили: только релизная автоматизация пишет или вызывает shell. Шаг 4 холодный перезапуск, openclaw doctor, сверка с проверками канала из эксплуатации шлюза. Шаг 5 три скриптовых теста: разрешённое чтение, отказ, одобренная запись, логи с редактированием аргументов. Шаг 6 владельцы и откат по снимкам из гайдов установки. Шаг 7 лимиты порождения сессий согласовать с сессиями и allowAgents, чтобы параллелизм не размножал shell.
Количественные ограничители
Следите за вызовами shell на автоматизацию в час, пороги оповещений по рабочим часам. Резкое удвоение часто — runaway или атака промптом.
Считайте отказы по путям отдельно от прочих ошибок инструментов. Стабильная база отказов здорова; всплик требует разбора даже без жалоб.
Дескрипторы файлов и дочерние процессы на одной панели с CPU и RAM. Утечки MCP или shell видны раньше «тяжёлых» каналов.
Мониторьте свободное место на томах артефактов. Агенты с большими загрузками заполняют разделы; квоты и отдельные тома для сборок.
Хранение логов минимум на два релизных цикла, чтобы связать плохой деплой с новыми правами инструментов. Ротация — как в ваших статьях про единое логирование SFTP и шлюзов.
SLO на длительность перезапуска после смены прав. Медленный перезапуск избегают — растёт дрейф. Матрицы здоровья демонов стабилизируют время.
Ежеквартально проверяйте эффективные права скриптом, ищущим world-readable файлы с BEGIN PRIVATE KEY под корнем workspace. Автоматизация ловит человеческие промахи.
p95 латентности вызовов инструментов; резкий рост может значить обход каталогов из-за слишком широких glob. Сужайте, когда метрики оправдывают работу.
Онбординг и продакшен, лестница doctor
Онбординг может быть быстрым, продакшен — скучным. Разные хосты или контейнеры, разные корни workspaceAccess, разные API-ключи. Не копируйте мягкий ноутбучный JSON в клиентский шлюз «ради демо».
Учите новых инженеров той же лестнице, что эксплуатацию: статус шлюза, здоровье процесса, openclaw doctor, структурированные логи. Это официальная линия разбора, без мистики вокруг каждого усиления.
Сжимайте права в окне чистого перезапуска. Частичное применение — тот же класс отказов, что у транспортов MCP; холодный перезапуск против зомби-серверов инструментов.
Задокументируйте, какие автоматизации могут звать shell, какие только файлы. Матрица рядом с runbook инцидентов, чтобы дежурный не гадал.
Порядок чтения: эксплуатация и doctor, затем сессии и allowAgents, затем жизненный цикл MCP, затем эта статья, затем продакшен-усиление в духе SSRF и TLS обратного прокси. В инциденте важнее предсказуемость, чем новизна.
Соединяйте технические и людские меры: ревью JSON, второй обязательный ревьюер для shell-профилей, периодические учения с вредоносным промптом.
Рекомендуемый порядок чтения: статус шлюза и doctor, лимиты spawn сессий, транспорты MCP, усиление workspace, исходящее мышление SSRF, TLS-край, откат установки, здоровье демонов. Одинаковые закладки в регионах — общий язык команд.
Глоссарий
workspaceAccess задаёт области ФС в области видимости вызовов инструментов для экземпляра шлюза.
Минимальные привилегии выдают минимум прав на задачу автоматизации.
Shell-инструмент открывает выполнение команд ОС модели через контролируемый интерфейс.
Файловый инструмент читает или пишет структурированный контент без обязательного shell.
Профиль только чтение — осмотр без мутаций, удобно для triage-ботов.
Релизный профиль может писать артефакты сборки или мержить коммиты по явной политике.
Холодный перезапуск полностью останавливает шлюз, очищая кэш и дочерние процессы.
openclaw doctor выполняет статические проверки конфигурации и окружения.
Статус шлюза суммирует здоровье процесса, каналы, иногда дрейф версий.
allowAgents ограничивает типы или профили агентов при частом spawn сессий.
MCP-сервер расширяет инструменты отдельным процессом или HTTP с собственными правами.
Инъекция промпта — недоверенный текст, пытающийся перебить намерение оператора.
Blast radius — насколько далеко расползается компромисс по ФС и идентичностям.
Пользователь POSIX — учётная запись ОС, от которой наследуются привилегии вызовов.
Deny-glob блокирует пути даже под разрешённым деревом.
Аудит-лог фиксирует решения инструментов с редактированием аргументов.
Поза онбординга временно ослабляет контроль на одноразовых хостах.
Продакшен-поза увеличивает трение для опасных операций при сохранении пропускной способности для одобренных задач.
Человек в контуре требует одобрения чувствительных вызовов инструментов.
Цепочка поставок — зависимости, подтягиваемые при сборке или установке в рантайме.
Эфемерная среда кратковременна и уничтожается после задачи.
Шторм spawn сессий — избыток параллельных агентов из-за багов или автоматизации.
argv инструмента — аргументы shell, их нужно аккуратно логировать.
Рабочий каталог задаёт относительные пути для shell и файла.
Дрейф конфигурации — тихое расхождение документации и текущего JSON.
Снимок отката сохраняет исправную конфигурацию перед рискованными правками.
Хостинг удалённого Mac — управляемое железо Apple для шлюзов и доставки артефактов по моделям SFTP.
FAQ и мост к хостингу Mac
Доказывает ли doctor, что модель не выйдет из workspace?
Нет. doctor ловит ошибки конфигурации; права ОС, раздельные учётки и мониторинг остаются нужны. Синтетические промпты с запретным чтением и проверка отказов в логах.
Делить ли пользователя шлюза между онбордингом и продакшеном?
Избегайте. Если нельзя — изолируйте профили, ключи, корни; не тащите продакшен-секреты на учебные хосты.
Где MCP в минимальных привилегиях?
Каждый сервер — своя граница. Перезапуск после транспорта или прав; читайте руководство MCP stdio, чтобы не оставлять процессы.
Итог: workspaceAccess и область shell — контроли безопасности продакшена. Наслаивайте статус шлюза, openclaw doctor и структурированные логи так же, как при разборе каналов.
Ограничения: Самохостинг объединяет риск модели и ОС. Хостинг удалённого Mac SFTPMAC даёт управляемый узел, который сочетается с дисциплинированными шлюзами OpenClaw и стабильной доставкой артефактов.
Сообщайте порядок чтения во все регионы, чтобы инциденты не распались на несовместимые playbook.
Изучите SFTPMAC, если нужна платформа удалённого Mac с уважением к продакшен-границам и предсказуемыми шлюзами и передачей файлов.
