4.4 KiB
Модель безопасности
Защищаемые данные
- учётные записи и сессии пользователей;
- device, agent, SSH и WireGuard identities;
- команды, терминальные сессии и аудит;
- topology серверов, адреса и метрики;
- права автоматизаций, включая Hermes.
Границы доверия
Desktop client, control node и каждый agent считаются отдельными субъектами. Компрометация одного агента не должна выдавать ключи других узлов или право создавать новые Links. Control node координирует публичные параметры и политики, но не хранит приватные WireGuard/SSH-ключи узлов.
В первом SSH-MVP control node отсутствует. Windows-клиент генерирует отдельный Ed25519-ключ, а сервер привязывает его к restrict,command. Этот ключ предназначен только для чтения ограниченного snapshot метрик и не используется для интерактивного терминала или Hermes.
Регистрация агента
- Пользователь создаёт одноразовый enrollment token со сроком жизни не более 10 минут.
- Агент генерирует ключевую пару локально.
- По TLS агент предъявляет token и публичный ключ.
- Control node выдаёт agent certificate и помечает token использованным.
- Последующие соединения требуют mTLS. Повторное использование token отклоняется.
Авторизация
- read-only мониторинг отделён от управления;
- команды проверяются по типу ресурса и действию;
- полный терминал требует свежего подтверждения пользователя;
- создание Link требует точного набора маршрутов/портов, пустой набор не означает
allow all; - automation identity не наследует интерактивные права владельца;
- команды имеют срок действия, nonce/idempotency key и защиту от replay.
Аудит
Записываются входы, регистрация устройств, изменение прав, команды, начало и завершение терминала, создание/подключение/отключение Link. Секреты и полный ввод терминала по умолчанию не журналируются. Аудит экспортируется во внешний append-only storage; локальный администратор control node всё равно считается способным изменить локальную БД.
Kill switch
Отключение Link должно:
- перевести желаемое состояние в
Disabled; - удалить peer и маршруты на доступных узлах;
- заблокировать повторное автоматическое включение;
- сохранить обязательную команду для временно недоступного узла;
- показать пользователю разницу между желаемым и фактическим состоянием.
Кнопка не должна сообщать «отключено», пока оба узла не подтвердили применение или интерфейс явно не показывает частичное отключение.
Не входит в первый MVP
- выполнение произвольных root-команд из веб/API;
- хранение пользовательских приватных SSH-ключей на control node;
- автоматическое соединение всех серверов группы в одну flat network;
- публичный входящий порт агента;
- собственная криптография вместо TLS, SSH и WireGuard.