Пользователи и роли
4.1. Пользователи
Маршрут: /settings/users · Права: users.view, users.manage
Почему это важно. Управление учётными записями определяет, у кого вообще есть доступ к платформе — фундамент контроля доступа и подотчётности.
Кнопка + New User. Колонки: Email, Name, Roles (теги), Active (тумблер, read-only), Last Login, Actions (Edit / Reset Password / Delete).
- Модалка пользователя: Email, Display Name, Password (только при создании, ≥8 символов), Roles (multi-select, ≥1), Active (при редактировании).
- Reset Password: новый пароль (≥8 символов), задаёт администратор.
4.2. Роли — роли и права (RBAC)
Маршрут: /settings/roles · Права: roles.view, roles.manage
Почему это важно. Роли определяют, что пользователю разрешено делать (RBAC). Нужны для least privilege и разделения обязанностей.
Кнопка + New Role. Колонки: Role (теги Admin / System, описание), Permissions (количество), Users (количество), Access Model (Admin — все права / Explicit — выбранные), Actions (Edit). Разворот строки показывает все права роли тегами.
Модалка роли: Name, Description, Permissions (multi-select из каталога, сгруппированы по категориям: Cases, Threat Intelligence, Administration, SLA, Reports, Federation, GRC, …). У роли Admin есть все права — редактирование её прав ни на что не влияет.
Модель прав (авторитетность по claim). Роль держит явный набор прав; эффективные права пользователя — это объединение наборов его ролей. В рантайме авторитетный источник — подписанный сессионный токен пользователя: claim
permissions[]в JWT — это то, что проверяет каждый guard (ADR-0019, 2026-07-15) — отката к имени роли нет. Единственное исключение — рольadmin: она авторитетна по имени и всегда держит все права. Роль, очищенная до пустого набора, — это авторитетный deny. Поскольку права лежат в токене, изменение набора прав роли применяется при следующем обновлении токена пользователя (bump membership-version), а не обязательно мгновенно в открытой сессии.
О легаси-guard-ах тенантов. Многотенантные guard-ы (
prisma-tenant.extension,MutationTenantGuard,TenantScopeGuard) — легаси, ожидающее no-op-уборки; кросс-тенантная ошибка от них — это UX-баг, а не фича безопасности (тенантность — только через федерацию, ADR-0010).