erp-core/docs/05-user-stories/mgn-001/US-MGN-001-004-002-schema-isolation.md

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)

Estimación: 5 SP (9 horas)


Referencias