Перейти к содержанию

Безопасность

Что хранится на вашем сервере, что уходит наружу, как защищены ключи и что записывается в журнал. В конце — честный список того, чего платформа пока не умеет.

Что остаётся у вас, что уходит наружу

Платформа, база и рабочие каталоги агентов работают на вашем сервере. Удалённого доступа к нему у нас нет.

  • Трафик к модели можно пустить через корпоративный 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. Сама платформа снимает копию базы только перед обновлением.
  • Платформа работает на одном сервере.
  • Внешнего аудита безопасности и сертификации не было.

Пришлите вопросы вашей службы безопасности

Ответим письменно или на звонке, покажем настройки на тестовом сервере.

Обсудить пилот