Перейти к основному содержимому

ADR-0014: Repository Pipeline И Scope Filters

Статус

Accepted

Контекст

EF global query filters и EF interceptors недостаточны как единственный защитный механизм tenant/brand/user boundaries. Эти правила должны работать одинаково для PostgreSQL, Elasticsearch, ClickHouse и Redis-backed read paths.

Решение

Ввести repository pipeline:

  • repositories не возвращают IQueryable;
  • scope interceptors применяют TenantId, BrandId, UserId, PartnerId;
  • missing required scope fail closed;
  • bypass требует permission, reason и audit;
  • mutation interceptors проставляют scope fields и audit fields.

Последствия

  • Tenant isolation становится проверяемой в integration tests.
  • Admin cross-tenant access явно виден и аудируется.
  • Query filters не размазываются по handlers.

Ссылки

  • Repository Abstractions And Scope Filters

Обратные ссылки

Автоссылки: где используется этот документ.