Multi-tenant à 4 couches. Cross-org leak impossible.
L’architecture multi-tenant Capiwise empile 4 couches de défense. Pour qu’un user de l’org A voie une donnée de l’org B, il faudrait que les 4 couches échouent simultanément. Validé en prod sur 14 modules livrés, 0 incident.
- Couche 1 — RLS Postgres : policies par table, vérifie current_org_id() automatiquement
- Couche 2 — TENANT_VIOLATION : RPCs SECURITY DEFINER lèvent une exception si org_id mismatch
- Couche 3 — Server Actions : requirePermission() avec check explicite avant chaque action
- Couche 4 — Frontend : filtering UI côté React (defense-in-depth, pas seul rempart)
- Audit trail consolidé : tout cross-org access tenté est loggé, even si bloqué
