Productos que soportan multi-tenancy
El mismo modelo de tenant basado en JWT aplica en toda la plataforma. Soportados actualmente:| Producto | Soporte multi-tenant | Notas |
|---|---|---|
| Midaz (Ledger + CRM) | ✅ Sí | Organizaciones, ledgers, cuentas, transacciones y saldos están escopados al tenant. |
| Tracer | ✅ Sí | Reglas, límites, validaciones y eventos de auditoría están escopados al tenant. Cada tenant tiene su propio catálogo de reglas y límites. |
| Reporter | ✅ Sí | Los reportes corren solo sobre los datos del tenant que llama. |
tenantId y el servicio resuelve el tenant automáticamente.
Cómo funciona
El aislamiento de tenants se aplica a nivel de aplicación a través de tu token de autenticación.
- Te autentificas vía Access Manager y recibes un JWT.
- Ese token incluye un claim
tenantIdque identifica tu tenant. - En cada solicitud de API, la plataforma resuelve tu tenant a partir del token automáticamente.
- Todas las operaciones — crear organizaciones, consultar ledgers, registrar transacciones — se limitan a tu tenant.
Multi-tenancy es transparente a nivel de API. Tu código de integración es el mismo ya sea que ejecutes single-tenant o multi-tenant — la única diferencia es que los despliegues multi-tenant requieren autenticación en cada solicitud.
Cómo se ve el alcance del tenant en cada producto
El
tenantId del JWT escopa todo recurso que el usuario que llama puede ver o crear. El modelo de recursos varía por producto:
Midaz
Un tenant no es lo mismo que una organización. Un solo tenant puede crear y gestionar múltiples organizaciones — por ejemplo, para representar subsidiarias, sucursales regionales o diferentes unidades de negocio.Tracer
Tracer escopa su catálogo directamente bajo el tenant — no existe capa de organización.Otros productos
Reporter y el resto de la plataforma siguen el mismo patrón: el tenant es el alcance más externo, y el JWT es la única fuente de verdad sobre a qué tenant pertenece el llamador.Aislamiento de datos
Los datos de cada tenant están aislados a nivel de base de datos. Cada tenant opera en una base de datos separada, lo que significa:
- Los datos de diferentes tenants nunca se almacenan juntos.
- Las consultas de un tenant no pueden alcanzar los datos de otro tenant.
- Incluso si dos tenants crean estructuras organizativas idénticas, sus datos permanecen completamente separados.
tenantId de tu JWT. No hay forma de eludir esto a través de la API.
Los operadores BYOC pueden elegir entre aislamiento a nivel de base de datos o a nivel de esquema según sus requisitos de infraestructura.
Lo que esto significa para ti
Si eres cliente SaaS
Nada cambia en cómo usas la API. Autentícate, obtén tu token y realiza solicitudes. La plataforma gestiona el aislamiento de forma transparente. No necesitas gestionar identificadores de tenant ni preocuparte por fugas de datos entre clientes.Si eres operador BYOC ejecutando multi-tenant
Tú configuras qué tenants existen y cómo se aprovisionan sus bases de datos. Tus clientes se autentifican a través de Access Manager y reciben tokens con alcance definido. La plataforma enruta cada solicitud a la base de datos correcta del tenant automáticamente.Si ejecutas single-tenant (BYOC o desarrollo local)
Multi-tenancy está deshabilitado por defecto. Tu configuración existente sigue funcionando sin cambios. No se requiere un claim de tenant en el JWT, y la autenticación puede ser opcional dependiendo de tu configuración.Configuración (operadores BYOC)
Multi-tenancy está deshabilitado por defecto en cada producto. Para habilitarlo, configura
MULTI_TENANT_ENABLED=true en el entorno de cada producto que quieras correr en modo multi-tenant (Midaz, Tracer, Reporter). Una vez habilitado, el producto requiere un servicio Tenant Manager en ejecución y autenticación en cada solicitud.
Configuraciones principales
Estas variables aplican a cada producto con soporte multi-tenant (Midaz Ledger, Midaz CRM, Tracer, Reporter):| Variable | Descripción | Predeterminado |
|---|---|---|
MULTI_TENANT_ENABLED | Habilita el modo multi-tenant. Cuando es false, la plataforma se ejecuta en modo single-tenant. | false |
MULTI_TENANT_URL | URL del servicio Tenant Manager. Requerido cuando multi-tenant está habilitado. | — |
MULTI_TENANT_SERVICE_API_KEY | API key para autenticarse con el Tenant Manager. Requerido cuando multi-tenant está habilitado. | — |
MULTI_TENANT_CONNECTIONS_CHECK_INTERVAL_SEC | Frecuencia (segundos) con la que la plataforma revalida las configuraciones de tenants contra el Tenant Manager. | — |
MULTI_TENANT_CACHE_TTL_SEC | Cuánto tiempo (segundos) se cachea localmente la configuración de un tenant antes de re-consultarla. Usa 0 para deshabilitar el caché. | 120 |
Circuit breaker del Tenant Manager
Protege contra interrupciones del Tenant Manager fallando rápido cuando el servicio no está disponible:| Variable | Descripción | Predeterminado |
|---|---|---|
MULTI_TENANT_CIRCUIT_BREAKER_THRESHOLD | Fallas consecutivas antes de que el circuito se abra. | 5 |
MULTI_TENANT_CIRCUIT_BREAKER_TIMEOUT_SEC | Cuánto tiempo (segundos) el circuito permanece abierto antes de reintentar. | 30 |
Caché en Redis
El modo multi-tenant usa Redis para cachear las configuraciones de tenants entre instancias:| Variable | Descripción | Predeterminado |
|---|---|---|
MULTI_TENANT_REDIS_HOST | Hostname del servidor Redis. | — |
MULTI_TENANT_REDIS_PORT | Puerto del servidor Redis. | 6379 |
MULTI_TENANT_REDIS_PASSWORD | Contraseña de autenticación de Redis. | — |
MULTI_TENANT_REDIS_TLS | Habilita TLS para la conexión con Redis. | false |
Configuraciones específicas del CRM
Estas variables solo están disponibles en el componente CRM y controlan el comportamiento del pool de conexiones para las conexiones de base de datos multi-tenant:| Variable | Descripción | Predeterminado |
|---|---|---|
MULTI_TENANT_TIMEOUT | Timeout (segundos) del cliente HTTP para las solicitudes al Tenant Manager. | 30 |
MULTI_TENANT_MAX_TENANT_POOLS | Número máximo de pools de conexión a base de datos concurrentes (uno por tenant activo). | 100 |
MULTI_TENANT_IDLE_TIMEOUT_SEC | Cuánto tiempo (segundos) antes de que un pool de conexiones de tenant inactivo sea evictado. | 300 |
MULTI_TENANT_ENABLED=true requiere PLUGIN_AUTH_ENABLED=true. La autenticación debe estar activa para que el aislamiento de tenants funcione — la plataforma resuelve los tenants desde el claim del JWT.Páginas relacionadas
Modelos de despliegue
Comprende las diferencias entre SaaS, BYOC Single-Tenant y BYOC Multi-Tenant.
Seguridad
Conoce las garantías de aislamiento de tenants y el modelo de responsabilidad compartida.
Access Manager
Comprende cómo funcionan la autenticación y la resolución de tenants basada en JWT.
Organizaciones
Aprende cómo se estructuran las organizaciones dentro de un tenant.

