6.1 KiB
6.1 KiB
EPICA: EPIC-MGN-003 - Roles y Permisos (RBAC)
Metadata
| Campo | Valor |
|---|---|
| ID | EPIC-MGN-003 |
| Nombre | Roles y Permisos (RBAC) |
| Modulo | roles |
| Fase | Fase 1 - Foundation |
| Prioridad | P0 (Critico) |
| Estado | Ready |
| Story Points | 26 |
| Sprint(s) | Sprint 3 (RBAC completo) |
| Plan Detalle | SPRINT-PLAN-FASE-1.md |
Descripcion
Sistema de control de acceso basado en roles (RBAC) que permite definir roles jerarquicos, permisos granulares por recurso/accion, asignacion de roles a usuarios, roles especificos por tenant y herencia de permisos.
Es fundamental para garantizar que cada usuario solo pueda acceder a las funcionalidades que le corresponden segun su rol en la organizacion.
Objetivo de Negocio
Implementar un sistema de permisos que:
- Garantice segregacion de funciones
- Permita administracion granular de accesos
- Soporte multiples niveles de roles
- Sea auditable y trazable
- Se adapte a diferentes estructuras organizacionales
Stakeholders
| Rol | Nombre/Equipo | Responsabilidad |
|---|---|---|
| Product Owner | Equipo Producto | Definicion de roles base |
| Tech Lead | Equipo Backend | Implementacion de guards |
| Seguridad | Equipo Infra | Validacion de modelo RBAC |
| Administradores | Clientes | Feedback de usabilidad |
Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|---|---|---|---|---|
| US-MGN003-001 | Como superadmin, quiero crear roles personalizados para adaptar permisos a mi organizacion | P0 | 5 | Ready |
| US-MGN003-002 | Como admin, quiero asignar roles a usuarios para definir sus permisos | P0 | 3 | Ready |
| US-MGN003-003 | Como superadmin, quiero definir permisos granulares por recurso/accion para control fino | P0 | 8 | Ready |
| US-MGN003-004 | Como admin, quiero ver que permisos tiene un usuario para verificar accesos | P0 | 3 | Ready |
| US-MGN003-005 | Como sistema, quiero validar permisos en cada request para proteger recursos | P0 | 5 | Ready |
| US-MGN003-006 | Como admin, quiero duplicar roles existentes para crear variaciones rapidamente | P2 | 2 | Backlog |
Total Story Points: 26 SP
Criterios de Aceptacion de la Epica
Funcionales:
- CRUD de roles con nombre, descripcion y jerarquia
- Catalogo de permisos por modulo/recurso/accion
- Asignacion multiple de roles a usuarios
- Roles predefinidos: SuperAdmin, Admin, User, Viewer
- Herencia de permisos entre roles
- Visualizacion de permisos efectivos por usuario
No Funcionales:
- Performance: Validacion de permisos < 5ms (con cache)
- Seguridad: Principio de minimo privilegio
- Usabilidad: Interfaz intuitiva para asignar permisos
Tecnicos:
- Cobertura de tests > 85%
- Guards implementados en backend
- Directivas de permisos en frontend
- Cache de permisos por usuario
Dependencias
Esta epica depende de:
| Epica/Modulo | Estado | Bloqueante |
|---|---|---|
| EPIC-MGN-001 Auth | Ready | Si |
| EPIC-MGN-002 Users | Ready | Si |
Esta epica bloquea:
| Epica/Modulo | Razon |
|---|---|
| EPIC-MGN-004 Tenants | Roles por tenant |
| Todos los modulos | Proteccion de endpoints |
Desglose Tecnico
Database:
- Schema:
core_auth(extension) - Tablas: 4 (roles, permissions, role_permissions, user_roles)
- Funciones: 2 (obtener_permisos_usuario, verificar_permiso)
- RLS Policies: Si (roles por tenant)
Backend:
- Modulo:
roles - Entities: 4 (Role, Permission, RolePermission, UserRole)
- Endpoints: 10 (CRUD roles + permisos + asignacion)
- Guards: PermissionsGuard, RolesGuard
- Decorators: @RequirePermission, @RequireRole
- Tests: 30+
Frontend:
- Paginas: 3 (RolesList, RoleDetail, UserPermissions)
- Componentes: 8 (RoleForm, PermissionTree, RoleAssigner, etc.)
- Stores: 1 (rolesStore)
- Directivas: v-permission, v-role
Modelo de Permisos
Estructura de Permiso:
{modulo}:{recurso}:{accion}
Ejemplos:
- users:user:read
- users:user:create
- users:user:update
- users:user:delete
- roles:role:manage
- tenants:tenant:admin
Roles Predefinidos:
| Rol | Descripcion | Permisos |
|---|---|---|
| SuperAdmin | Acceso total al sistema | . |
| TenantAdmin | Admin de un tenant | {tenant}:. |
| Manager | Gestion operativa | Lectura + escritura modulos operativos |
| User | Usuario estandar | Lectura + escritura limitada |
| Viewer | Solo lectura | ::read |
Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|---|---|---|---|
| Complejidad del modelo | Media | Alto | POC previo, documentacion clara |
| Performance sin cache | Alta | Alto | Redis cache de permisos |
| Escalabilidad de permisos | Media | Medio | Wildcards, herencia |
Definition of Ready (DoR)
- Historias de usuario definidas
- Criterios de aceptacion claros
- Dependencias identificadas
- Estimacion completada
- Modelo de permisos aprobado
- Sin bloqueadores activos
Definition of Done (DoD)
- Codigo implementado y revisado
- Tests pasando (unit, integration, e2e)
- Guards funcionando en todos los endpoints
- Cache implementado
- Documentacion actualizada
- Demo realizada
- Product Owner aprobo
Documentacion Relacionada
- Requerimientos:
docs/03-requerimientos/RF-rbac/ - Especificaciones:
docs/04-modelado/especificaciones-tecnicas/ET-rbac-*.md - User Stories:
docs/05-user-stories/MGN-003/ - ADR:
docs/97-adr/ADR-006-rbac-sistema-permisos.md
Historial
| Fecha | Cambio | Autor |
|---|---|---|
| 2025-12-05 | Creacion de epica | Requirements-Analyst |
Creada por: Requirements-Analyst Fecha: 2025-12-05 Ultima actualizacion: 2025-12-05