# US-MGN-001-004-002: Schema-Level Isolation (RLS + Dynamic Schema) **RF Asociado:** [RF-MGN-001-004](../../02-modelado/requerimientos-funcionales/mgn-001/RF-MGN-001-004-multi-tenancy.md) **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) --- ## Estimación: 5 SP (9 horas) --- ## Referencias - [RF-MGN-001-004](../../02-modelado/requerimientos-funcionales/mgn-001/RF-MGN-001-004-multi-tenancy.md)