Características clave
- Gestión de Usuarios – Crear, actualizar y eliminar cuentas de usuario.
- Control de Acceso Basado en Roles (RBAC) – Asignar roles predefinidos con permisos granulares.
- Asociación de Grupos – Gestionar membresías de usuarios en aplicaciones.
- Autenticación OAuth2 – Flujos de autenticación seguros usando tokens JWT.
- Optimización de Rendimiento – Usa caché en memoria para manejo rápido de consultas.
- Observabilidad – Integrado con OpenTelemetry para registro y rastreo.
Grupos de roles y permisos
El acceso de usuario en el ecosistema de Lerian es controlado por grupos de roles, definidos por aplicación (como Midaz, Motor de Tarifas, CRM y otros). Cada rol determina qué pueden ver o hacer los usuarios dentro de una aplicación específica. Los roles están vinculados a conjuntos de permisos, que son combinaciones predefinidas de acciones y recursos. Estos conjuntos de permisos se gestionan centralmente y no se pueden personalizar.Niveles de roles
A cada usuario se le asigna uno de los siguientes roles:- Admin – Acceso completo a todos los recursos y acciones a nivel de sistema.
- Editor – Puede crear, actualizar y eliminar recursos.
- Contributor – Puede crear y actualizar recursos, pero no puede eliminar.
- Viewer – Acceso de solo lectura; puede ver datos pero no puede hacer cambios.
Los roles tienen alcance por aplicación. Un usuario puede tener diferentes roles en diferentes aplicaciones. Por ejemplo, Editor en Midaz, Viewer en CRM y sin rol en Fees Engine.
Rol | Métodos Permitidos |
---|---|
Admin | Control completo |
Editor | GET, POST, PATCH, DELETE |
Contributor | GET, POST, PATCH |
Viewer | GET, HEAD |
Si un usuario no tiene un rol asignado en una aplicación dada, no tendrá acceso a ella, ni siquiera de solo lectura.
Conjuntos de permisos por aplicación
Detrás de cada rol hay un conjunto de permisos que especifica a qué recursos puede acceder el usuario y qué acciones se le permite realizar. Estos conjuntos se definen en el archivoinit/casdoor/init_data.json
.
Expande la siguiente sección para la lista completa:
Tabla de permisos
Nombre | Nombre para Mostrar | Recursos | Acciones |
---|---|---|---|
plugin-identity-editor-permission | Permiso Editor de Plugin Identity | applications, groups, users, update-password, reset-password | get, post, patch, delete |
plugin-identity-default-permission | Permiso Predeterminado de Plugin Identity | update-password | patch |
midaz-editor-permission | Permiso Editor de Midaz | accounts, organizations, ledgers, assets, asset-rates, portfolios, segments, balances, transactions, operations | get, post, patch, delete, head |
midaz-contributor-permission | Permiso Contributor de Midaz | accounts, organizations, ledgers, assets, asset-rates, portfolios, segments, balances, transactions, operations | get, post, patch, head |
midaz-viewer-permission | Permiso Viewer de Midaz | accounts, organizations, ledgers, assets, asset-rates, portfolios, segments, balances, transactions, operations | get, head |
routing-editor-permission | Permiso Editor de Plugin Routing | account-types, transaction-routes, operation-routes | get, post, patch, delete |
routing-contributor-permission | Permiso Contributor de Plugin Routing | account-types, transaction-routes, operation-routes | get, post, patch |
routing-viewer-permission | Permiso Viewer de Plugin Routing | account-types, transaction-routes, operation-routes | get |
plugin-fees-editor-permission | Permiso Editor de Plugin Fees | packages, fees, estimates | post, get, patch, delete |
plugin-fees-contributor-permission | Permiso Contributor de Plugin Fees | packages, fees, estimates | post, get, patch |
plugin-fees-viewer-permission | Permiso Viewer de Plugin Fees | packages, fees, estimates | get |
plugin-crm-editor-permission | Permiso Editor de Plugin CRM | holders, aliases | post, get, patch, delete |
plugin-crm-contributor-permission | Permiso Contributor de Plugin CRM | holders, aliases | post, get, patch |
plugin-crm-viewer-permission | Permiso Viewer de Plugin CRM | holders, aliases | get |
plugin-smart-templates-viewer-permission | Permiso Viewer de Plugin Reporter | templates, reports, data-source | get |
plugin-smart-templates-contributor-permission | Permiso Contributor de Plugin Reporter | templates, reports, data-source | get, post, patch |
plugin-smart-templates-editor-permission | Permiso Editor de Plugin Reporter | templates, reports, data-source | get, post, patch, delete |
Cómo se estructuran los permisos
Todos los conjuntos de permisos siguen la misma lógica:Rol | Métodos Típicos |
---|---|
Viewer | GET, HEAD |
Contributor | GET, POST, PATCH, HEAD |
Editor | GET, POST, PATCH, DELETE, HEAD |
Recursos a nivel de plugin
Aquí hay una referencia rápida de los recursos que gestiona cada plugin:Plugin | Recurso |
---|---|
Access Manager | applications, groups, users, update-password, reset-password |
Midaz | accounts, organizations, ledgers, assets, asset-rates, portfolios, segments, balances, transactions, operations, account-types, transaction-routes, operation-routes |
Fees | packages, fees, estimates |
CRM | holders, aliases |
Reporter | templates, reports, data-source |
Arquitectura y flujo de identidad
Identity sigue un patrón de arquitectura limpia con el siguiente flujo de solicitudes:
Figura 1. Flujo de Identity
Flujo de solicitudes
- Entrada de solicitud HTTP
- Los endpoints de la API procesan las solicitudes entrantes.
- El middleware maneja CORS, registro y telemetría.
- El middleware de autorización aplica las políticas de acceso.
- Procesamiento de solicitudes
- Los manejadores validan la entrada y extraen parámetros.
- La capa de servicio ejecuta la lógica de negocio.
- La capa de adaptador traduce las llamadas de servicio al sistema IAM externo.
- Flujo de autenticación
- Las aplicaciones cliente se autentican usando OAuth2.
- Los tokens JWT se validan con certificados incrustados.
- Los permisos se aplican según las definiciones de roles.
- Flujo de respuesta
- Los datos se transforman en modelos de respuesta de la API.
- Las respuestas HTTP estandarizadas garantizan consistencia.
- El registro y la telemetría rastrean el ciclo de vida de la solicitud.
Dependencias externas
- Almacenamiento primario – Sistema centralizado de gestión de identidades.
- Caché – Optimizado con un almacén de datos en memoria.
- Rastreo y monitoreo – Integrado con OpenTelemetry.
- Despliegue – Kubernetes para la gestión de infraestructura.
Descripción general de la API
Identity proporciona gestión centralizada de identidad y acceso para aplicaciones distribuidas. Las APIs admiten:- Gestión de cuentas de usuario y autenticación.
- Control de acceso basado en roles y aplicación de permisos.
- Operaciones de identidad de grupos y aplicaciones.
Almacenamiento y modelado de datos
Identity no almacena datos por sí solo—se conecta con sistemas externos para manejar identidad y caché.Almacenamiento primario
El servicio depende de un sistema externo de gestión de identidades como su almacén de datos principal. Gestiona entidades clave como usuarios, grupos y aplicaciones:- Entidad de usuario
- Propiedades clave: ID, nombre, apellido, nombre de usuario, correo electrónico, contraseña hasheada y membresías de grupo.
- Mapeo: Corresponde directamente a los objetos de usuario en el sistema de identidad.
- Operaciones: Admite acciones de crear, leer, actualizar y eliminar a través de la API.
- Entidad de grupo
- Propiedades clave: ID, nombre, nombre para mostrar, fecha de creación y usuarios asociados.
- Mapeo: Corresponde directamente a los objetos de grupo en el sistema de identidad.
- Operaciones: Operaciones de lectura disponibles a través de la API.
- Entidad de aplicación
- Propiedades clave: ID, nombre, descripción, credenciales de cliente y fecha de creación.
- Mapeo: Corresponde directamente a los objetos de aplicación en el sistema de identidad.
- Operaciones: Admite acciones de crear, leer y eliminar a través de la API.
Almacenamiento secundario
Se integra una base de datos basada en documentos para admitir necesidades adicionales de persistencia de datos.Caché
Se utiliza una capa de caché para mejorar el rendimiento, gestionando datos temporales de manera eficiente. Las conexiones y consumidores de caché se manejan programáticamente dentro de Identity.Despliegue y operaciones
- Escalabilidad y confiabilidad – Gestionado a través de Kubernetes.
- Observabilidad – Integrado con OpenTelemetry.
- Seguridad – Alineado con las mejores prácticas de la industria para autenticación y autorización.