Arquitectura multi-tenant
KintiSoft está concebido como una plataforma SaaS con un modelo de arquitectura multi-tenant, que permite atender a diferentes clientes u organizaciones dentro de una misma solución tecnológica.
Comprender este modelo es importante para desarrollar integraciones que respeten los límites de acceso a la información y funcionen correctamente en entornos con múltiples organizaciones.
¿Qué es una arquitectura multi-tenant?
Una arquitectura multi-tenant permite que una plataforma de software preste servicios a diferentes clientes, denominados tenants, utilizando componentes compartidos de infraestructura o aplicación.
Cada tenant representa un contexto de acceso y organización de datos.
Aunque varios tenants puedan utilizar una misma plataforma, sus operaciones deben mantenerse correctamente aisladas conforme a las reglas de seguridad y autorización.
Multi-tenant no significa necesariamente que todos los clientes compartan una misma base de datos. Existen diferentes estrategias de almacenamiento y aislamiento.
¿Qué es un tenant?
Un tenant representa un límite lógico dentro de una plataforma multi-tenant.
Dependiendo del diseño del sistema, puede agrupar:
- Información empresarial.
- Usuarios y permisos.
- Configuraciones.
- Recursos y entidades.
- Operaciones del negocio.
El tenant permite establecer el contexto en el que deben ejecutarse las operaciones autorizadas.
Modelo conceptual
El siguiente diagrama representa una arquitectura multi-tenant de forma general.
flowchart TD
A["Aplicaciones y clientes"] --> B["API de KintiSoft"]
B --> C["Autenticación y autorización"]
C --> D{"Contexto de acceso"}
D --> E["Tenant A"]
D --> F["Tenant B"]
D --> G["Tenant C"]
E --> H["Recursos autorizados A"]
F --> I["Recursos autorizados B"]
G --> J["Recursos autorizados C"]
Este diagrama es conceptual. No representa necesariamente la infraestructura interna, los servicios desplegados ni la estrategia física de almacenamiento de KintiSoft.
Tenant, organización y usuario
Es importante diferenciar estos conceptos.
| Concepto | Descripción |
|---|---|
| Tenant | Contexto lógico utilizado para delimitar el acceso a recursos dentro de una plataforma multi-tenant. |
| Organización | Entidad empresarial representada en la plataforma. |
| Usuario | Identidad que accede al sistema y realiza operaciones de acuerdo con sus permisos. |
| Rol | Conjunto de permisos asociados a determinadas funciones. |
| API Key | Credencial utilizada para autenticar integraciones cuando la API admite este mecanismo. |
La relación exacta entre tenant, organización, usuario y API Key depende del modelo de identidad y autorización implementado por KintiSoft.
Aislamiento de datos
El aislamiento es uno de los principios fundamentales de los sistemas multi-tenant.
Su objetivo es impedir que una identidad perteneciente a un contexto acceda a información de otro contexto sin autorización.
Aislamiento lógico
El aislamiento lógico utiliza controles de aplicación, autorización y acceso a datos para delimitar los recursos que pueden consultarse o modificarse.
Estos controles deben aplicarse en el servidor y no depender únicamente de los filtros enviados por un cliente.
Aislamiento físico
Algunas arquitecturas utilizan recursos de almacenamiento separados por tenant, mientras que otras emplean infraestructura compartida con mecanismos de aislamiento lógico.
La estrategia elegida depende de los requisitos de seguridad, escalabilidad y operación de la plataforma.
La documentación pública de KintiSoft debe describir únicamente los mecanismos de aislamiento que estén confirmados por su implementación. No debe asumirse un modelo de base de datos compartida o separada.
Autenticación y autorización
En una integración multi-tenant es importante distinguir dos procesos.
Autenticación
Permite verificar la identidad del cliente o de la integración que realiza la solicitud.
Autorización
Determina qué recursos y operaciones puede utilizar la identidad autenticada.
Una solicitud correctamente autenticada no implica necesariamente que tenga permisos para acceder a cualquier recurso.
El servidor debe validar los permisos correspondientes a cada operación.
Para conocer los mecanismos utilizados por KintiSoft, consulta Autenticación.
Contexto de tenant en una integración
Al trabajar con una API multi-tenant, cada solicitud debe ejecutarse dentro de un contexto autorizado.
La forma de establecer ese contexto depende de la implementación de la API.
Entre los mecanismos habituales se encuentran:
- Credenciales asociadas a un tenant.
- Tokens que contienen información del contexto autorizado.
- Identificadores explícitos validados por el servidor.
Estos mecanismos son ejemplos generales y no deben interpretarse como opciones necesariamente disponibles en KintiSoft.
Ejemplo conceptual
Considera una integración que administra información de dos organizaciones independientes:
| Integración | Contexto autorizado | Operación |
|---|---|---|
| Aplicación A | Tenant A | Consultar productos autorizados |
| Aplicación B | Tenant B | Consultar productos autorizados |
Aunque las integraciones utilicen el mismo servicio de API, sus permisos y el contexto de acceso deben determinar qué información puede devolver el servidor.
Una integración nunca debe asumir que modificar un identificador de tenant es suficiente para obtener acceso a otra organización.
Relaciones entre recursos
Las integraciones empresariales suelen trabajar con entidades relacionadas, como clientes, productos, documentos y movimientos.
En un modelo multi-tenant es importante considerar que:
- Los identificadores deben interpretarse dentro del contexto definido por la API.
- Las relaciones entre entidades deben respetar los límites de autorización.
- Los clientes de la API no deben asumir que todos los identificadores son globalmente únicos.
- Las operaciones deben validar la existencia y los permisos de acceso a los recursos relacionados.
Consulta siempre la referencia de cada endpoint para conocer el alcance de sus identificadores y las relaciones permitidas entre recursos.
Buenas prácticas para integraciones multi-tenant
1. Protege las credenciales
Almacena las API Keys y otros secretos en mecanismos seguros, fuera del código fuente y de aplicaciones públicas.
2. Respeta los permisos
Utiliza únicamente credenciales y operaciones autorizadas para el contexto correspondiente.
3. Evita mezclar información
Si tu integración trabaja con varias organizaciones, mantén separados sus datos, configuraciones y credenciales.
4. Valida las respuestas
No presupongas que un recurso existe o que una solicitud tendrá acceso a él. Implementa el manejo de respuestas de error.
5. Diseña registros seguros
Evita almacenar credenciales, tokens o información sensible en logs y sistemas de monitoreo.
6. Considera el contexto de caché
Si almacenas temporalmente respuestas de la API, asegúrate de que las claves de caché contemplen el contexto de autorización correspondiente.
Esto evita reutilizar información de una organización en operaciones de otra.
Errores habituales
Algunas situaciones que pueden presentarse al desarrollar integraciones multi-tenant son:
| Situación | Consideración |
|---|---|
| Credenciales inválidas | Verifica su vigencia y el mecanismo de autenticación. |
| Permisos insuficientes | Comprueba que la integración esté autorizada para la operación. |
| Recurso no encontrado | Verifica el identificador y el contexto autorizado. |
| Datos de organizaciones mezclados | Revisa la separación de credenciales, cachés y contextos en tu integración. |
Los códigos HTTP y las respuestas concretas deben consultarse en la documentación de la API.
Resumen
Una arquitectura multi-tenant permite atender a múltiples clientes dentro de una plataforma SaaS manteniendo límites de acceso entre sus recursos.
Al desarrollar integraciones con KintiSoft, es fundamental comprender el contexto de las operaciones, respetar los permisos y evitar asumir mecanismos de aislamiento que no estén definidos en la API.