1.6 KiB
1.6 KiB
US-MGN-001-004-002: Schema-Level Isolation (RLS + Dynamic Schema)
RF Asociado: RF-MGN-001-004 Módulo: MGN-001 - Fundamentos Epic: Multi-Tenancy Prioridad: P0 (MVP) Story Points: 5 Sprint: Sprint 3 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como sistema, Quiero aislar datos de tenants usando schemas de PostgreSQL + RLS, Para garantizar que ningún tenant pueda acceder a datos de otro tenant.
Criterios de Aceptación
Escenario 1: Queries automáticamente filtradas por tenant
Cuando usuario de tenant "acme" ejecuta SELECT * FROM sales.orders, Entonces sistema ejecuta query en schema "tenant_acme", solo retorna datos de ese tenant.
Escenario 2: RLS policies bloquean cross-tenant access
Cuando intento directo de acceso con tenant_id incorrecto, Entonces RLS policy bloquea retornando 0 resultados.
Reglas de Negocio
- RN-1: Cada tenant tiene schema aislado: tenant_{subdomain}
- RN-2: Middleware establece search_path al schema del tenant
- RN-3: RLS policies adicionales por seguridad (defense in depth)
Tareas Técnicas
Backend
- Middleware: extraer tenant del JWT/subdomain, SET search_path
- Crear RLS policies en todas las tablas
- TenantContext service para gestionar contexto actual
- Tests de isolation (10 casos)