Saltar al contenido

Arquitectura SaaS

Patrones de aislamiento para plataformas empresariales multi-tenant

Cómo la identidad, la autorización, el acceso a datos, los jobs en segundo plano, el caché y la observabilidad deben alinearse para preservar los límites entre tenants.

Centillion Edge Engineering10 min de lectura

Conclusiones clave

  • El contexto de tenant debe ser explícito y validado en cada frontera de ejecución.
  • La autorización pertenece a las operaciones de dominio, no solo al middleware de ruta.
  • Las colas, cachés, exportaciones, logs y herramientas de soporte son parte del modelo de aislamiento.
  • Probar continuamente los caminos de denegación entre tenants.
01

Multi-tenancy es una arquitectura de autorización

Una columna tenant_id es útil, pero no es una estrategia de aislamiento. Las solicitudes se mueven a través de navegadores, APIs, servicios, colas, cachés, almacenamiento de objetos, exportaciones y flujos de trabajo de soporte. Cada frontera necesita una identidad de tenant inequívoca y una regla para lo que puede cruzarla.

El valor por defecto más seguro es derivar el contexto de tenant de la membresía autenticada y el enrutamiento del lado del servidor, no de un identificador arbitrario aceptado del cliente.

02

Elegir el aislamiento según la consecuencia

Las tablas compartidas, esquemas separados y bases de datos separadas ofrecen diferentes propiedades operativas y de aislamiento. La elección correcta depende de la escala, la personalización, las expectativas regulatorias, el riesgo de vecino ruidoso, los requisitos de copia de seguridad y restauración, y la capacidad operativa.

Los modelos híbridos son comunes: la mayoría de los tenants comparten un esquema bien indexado mientras las cargas de trabajo seleccionadas reciben una separación física más fuerte. La aplicación debería ocultar esa ubicación detrás de repositorios o servicios estables.

03

Autorizar la operación, el recurso y el alcance

Los nombres de rol solos son generalmente demasiado amplios. La autorización debería considerar la organización, la subcuenta, la propiedad del recurso, el módulo habilitado, la acción solicitada y a veces el estado del registro.

Los helpers de política central reducen la inconsistencia, pero los servicios de dominio aún deben aplicar las invariantes. La seguridad a nivel de fila de la base de datos puede añadir defensa en profundidad cuando la gestión de conexiones y contexto es rigurosa.

04

El trabajo en segundo plano es un fallo de aislamiento común

Cada job debería llevar contexto inmutable de tenant y actor, revalidarlo durante la ejecución y escribir las salidas en ubicaciones definidas por tenant. Las claves de caché genéricas, los directorios temporales reutilizados y los nombres de archivo de exportación sin alcance pueden eludir una autorización API por lo demás cuidadosa.

  • Claves de caché y almacenamiento de objetos prefijadas por tenant
  • Controles de tasa y concurrencia por tenant cuando sea necesario
  • Logs y trazas con alcance sin filtración de datos sensibles
  • Suplantación de soporte con aprobación, motivo, expiración e historial de auditoría
05

Probar el espacio negativo

Las pruebas de camino feliz prueban que un usuario puede acceder a sus datos. Las pruebas de aislamiento prueban que identificadores, filtros, exportaciones, webhooks, búsqueda y temporización no pueden exponer datos de otro tenant.

Cree dos tenants en las pruebas de integración e intente sistemáticamente lecturas y mutaciones entre fronteras. Incluya workers, operaciones por lotes, herramientas de administración y caminos de error, no solo endpoints HTTP.

Sobre el autor

Centillion Edge Engineering

Nuestro equipo de ingeniería escribe sobre las decisiones de arquitectura, seguridad, datos y entrega detrás de sistemas empresariales fiables.