2.2 Seguridad y roles
EcoREP implementa controles de autenticación, acceso y validación para proteger la integridad de la información declarada y restringir operaciones sensibles a los perfiles autorizados.
Un usuario tiene un rol dentro de cada empresa a la que pertenece. Ese rol determina qué puede ver y hacer, y aplica solo dentro de esa empresa.
Autenticación: inicio de sesión con Keycloak
El login de EcoREP no valida usuario y contraseña directamente contra la aplicación: delega la identidad a Keycloak, el proveedor de identidad de la suite GreenSoft. El registro público está deshabilitado — los usuarios se crean por invitación o directamente desde administración.
El flujo que vive un usuario es el siguiente:
- Identificación: el usuario ingresa su correo o nombre de usuario. El sistema determina si ya completó su activación en Keycloak.
- Primer ingreso (activación): si el usuario todavía no está activado en Keycloak, EcoREP le envía un correo pidiéndole verificar su correo y definir una contraseña nueva directamente en Keycloak. Este paso es obligatorio para todo usuario nuevo o migrado; la plataforma no reutiliza contraseñas antiguas.
- Segundo ingreso en adelante: el usuario es redirigido a Keycloak, donde inicia sesión con su contraseña y un segundo factor (TOTP/OTP). Si todavía no tiene el segundo factor configurado, Keycloak se lo solicita en ese momento.
- Vuelta a EcoREP: tras autenticarse en Keycloak, el usuario vuelve a la plataforma ya autenticado. Por diseño, los tokens de sesión nunca viajan expuestos en la URL.
- Cierre de sesión: al cerrar sesión, EcoREP revoca sus tokens locales y también cierra la sesión en Keycloak (single logout), para que no quede una sesión activa "silenciosa" en el proveedor de identidad.
Reglas de asignación de roles
- Un mismo usuario puede tener roles distintos según la empresa a la que pertenezca: el rol se asigna en la relación usuario-empresa, no en el usuario en sí.
- Los permisos de un rol aplican solo dentro de la empresa donde fue asignado.
Roles disponibles y su alcance
| Rol | Alcance general |
|---|---|
| Operador | Opera la línea base día a día: ver, crear, editar y eliminar productos; ver y comentar auditorías. Solo lectura sobre empresa, sucursales, bodegas, usuarios y Generador Industrial. |
| Supervisor | Todo lo del operador, más cambiar/clonar/homologar línea base, editar datos de empresa, administrar sucursales y bodegas, administrar usuarios (incluido invitar), y ventas completo: aperturar y cerrar periodos, ingresar ventas, generar reportes REP/ReSimple/GIRO, gestionar archivos del periodo. También accede a Costos REP. |
| Comercial | Enfocado en ventas: mismo acceso a ventas y costos que Supervisor, pero solo lectura sobre línea base, empresa, sucursales, bodegas y usuarios. |
| Observador | Rol de solo lectura: ve línea base, auditorías (puede comentar) y ventas, y puede exportar/generar reportes, pero no puede crear, editar, aperturar ni cerrar nada. Útil para perfiles de consulta o auditoría externa. |
| Admin empresa | Control completo dentro de la empresa: línea base, auditorías (incluida apertura/cierre individual y masiva), estructura organizacional, usuarios, ventas y costos. |
Qué puede hacer cada rol, por área
| Área | Operador | Comercial | Observador | Supervisor | Admin empresa |
|---|---|---|---|---|---|
| Línea base (productos) | Ver, crear, editar, eliminar | Solo ver | Solo ver | Todo + clonar/homologar/cambiar línea base | Todo |
| Auditorías (componentes y productos) | Ver, comentar | Ver, comentar | Ver, comentar | Ver, comentar | Ver, comentar, abrir/cerrar (individual y masivo) |
| Empresa, sucursales, bodegas | Solo ver | Solo ver | — | Ver, crear, editar, eliminar | Ver, crear, editar, eliminar |
| Usuarios | Solo ver | Solo ver | — | Ver, crear, editar, eliminar, invitar | Ver, crear, editar, eliminar, invitar |
| Ventas (periodos, ingreso, reportes) | — | Todo | Ver y generar reportes (sin escribir) | Todo | Todo |
| Costos REP | — | Ver | Ver | Ver | Ver |
| Generador Industrial | Ver | — | — | — | Ver |
Esta tabla resume el criterio general de asignación; el detalle exacto vive en la configuración de permisos del sistema y puede evolucionar sin que este documento se actualice de inmediato.
Áreas sensibles
Las siguientes funciones deben considerarse de control reforzado al momento de asignar roles:
- Apertura y cierre de periodos de ventas.
- Generación de reportes oficiales (REP, ReSimple, GIRO) y descarga de fichas PDF.
- Acceso al módulo Costos REP.
- Apertura y cierre de auditorías de producto (Admin empresa).
- Administración de usuarios, invitaciones y permisos.
Controles de seguridad
- Autenticación federada con Keycloak, incluyendo segundo factor (TOTP) obligatorio desde el segundo ingreso.
- Roles y permisos asignados por empresa.
- Límite de 5 intentos de login por minuto por usuario/IP (
loginylogin/identify). - Límites específicos en los endpoints de Keycloak: reenvío de verificación/activación (3 por minuto), confirmación de verificación e intercambio de sesión (10 por minuto), cambio de nombre de usuario (6 por minuto).
- Protección contra CSRF.
- Validación de datos antes de procesarlos.
- Expiración de sesión absoluta (no se extiende por seguir usando la plataforma) y revocación de tokens al cerrar sesión, incluyendo cierre de sesión en Keycloak (single logout).
- Registro de actividades para auditoría.
- Control de descargas por permisos específicos.
- Uso de HTTPS en toda la plataforma.
Buenas prácticas recomendadas
- Asigne el menor privilegio posible por empresa: si un perfil solo necesita consultar, use Observador en vez de un rol con permisos de escritura.
- Restrinja la descarga de archivos y el acceso a Costos REP a perfiles con necesidad operativa real.
- Revise periódicamente usuarios invitados y roles asignados por empresa.
- Cierre sesión en equipos compartidos o de uso temporal.