Безопасность
Обзор
Neotask разработан с архитектурой, ориентированной на безопасность. Gateway по умолчанию привязывается к localhost, все чувствительные данные шифруются в состоянии покоя, а выполнение команд агентов может быть изолировано в контейнерах-sandbox.
Сетевая безопасность
Только loopback по умолчанию
Gateway прослушивает только 127.0.0.1 (localhost), если только вы явно не измените режим привязки. По умолчанию нет внешнего сетевого доступа.
Аутентификация
Все WebSocket-соединения требуют аутентификации:
- Аутентификация по токену, Bearer-токен (UUID или пользовательская строка)
- Аутентификация по паролю, пароль, хешированный bcrypt
- Доверенный прокси, предварительно аутентифицированные заголовки от обратных прокси
- Локальное доверие, loopback-соединения неявно доверенные
Безопасность удалённого доступа
Для удалённого доступа рекомендуемый подход, Tailscale VPN или SSH-туннелирование, никогда не открывайте Gateway напрямую в интернет.
Сопряжение устройств
Как работает сопряжение
Каждый клиент, подключающийся к Gateway, должен быть сопряжён:
- Устройство представляет свою идентичность (отпечаток + публичный ключ)
- Gateway выдаёт запрос сопряжения (nonce)
- Устройство подписывает nonce своим приватным ключом
- Вы подтверждаете устройство через UI
- Gateway выдаёт токен устройства для будущих соединений
Модель доверия
- Локальные устройства (loopback) автоматически одобряются для удобства
- Нелокальные устройства требуют явного подтверждения
- Токены устройств хранятся локально и повторно используются при переподключении
- Устройства можно отозвать в любое время
Шифрование
Данные в состоянии покоя
- AES-256-GCM, все токены, секреты и ключи API шифруются в состоянии покоя
- Ключи, производные от машины, ключи шифрования производятся через scrypt из идентичности устройства
- Нет хранения в открытом виде, токены никогда не хранятся в открытом виде
Данные в транзите
- TLS, HTTPS для API-коммуникации
- WSS, безопасный WebSocket для подключений к Gateway (при использовании Tailscale Serve или обратного прокси)
- HMAC-подписание, целостность запросов с nonce и меткой времени
Изоляция в sandbox
Изоляция на основе Docker
Выполнение команд агентов может быть изолировано в Docker-контейнерах:
- Профили на уровне агента, каждый агент может иметь собственную конфигурацию sandbox
- Ограничения ресурсов, настраиваемые лимиты CPU, памяти и таймаутов
- Сетевая изоляция, контейнеры могут быть изолированы от сети
- Ограничение файловой системы, агенты получают доступ только к своему рабочему пространству
- Пользовательские образы, использование предсобранных образов с установленными конкретными инструментами
Области действия sandbox
| Область | Описание |
|---|---|
| На сессию | Новый контейнер для каждой сессии |
| На агента | Постоянный контейнер для каждого агента |
| Общий | Общий контейнер для всех агентов |
Доступ к рабочему пространству
Агенты в sandbox могут получать доступ к своей директории рабочего пространства (смонтированной в контейнер), но не могут получать доступ к файловой системе хоста за пределами своего рабочего пространства.
Подтверждение выполнения команд
Управляйте тем, какие команды агенты могут выполнять на узлах и хосте Gateway:
Режимы
| Режим | Описание |
|---|---|
| Allowlist | Выполняются только предварительно одобренные команды |
| Ask | Неизвестные команды запрашивают подтверждение пользователя |
| Full | Без ограничений (используйте с осторожностью) |
Конфигурация на уровне узла
Каждый узел (macOS, безголовой хост) имеет собственную конфигурацию подтверждения exec, хранящуюся локально. Вы можете разрешить конкретные бинарные файлы (например, /usr/bin/docker, /usr/local/bin/terraform), заблокировав всё остальное.
Расширенный режим
Некоторые операции требуют выполнения непосредственно на хосте Gateway (не в sandbox). Расширенный режим:
- Ограничен явным разрешением в конфигурации агента
- Доступен только на хосте Gateway
- Отключён по умолчанию
- Подлежит аудиту через логирование
Аудит безопасности
Встроенный аудит безопасности проверяет:
- Права доступа к файлам конфигурации (должны быть 600)
- Права доступа к файлам сессий
- Версию Node.js (патчи безопасности)
- Обнаружение секретов в открытом виде
- Валидацию белого списка плагинов
- Аудит открытых сетевых интерфейсов
- Полноту конфигурации аутентификации
Аудит может автоматически исправить многие проблемы, если ему дать разрешение.
Лучшие практики
- Держите Gateway на loopback, используйте Tailscale или SSH для удалённого доступа
- Включите изоляцию в sandbox, запускайте команды агентов в Docker-контейнерах
- Используйте белые списки exec, ограничивайте команды, которые агенты могут запускать на узлах
- Задайте токены аутентификации, всегда настраивайте аутентификацию по токену, даже для loopback
- Проверяйте разрешения агентов, там, где возможно, используйте минимальные профили инструментов
- Обновляйте Neotask, обновления включают патчи безопасности
- Регулярно проводите аудит, запускайте аудиты безопасности для выявления неправильных настроек
- Ограничивайте загрузку плагинов, устанавливайте только доверенные плагины