openclaw-runtime), метки launchd, версионируемый белый список EU egress, закрепление Node 24 и OpenClaw v2026.5.x, а также связка openclaw onboard, openclaw gateway status и openclaw doctor --non-interactive как артефакт приёмки. Это операционное описание, не юридическая консультация.
Материал про маскирование полей JSONL и merge с doctor оставьте для гигиены событий; здесь фокус на идентичностях macOS, владельце launchd и явном allowlist исходящих, чтобы закупка и аудит читали два непересекающихся приложения.
- Риск 1: если
openclaw onboardвыполнялся под тем же пользователем, что иsudo, любая утечка SSH-сессии превращается в правку конфигурации и токенов. - Риск 2: без зафиксированного файла allowlist «EU egress» остаётся тезисом слайда, который
openclaw doctorне может сравнить с продом. - Риск 3: интерактивный doctor в пайплайне даёт неповторяемые доказательства; аудиторам нужен
--non-interactiveи semver в заголовке отчёта.
| Поза | Радиус компрометации runtime | Артефакт для тикета |
|---|---|---|
| Один админ | Высокий | Скриншоты, не SHA |
| Админ + openclaw-runtime | Сниженный | Plist UserName + SHA YAML + лог doctor |
| Runtime + deny-by-default egress | Практический минимум | PR allowlist + JSON gateway status |
Модель учётных записей
Зарезервируйте арендованный административный аккаунт только для softwareupdate, патчей Xcode и аварийного обслуживания диска. Создайте openclaw-runtime как обычного пользователя macOS без вхождения в группу админов: отдельный домашний каталог, отдельная политика SSH-ключей и хранилище секретов с контролем доступа.
Не симлинкуйте node_modules из профиля администратора в дерево runtime: переустановите CLI после смены владельца, чтобы динамические импорты резолвились внутри домашнего каталога runtime и не тянули привилегированные пути.
На тикете изменения перечислите оба UID, перечень лиц с правом sudo и процедуру four-eyes перед переносом секретов из staging. Это снижает вероятность «случайного» запуска шлюза под админом после ночного патча.
Метки launchd и владение процессом
Используйте домен LaunchAgent с меткой вида com.openclaw.gateway в ~/Library/LaunchAgents/ внутри профиля runtime, если политика площадки не требует явного /Library/LaunchDaemons. Системные демоны усложняют разграничение прав и аудит владельца plist.
В plist укажите UserName на openclaw-runtime, зафиксируйте WorkingDirectory на корень конфигурации и подберите ThrottleInterval, чтобы флап шлюза не бил разрешённые API во время частичных аварий магистрали.
После каждого изменения plist выполните launchctl bootout и bootstrap от имени runtime; сразу сохраните вывод openclaw gateway status, чтобы саппорт видел тот же JSON, что попадёт в CI-архив.
Шаблон белого списка EU egress
Держите FQDN в Git, а не в чате. Ниже — форма, которую переименуйте под фактическую схему безопасности OpenClaw; подставляйте только хосты, одобренные counsel и сетевой командой.
version: 1 profile: eu-continental notes: > Тот же путь файла должен фигурировать в выводе doctor до merge. allow_tls_hosts: - api.eu.example-scratchpad.dev - git.example-corp.internal - registry.example-corp.internal deny_regex: - ".*\\.consumer-cloud\\.tld$"
Подключите файл через security hook из публичной документации OpenClaw, чтобы openclaw doctor показывал отсутствующие хосты до merge, а не после полуночного инцидента. Совместите вывод doctor с тем же списком, который проверяет egress-политика на границе корпоративного прокси.
Шесть минимально воспроизводимых шагов
- Базовая линия: по SSH под break-glass-админом установите Node 24, закрепите OpenClaw v2026.5.x, выполните
openclaw onboardи сохраните первый дампopenclaw gateway status. - Разделение: создайте
openclaw-runtime, перенесите конфигурации и переустановите пакеты так, чтобы все пути жили под новым домом. - launchd: разместите plist, загрузите агент от runtime, проверьте метку через
launchctl print gui/$uid/com.openclaw.gateway. - PR allowlist: закоммитьте YAML, потребуйте ревью security, merge только после двух подписей на реестре хостов.
- Гейт CI: выполните
openclaw config validateиopenclaw doctor --non-interactive; валите job при появлении новых предупреждений выбранного класса. - Пост-деплой: зайдите как runtime, снова выполните
openclaw gateway status, приложите логи и контрольную сумму plist к тикету.
Чек-лист приёмки
openclaw gateway statusпоказывает здоровые слушатели, аwhoamiв сессии шлюза —openclaw-runtime.- Метка launchd совпадает с документированной строкой и переживает перезагрузку без интерактивного входа администратора.
- Вывод doctor перечисляет каждый TLS-хост, к которому шлюз обращался в дымовом тесте.
- Бинарник Node указывает на ветку 24, а
openclaw --versionпечатает v2026.5.x. - Административный break-glass не логинился семь календарных дней подряд вне окна обслуживания.
Цитируемые инженерные сигналы
- Две POSIX-учётные записи минимум в акте: привилегированный установщик и постоянный владелец шлюза.
- Один SHA YAML, на который ссылаются и staging, и production change record.
- Лог doctor --non-interactive байт-в-байт совпадает между артефактом CI и пост-проверкой прода.
FAQ
Справка, блог и тарифы после настройки разделения учётных записей
Откройте раздел блога для матриц задержек и сопутствующих гайдов; сверьте тарифы и пакеты; по SSH и доступу — справочный центр.