Безопасность и соответствие
AIDA работает on-premise, в вашем контуре. Доступ — ролевой, аутентификация — Keycloak, аудит — append-only. Изоляция тенантов — на уровне отдельных баз.
Ниже — без общих слов: какие роли, какими правами, где именно это проверяется.
Доступ — RBAC
Восемь ролей. Под капотом роль разворачивается в набор scope'ов — именно по scope'ам проверяется доступ, не по «названию должности».
Один человек может иметь разные роли в разных тенантах — editor в одном, viewer в другом. Привязка хранится в JWT.
Где проверяется доступ (слои enforcement)
Не на клиенте «для красоты», а на сервере, по слоям:
- Chur (шлюз). Middleware
requireScope/requireAnyScopeпроверяет наличие нужных scope'ов в сессии до проксирования. Любая запись (INSERT/UPDATE/DELETE/CREATE/DROP) требует ранга роли не нижеadmin. - Передача в бэкенд. Chur форвардит на SHUTTLE/Anvil заголовки
X-Seer-Role,X-Seer-User,X-Seer-Tenant-Alias. - Бэкенд (JAX-RS фильтр). На каждом запросе проверяется: заголовок тенанта валиден по формату и совпадает с привязкой тенанта в JWT (
organization.alias). Несовпадение → запрос отклоняется (403), а не деградирует молча.
Аутентификация
- Keycloak — единый источник истины. Realm
seer, клиентыaida-bffиaida-bff-heimdall. - Протокол OAuth2 Authorization Code + PKCE (S256).
- JWT несёт привязку пользователя к тенанту (организации Keycloak) и группы доступа. Поддерживается мульти-тенантный формат (роли по каждому тенанту) и одно-тенантный fallback.
Изоляция тенантов
Каждый тенант — в своей базе (hound_<тенант> для графа). Нет общей мультитенантной таблицы с фильтром по колонке — есть физически разные базы. Запрос без валидного тенанта до данных не доходит (см. слой enforcement выше). Память ассистента и кэш impact-анализа тоже изолированы по тенанту.
Аудит
- Поток событий — append-only
ControlEventв Ygg.db: записи не изменяются и не удаляются. - Каждое событие идемпотентно (UUID) и упорядочено (fence-token).
- Фиксируются операции с тенантами, участниками, действия управления.
Экспорт в SIEM (Splunk/ELK) — roadmap, пока не реализован. Не заявляем как готовое.
Суверенность ИИ — честно про два режима
- Локальная или открытая модель: ассистент Mimir работает на локальной/открытой модели (через Ollama) в вашем контуре. Данные о схеме не покидают периметр — режим под требования 152-ФЗ к обработке в контуре организации.
- Облачная модель: опция для команд, которым важнее скорость и не критичен выход за периметр.
Режим — это конфигурация, а не разные продукты. Выбирается под требования организации.
Соответствие — честный статус
Мы не заявляем сертификаций, которых нет. Архитектура построена под требования регуляторов — данные в контуре, локальный ИИ как режим, изоляция, аудит. Формальная сертификация — отдельный процесс; под требования вашей организации обсудим на техническом разборе.
Связанное
- Heimdallr — управление доступом и тенантами
- Развёртывание — требования и режимы
- Архитектура — изоляция и слои