OpenClaw работает как персональный ассистент. Безопасность строится вокруг модели «один доверенный оператор на Gateway».
Модель доверия
OpenClaw — это не система для нескольких враждебных пользователей. Это персональный ассистент: один оператор, один Gateway, несколько агентов.
Ключевые правила:
~/.openclaw/ — тот и оператор. Файлы конфигурации и credentials определяют доверенный контур.sessionKey) — это маршрутизаторы, не авторизация. Не используйте их как защиту.Shared Slack workspace: реальный риск
Если «все в Slack могут писать боту» — основной риск делегированное управление инструментами:
exec, браузер, файловые инструменты в рамках политики агентаРешение: отдельные агенты/Gateway с минимальными инструментами для командных workflow. Личные агенты — приватными.
Company-shared agent: допустимый паттерн
Если все пользователи в одном контуре доверия (например, одна команда):
Смешивание личных и рабочих аккаунтов на одном runtime увеличивает риск утечки персональных данных.
Быстрая проверка
openclaw security audit # базовая проверка
openclaw security audit --deep # глубокая проверка
openclaw security audit --fix # исправить проблемы
openclaw security audit --json # JSON-вывод
security audit --fix исправляет:
logging.redactSensitive: "tools"Кто может писать боту
Настройте dmPolicy для каждого канала:
pairing (по умолчанию) — новые отправители получают код одобренияallowlist — только из списка allowFromopen — всем (осторожно!)disabled — никому{
channels: {
telegram: {
dmPolicy: "allowlist",
allowFrom: ["tg:123456789"],
},
},
}
Авторизация Gateway
Gateway защищён токеном или паролем. При установке токен генерируется автоматически.
Если вы открываете Gateway наружу (Tailscale, публичный IP) — обязательно настройте авторизацию:
{
gateway: {
auth: {
mode: "token",
token: "ваш-секретный-токен",
},
},
}
Режимы авторизации: token, password, trusted-proxy.
Trusted Proxy Auth (аутентификация через прокси)
Когда OpenClaw работает за прокси с идентификацией (Pomerium, Caddy + OAuth, nginx + oauth2-proxy, Traefik), можно делегировать аутентификацию прокси.
Когда использовать
- Прокси обрабатывает OAuth/OIDC/SAML и передаёт идентификатор пользователя через заголовки
- Kubernetes/контейнерная среда, где прокси — единственный путь к Gateway
- Ошибки WebSocket
1008 unauthorized(браузеры не передают токены в WS payload)
Конфигурация
{
gateway: {
bind: "lan",
trustedProxies: ["10.0.0.1"], // только реальные IP прокси
auth: {
mode: "trusted-proxy",
trustedProxy: {
userHeader: "x-forwarded-user",
requiredHeaders: ["x-forwarded-proto"],
allowUsers: ["nick@example.com"],
},
},
},
}
Примеры прокси
| Pomerium | x-pomerium-claim-email |
| Caddy + OAuth | x-forwarded-user |
| nginx + oauth2-proxy | x-auth-request-email |
| Traefik + Forward Auth | x-forwarded-user |
Важные правила
- Trusted-proxy отклоняет loopback-запросы (
127.0.0.1,::1) - Не устанавливайте одновременно
gateway.auth.tokenиtrusted-proxy trustedProxies— только реальные IP прокси, не подсети- Non-loopback Control UI требует явного
gateway.controlUi.allowedOrigins
Чеклист безопасности
- Порт Gateway закрыт файрволом от всего, кроме прокси
- Прокси перезаписывает (не дополняет) заголовки
x-forwarded-* - Прокси обрабатывает TLS; пользователи подключаются по HTTPS
allowUsersзадан (ограничивает список пользователей)
Типичные ошибки
trusted_proxy_untrusted_source |
Запрос не из trustedProxies |
trusted_proxy_loopback_source |
Loopback-прокси на том же хосте |
trusted_proxy_user_missing |
Заголовок пользователя пуст/отсутствует |
trusted_proxy_user_not_allowed |
Пользователь не в allowUsers |
Авторизация провайдеров
API-ключи хранятся в ~/.openclaw/agents/.
Настройка через env
export OPENAI_API_KEY="sk-..."
openclaw models status
Для systemd/daemon — кладите ключи в ~/.openclaw/.env:
cat >> ~/.openclaw/.env
Проверка авторизации
openclaw models status # статус моделей
openclaw models status --check # exit 1 если истёк/отсутствует
openclaw models status --probe # live-probe авторизации
Claude CLI
Для Anthropic можно переиспользовать локальный логин Claude CLI:
claude auth login
openclaw models auth login --provider anthropic --method cli --set-default
Sandbox (изоляция)
По умолчанию агент выполняет код на вашей машине. Можно включить изоляцию:
{
agents: {
defaults: {
sandbox: {
mode: "non-main", // off | non-main | all
scope: "session", // agent | session | shared
backend: "docker", // docker | ssh | openshell
},
},
},
}
Что изолируется
exec, read, write, edit, apply_patch, process)sandbox.browser)Что НЕ изолируется
tools.elevated) — обходит sandbox!Режимы
| Режим | Описание |
|---|---|
| `off` | Без sandbox |
| `non-main` | Sandbox только для не-main сессий |
| `all` | Все сессии в sandbox |
Scope (область)
| Scope | Описание |
|---|---|
| `agent` | Один контейнер на агента |
| `session` | Один контейнер на сессию |
| `shared` | Один контейнер на все sandbox-сессии |
Бэкенды
| Бэкенд | Где запускается | Настройка |
|---|---|---|
| **Docker** | Локальный контейнер | `scripts/sandbox-setup.sh` |
| **SSH** | Любой SSH-хост | SSH-ключ + целевой хост |
| **OpenShell** | Managed sandbox | Плагин OpenShell |
OpenShell (managed sandbox)
OpenShell — облачная managed-песочница. Не требует Docker на хосте.
Быстрый старт
{
agents: {
defaults: {
sandbox: {
mode: "all",
backend: "openshell",
scope: "session",
workspaceAccess: "rw",
},
},
},
plugins: {
entries: {
openshell: {
enabled: true,
config: {
from: "openclaw",
mode: "remote",
},
},
},
},
}
Проверка: openclaw sandbox list, openclaw sandbox explain.
Режимы рабочего пространства
mirror |
remote |
|
|---|---|---|
| Каноническое пространство | Локальный хост | Удалённый OpenShell |
| Синхронизация | Двунаправленная (каждый exec) | Однократная инициализация |
| Накладные расходы | Выше | Ниже |
| Локальные правки видны? | Да, при следующем exec | Нет, до recreate |
| Лучше для | Разработка | Долгоживущие агенты, CI |
Конфигурация OpenShell
mode |
"mirror" | "remote" |
"mirror" |
command |
Путь к CLI | "openshell" |
from |
Источник песочницы | "openclaw" |
gateway |
Имя шлюза OpenShell | — |
policy |
ID политики | — |
providers |
Провайдеры для подключения | [] |
gpu |
Запросить GPU | false |
timeoutSeconds |
Таймаут CLI | 120 |
Управление
openclaw sandbox list # все среды (Docker + OpenShell)
openclaw sandbox explain # эффективная политика
openclaw sandbox recreate --all # пересоздать
Пересоздавайте после изменения sandbox.backend, openshell.config.from, openshell.config.mode или openshell.config.policy.
Ограничения
- Браузер в песочнице не поддерживается на OpenShell
sandbox.docker.bindsне применяется к OpenShell
Elevated mode (повышенный режим)
Когда агент работает внутри песочницы, его команды exec ограничены средой песочницы. Повышенный режим (elevated mode) позволяет агенту выйти за пределы песочницы и выполнять команды на хосте.
Повышенный режим изменяет поведение только когда агент запущен в песочнице. Для агентов без песочницы exec и так выполняется на хосте.
Директивы
/elevated on |
Выполнять вне песочницы, с подтверждениями |
/elevated full |
Выполнять вне песочницы, без подтверждений |
/elevated off |
Вернуться в песочницу |
Сокращённый вариант: /elev on|off|full. Без аргумента — показать текущий уровень.
Конфигурация
{
tools: {
elevated: {
enabled: true,
allowFrom: {
telegram: ["123456789"],
whatsapp: ["+79001234567"],
},
},
},
}
Порядок приоритета
- Встроенная директива в сообщении (только для этого сообщения)
- Переопределение сессии (отправка сообщения только с директивой)
- Глобальное значение (
agents.defaults.elevatedDefault)
Списки допуска
- Глобально:
tools.elevated.enabled+tools.elevated.allowFrom - Per-агент:
agents.list[].tools.elevated(может только ограничивать) - Discord fallback: если
tools.elevated.allowFrom.discordне указан, используетсяchannels.discord.allowFrom
Что elevated НЕ контролирует
- Политика инструментов: если
execзапрещён политикой, elevated не переопределит - Выбор хоста: elevated не превращает
autoв свободный кросс-хостный обход
Credential storage
Где лежат секреты:
| Тип | Путь |
|---|---|
| `~/.openclaw/credentials/whatsapp/ |
|
| Telegram | конфиг/env или `channels.telegram.tokenFile` |
| Discord | конфиг/env или SecretRef |
| Auth-профили | `~/.openclaw/agents/ |
| Secrets (опц.) | `~/.openclaw/secrets.json` |
| Pairing | `~/.openclaw/credentials/ |
Рекомендации
pairing или allowlist, а не openopenclaw security audit~/.openclaw/ в зашифрованном виде