# US-MGN-001-008-001: Row Level Security (RLS) Policies **RF Asociado:** [RF-MGN-001-008](../../02-modelado/requerimientos-funcionales/mgn-001/RF-MGN-001-008-record-rules-rls.md) **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) --- ## Estimación: 8 SP --- ## Referencias - [RF-MGN-001-008](../../02-modelado/requerimientos-funcionales/mgn-001/RF-MGN-001-008-record-rules-rls.md)