Безопасность
Что хранится на вашем сервере, что уходит наружу, как защищены ключи и что записывается в журнал. В конце — честный список того, чего платформа пока не умеет.
Что остаётся у вас, что уходит наружу
Платформа, база и рабочие каталоги агентов работают на вашем сервере. Удалённого доступа к нему у нас нет.
- Трафик к модели можно пустить через корпоративный HTTPS-прокси.
- Фоновая телеметрия агента выключена.
- Работу полностью без сети платформа не поддерживает: каждому шагу агента нужен ответ модели.
| Данные | Где они |
|---|---|
| Репозитории и рабочие каталоги агентов | На вашем сервере |
| История сессий и очереди задач | На вашем сервере |
| SSH-ключи, токены, учётные данные интеграций | На вашем сервере, в базе, в зашифрованном виде |
| Запросы к модели | Уходят провайдеру, которого выбрали вы. В запросах есть код из контекста агента |
| Запросы к облачным трекерам, git-хостингам и MCP-серверам | Уходят в эти сервисы, если вы их подключили |
| Обновления | Релизы скачиваются с нашего сервера релизов, подписаны; компоненты — с серверов их авторов, по закреплённым контрольным суммам |
Песочница
Каждый процесс агента запускается в песочнице bubblewrap. Корень файловой системы внутри неё смонтирован только для чтения. Писать агент может в свой рабочий и домашний каталог, в /home и в кэши. Каталог /tmp у каждого процесса свой.
Юнит systemd запрещает повышать привилегии (NoNewPrivileges) и защищает системные каталоги (ProtectSystem=strict). Сам сервис видит /home только для чтения (ProtectHome=read-only), но песочница агента отдельно открывает /home на запись — это ограничение из списка ниже. sudo внутри песочницы нет.
Чтение между песочницами пока не изолировано: корень файловой системы смонтирован, а не скрыт, поэтому агент видит файлы вне своего каталога. Закрыть чтение между песочницами — в планах.
Ключи и пароли
Мастер-ключ передаётся сервису через учётные данные systemd (LoadCredential). Файл ключа доступен только root.
Из мастер-ключа по HKDF-SHA256 выводятся отдельные ключи подсистем. Ими по AES-256-GCM шифруются SSH-ключи и токены git, OAuth-токены интеграций, секреты удалённых серверов, корневой ключ центра сертификации и токены учётных записей провайдера модели.
Пароли хешируются Argon2id. Токены сессий и API хранятся только в виде хешей.
Вход и доступ
Учётные записи создаёт администратор в веб-консоли или командой remote-hangar users:create. Ролей две: администратор и пользователь.
Вход через OIDC включается по желанию и работает с discovery и PKCE. Учётная запись создаётся при первом входе.
Cookie сессии защищены флагами httpOnly, SameSite=strict и secure. Пользователь видит свои сессии и может их завершить. После неудачных попыток входа платформа блокирует вход с нарастающей задержкой — по пользователю и по IP-адресу.
API-токены выдаются со скоупами, отзываются сразу и по умолчанию живут 90 дней.
Что записывается в журнал
Журнал хранится в SQLite. Пользователь читает свои записи через GET /api/audit.
- Каждое решение о разрешении инструмента: разрешено или запрещено и кто решил — правило (белый или чёрный список), человек или тайм-аут.
- Операции с учётными данными git.
- Вызовы администратора на удалённых серверах.
| Не пишется в журнал | Где искать |
|---|---|
| Входы в систему | Лог приложения |
| Управление пользователями и настройками | Лог приложения |
| Выпуск API-токенов | Лог приложения |
| Ходы Public API | Лог приложения и метрики Prometheus |
Подписанные обновления
Манифест каждого релиза подписан minisign. Ключа подписи нет на сервере, который раздаёт релизы. Перед установкой ваш сервер проверяет подпись и контрольные суммы.
Если на сервере нет утилиты проверки подписи, установщик только предупреждает. Флаг --require-signature делает проверку обязательной.
Обновление устанавливается только в окно обслуживания и только когда агенты простаивают. Перед обновлением платформа снимает копию базы, а при неудачной проверке работоспособности возвращает прежнюю версию кода и схемы базы.
Чего платформа пока не умеет
Список держим открытым, чтобы вы решали, зная ограничения.
- Чтение между песочницами не изолировано. Каталог /home открыт на запись во всех песочницах.
- Ролей две — администратор и пользователь. Тонкой настройки прав нет.
- Писем платформа не отправляет: приглашений и сброса пароля по почте нет.
- Вход через OIDC не ограничивает группы: учётную запись получит любой, кто может войти у вашего провайдера удостоверений.
- Секреты в config.env — ключ провайдера модели, секрет OIDC — лежат открытым текстом, права файла 0640: его читают root и группа сервиса. Песочницы работают от имени сервиса, поэтому агенты, скорее всего, тоже могут его прочитать, пока чтение между песочницами не закрыто.
- Сокет Docker, если его включить, даёт агентам доступ к хосту.
- Терминал администратора работает вне песочницы.
- Защита от CSRF по умолчанию только записывает нарушения в лог.
- Резервные копии делаются вручную командой remote-hangar backup. Сама платформа снимает копию базы только перед обновлением.
- Платформа работает на одном сервере.
- Внешнего аудита безопасности и сертификации не было.
Пришлите вопросы вашей службы безопасности
Ответим письменно или на звонке, покажем настройки на тестовом сервере.
Обсудить пилот