ADR-0106 : Tenancy plateforme, tenant, projet, environnement avec RLS forcée
- Statut : accepté
- Date : 2026-10-30
- Version anglaise : en/ADR-0106-tenancy-rls.md
Contexte
Le kit (section 6.2) exige la RLS tenant et FORCE ROW LEVEL SECURITY.
Décision
Le tenant vient de l'identifiant d'accès, jamais du corps de la requête. Chaque table de tenant active la RLS, une politique sur eai.current_tenant() et eai.is_platform(), et la RLS forcée ; les transactions passent par db.tx(principal).
Conséquences
Une table de tenant sans RLS forcée fait échouer les tests.
Preuves
sql/postgres/V002__tenants.sqlsql/postgres/V003__projects_environments.sqlsql/postgres/V100__force_row_level_security.sqlservices/control-plane/tests/test_core_rls_forced.pyRULES.md (section 3, point 2)