56 lines
4.4 KiB
Markdown
56 lines
4.4 KiB
Markdown
# Модель безопасности
|
||
|
||
## Защищаемые данные
|
||
|
||
- учётные записи и сессии пользователей;
|
||
- 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.
|