server-monitor-manager/docs/security-model.md
2026-07-15 13:27:27 +07:00

56 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Модель безопасности
## Защищаемые данные
- учётные записи и сессии пользователей;
- 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.
## Регистрация агента
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.