Идентификация, доступ и управление парком агентов
Идентификация оператора (OIDC / совместимо с Keycloak)
Аутентификация оператора контрольной плоскости использует стандартный поток OIDC с кодом авторизации
и документом обнаружения поставщика (совместимо с Keycloak; для той же интеграции подходит любой
соответствующий спецификации поставщик OIDC). Возвращённый ID-токен проверяется по алгоритму RS256 и ключам JWKS
поставщика, включая поля issuer, audience, срок действия и nonce; состояние входа
одноразовое.
- JWKS по умолчанию хранится в памяти 10 минут. Обновление полностью заменяет сохранённый набор ключей. Если обновление завершается ошибкой после истечения этого срока, это считается жёсткой ошибкой аутентификации — система не откатывается к потенциально отозванным устаревшим ключам просто ради того, чтобы вход продолжал работать.
- Утверждения о группе и роли из JWT сопоставляются с внутренними ролями через конфигурацию; идентичность, чьи утверждения не соответствуют ни одному настроенному сопоставлению, не получает никаких привилегий — аутентифицированной, но несопоставленной идентичности роль по умолчанию не назначается.
- Авторизация маршрутов по умолчанию запрещает доступ. Административный интерфейс отдаётся с
ограничительной Content-Security-Policy (
script-src 'self', без встроенных скриптов, безeval) и стандартными заголовками усиления защиты (X-Frame-Options,X-Content-Type-Options,Referrer-Policy) на каждом отдаваемом пути, включая входной HTML и его скрипты. - Сессии имеют явный срок действия и удаляются по его истечении.
Роли
| Роль | Назначение |
|---|---|
Администратор (Administrator) |
Полное администрирование контрольной плоскости |
Офицер безопасности (Security Officer) |
Создание, публикация и откат политик |
Руководитель информационной безопасности / наблюдатель (CISO/Viewer) |
Доступ только для чтения к аудиту и данным о соответствии требованиям |
Разработчик (Developer) |
Доступ к локальной статистике |
Хранение учётных данных
Пароли операторов хранятся с использованием Argon2id (алгоритм с высокими требованиями к памяти, соль для каждого набора учётных данных). Токены регистрации и аутентификации агента используют HMAC с секретом на стороне сервера. Устаревшие учётные данные прозрачно перехешируются и обновляются при следующем успешном входе.
Регистрация и жизненный цикл парка агентов
%%{init: {"theme": "base", "themeVariables": {"fontFamily": "-apple-system, Segoe UI, Helvetica, Arial, sans-serif", "primaryColor": "#eef2f7", "primaryTextColor": "#0b0b0b", "primaryBorderColor": "#5b6b7c", "lineColor": "#5b6b7c", "secondaryColor": "#eef4ff", "tertiaryColor": "#f4f3f0", "clusterBkg": "#f9f9f7", "clusterBorder": "#c3c2b7", "edgeLabelBackground": "#fcfcfb", "actorBkg": "#eef2f7", "actorBorder": "#5b6b7c", "actorTextColor": "#0b0b0b", "actorLineColor": "#5b6b7c", "signalColor": "#52514e", "signalTextColor": "#0b0b0b", "labelBoxBkgColor": "#eef4ff", "labelBoxBorderColor": "#5b6b7c", "labelTextColor": "#0b0b0b", "loopTextColor": "#0b0b0b", "noteBkgColor": "#fdf3d9", "noteBorderColor": "#c98500", "noteTextColor": "#3d2f00", "activationBorderColor": "#5b6b7c", "activationBkgColor": "#eef4ff", "sequenceNumberColor": "#ffffff"}}}%%
sequenceDiagram
participant Op as Оператор
participant CP as Контрольная плоскость
participant WS as Агент рабочей станции
Op->>CP: выпустить одноразовый токен регистрации в рамках организации (со сроком действия)
WS->>CP: регистрация(одноразовый токен)
CP-->>WS: токен учётных данных агента
loop периодически
WS->>CP: сигнал состояния (с аутентификацией, реальный режим выполнения)
WS->>CP: запросить политику (аутентифицированно)
CP-->>WS: подписанный снимок политики
WS->>WS: проверить через цепочку целостности политики, сохранить атомарно
end
loop проверка версии
WS->>CP: проверить каталог версий
CP-->>WS: метаданные подписанного пакета обновления\n(URL, контрольная сумма, подпись, ключ подписи)
WS->>WS: проверить подпись, установить атомарно
alt сбой проверки состояния после обновления
WS->>WS: автоматический откат
end
end
- Регистрация по умолчанию закрыта. Ненастроенный токен регистрации полностью отключает регистрацию. Повторная регистрация рабочей станции не заменяет её учётные данные молча, без предъявления текущих — сброс регистрации является явным действием, фиксируемым в аудите.
- Сигнал состояния безусловно требует аутентификации и всегда сообщает фактический режим
выполнения агента (включая деградированное состояние/состояние
strict_fallback). - Каждый исходящий HTTP-вызов агента использует одну общую диспетчерскую функцию,
которая отклоняет незашифрованный
http://для любого нелокального узла, если через переменные окружения не задано явное переопределение (и записывает предупреждение, когда оно задано); адреса петли обратной связи разрешены всегда, поскольку это путь локальной разработки/тестирования. - Обновления распространяются в виде подписанных пакетов. Проверка предшествует установке; неудачная проверка состояния после обновления запускает автоматический откат. Автообновление можно отключить независимо, при этом сигналы состояния, синхронизация политики и событий продолжают работать в обычном режиме.
- Каждый установщик формирует хранилище доверенных ключей: оно принадлежит
root, не даёт права записи группе или всем остальным и содержит как минимум один ключ подписи, не предназначенный для разработки. Установка без действительных данных доверия завершается отказом: она не завершается состоянием, в котором ничему не доверяется, и не откатывается на встроенный ключ.
Видимость для оператора
Таблица событий в административном интерфейсе — это лента инцидентов для оператора: статус (заблокировано, пропущено или без решения), механизм обнаружения, человекочитаемое описание, построенное только из уже очищенных полей (никогда из исходных командных строк или аргументов), и подробное представление. Событие без решения (например, изменение статуса MCP-сессии, сбой целостности политики, переполнение очереди) визуально отличается от фактического результата «разрешить»/«заблокировать».
Целевые показатели масштаба
| Показатель | Пилот | Целевое значение для рабочей среды |
|---|---|---|
| Рабочих станций на контрольную плоскость | 50 | 5 000 |
| Событий на рабочую станцию в день | ~200 | ~2 000 |
| Локальных репозиториев на проверку | 10 | 500+ |
| Размер снимка политики | <100 правил | <2 000 правил |
Далее: Развёртывание и инфраструктура.