205 lines
6.1 KiB
Markdown
205 lines
6.1 KiB
Markdown
# 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](../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)
|
|
|
|
- [x] Historias de usuario definidas
|
|
- [x] Criterios de aceptacion claros
|
|
- [x] Dependencias identificadas
|
|
- [x] Estimacion completada
|
|
- [x] Modelo de permisos aprobado
|
|
- [x] 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
|