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