Reactive EngineeringRE Docs
Архитектура

Безопасность и аудит

Аутентификация, бизнес-доступ, scopes и журналирование.

Аутентификация

Better Auth управляет email/password credentials, secure sessions, reset tokens, login/logout и password recovery. Публичная регистрация отключена. Каждый production deployment инвалидирует все активные сессии после migrations.

Бизнес-RBAC

Better Auth User.role и ITAM-роли — разные системы. Доступ приложения хранится в Role, Permission, UserRole и RolePermission.

Каждый route проверяет *.read на сервере. Server Actions повторно проверяют write/delete grants. Sidebar и global search только отражают доступ, но не считаются security boundary.

Visibility scopes

Для grant assets.read поддерживаются:

  • ALL — все доступные активы;
  • OWN_DEPARTMENT — активы подразделения связанного Person.

Самый широкий scope из нескольких ролей побеждает. Пользователь с OWN_DEPARTMENT без linked employee видит ноль строк. Scope применяется к per-class registries, asset detail/passport и staff-utilization report.

Scope покрывает не все поверхности

Другие asset-related reports, /relations и asset write actions сейчас не ограничиваются по подразделению. Scope ASSIGNED не реализован.

Audit engine

ITAM-модели журналируются Prisma Client Extension. Server Action устанавливает actor через AsyncLocalStorage, extension сравнивает старые и новые значения и пишет AuditEvent с human-readable details и structured metadata.

Batch operations обходят extension hooks, поэтому чувствительные массовые действия выполняются циклом отдельных create/update/delete.

Экспорт

Каждый Excel export явно создаёт audit event:

  • asset.exported;
  • report.exported;
  • license.exported;
  • audit.exported.

Audit Log поддерживает actor, date range, object type, action, поиск, pagination и собственный Excel export.

Защитные меры

  • cron secrets сравниваются через timing-safe helper;
  • branding uploads проверяются по MIME, signature и размеру;
  • email HTML экранирует динамические значения;
  • secrets не имеют префикса NEXT_PUBLIC_*;
  • базовые security headers запрещают framing и MIME sniffing;
  • raw SQL с пользовательским вводом отсутствует.

Известная поверхность Better Auth admin

Bootstrap Owner имеет внутреннюю Better Auth роль admin; административные HTTP routes плагина обходят ITAM Audit Log. Это не даёт Owner новых прав, но создаёт неаудируемый административный путь и требует отдельного решения.

On this page