1.8 KiB
1.8 KiB
US-MGN-001-008-001: Row Level Security (RLS) Policies
RF Asociado: RF-MGN-001-008 Módulo: MGN-001 - Fundamentos Epic: Seguridad y Control de Acceso Prioridad: P1 (Post-MVP) Story Points: 8 Sprint: Sprint 5 Fecha: 2025-11-24
User Story
Como sistema de seguridad, Quiero aplicar políticas de Row Level Security (RLS) en PostgreSQL, Para garantizar que usuarios solo puedan acceder a registros autorizados según reglas de negocio.
Criterios de Aceptación
Escenario 1: RLS filtra por tenant_id
Cuando usuario de tenant A ejecuta SELECT, Entonces RLS policy filtra WHERE tenant_id = current_tenant_id.
Escenario 2: RLS filtra por company_id (multi-empresa)
Cuando usuario solo tiene acceso a empresa A, Entonces RLS filtra WHERE company_id IN (empresas_autorizadas).
Escenario 3: RLS filtra por ownership (created_by_user_id)
Cuando regla indica "solo ver registros propios", Entonces RLS filtra WHERE created_by_user_id = current_user_id.
Reglas de Negocio
- RN-1: RLS es defense-in-depth (además de filtros en código)
- RN-2: Políticas RLS por tabla: tenant isolation, company access, ownership
- RN-3: Administradores pueden bypass RLS con SET ROLE
Tareas Técnicas
- Crear RLS policies en todas las tablas transaccionales
- Policy: tenant_isolation (filtrar por tenant_id)
- Policy: company_access (filtrar por company_id)
- Policy: ownership_rule (filtrar por created_by_user_id)
- Tests de RLS (15 casos)