Inicio · Blog · software-medida/multi-tenant-security

software-medida/multi-tenant-security

Multi-tenant security para SaaS vertical LATAM

Cómo diseñar multi-tenant security para un SaaS vertical en LATAM. RLS, RBAC, audit trail y caso real de 100 franquicias con aislamiento estricto.

Pablo Estrada · 11 de mayo de 2026 · 4 min de lectura
Multi-tenant security para SaaS vertical LATAM

Diseñar multi-tenant security para un SaaS vertical en LATAM se reduce a tres decisiones: RLS en PostgreSQL filtrado por tenant_id, RBAC con 7 a 17 roles según vertical, y audit trail global con hash chain SHA-256 inmutable. En Catalizadora hemos diseñado plataformas multi-tenant operando 100 franquicias internacionales con 17 roles RBAC y zero filtraciones entre tenants en 12 semanas de construcción. Cuando los datos se unifican, los problemas se anuncian solos.

Por qué single database con RLS gana sobre database-per-tenant

Tres razones operativas:

  • Operational overhead. Database-per-tenant significa N migrations, N backups, N replicas. A los 50 tenants ya nadie sabe en qué versión está cada base.
  • Costos cloud explosivos. Cada DB nueva son 25 USD/mes mínimo. 100 tenants son 2,500 USD/mes solo en bases. Vs single Supabase Pro 25 USD/mes.
  • Compliance equivalente con RLS bien hecho. Si RLS está configurado correctamente, el aislamiento lógico es tan fuerte como aislamiento físico para 99% de los reguladores.

Database-per-tenant solo tiene sentido para banca regulada, healthcare con HIPAA o clientes que contractualmente exigen aislamiento físico.

El caso real: 100 franquicias, 17 roles RBAC, 57 RLS policies

Un holding LATAM construyó una plataforma multi-tenant para 100 franquicias internacionales operando en Estados Unidos, Guatemala y Sudamérica. El reto: rollout 12 semanas sin piloto, 9,931 empleados seed, 445 oficinas activas.

Lo que se entregó en arquitectura de seguridad:

  • 57 RLS policies activas en PostgreSQL
  • 17 roles RBAC configurados (super-admin, tenant-admin, regional-manager, branch-admin, sales-rep, tech, auditor, readonly y variantes)
  • 7 roles principales con permisos granulares por módulo (Cross-Sell, AI Sales, Token Credits, Reportería, Enhanced Pest Control)
  • Audit trail inmutable con SHA-256 hash chain
  • 100 cuentas Stripe Connect (una por franquicia)
  • Onboarding 100% automatizado vía Next.js + FastAPI

Inversión total: 26,000 USD fijos. Zero filtraciones detectadas en QA y testing waves.

Stack recomendado para multi-tenant security 2026

Capa Tecnología Razón
DB PostgreSQL 17 + RLS Multi-tenancy nativo a nivel de fila
Auth Supabase Auth o Clerk JWT con claims de tenant
RBAC Casbin o policies custom Permisos granulares por rol
Audit log Append-only table + hash chain Forensicamente verificable
Secrets Vault o Supabase Vault Per-tenant secrets aislados
Observability Sentry + tags por tenant Debug por cliente sin filtrar

Las cinco trampas en multi-tenant security

Errores que cuestan filtraciones en producción:

  1. Confiar solo en filtros de aplicación. Si tu query es SELECT * FROM contratos WHERE tenant_id = ?, un bug puede omitir el WHERE. RLS lo rechaza en la base.
  2. No usar auth.uid() en policies. Hardcodear tenant_id en lugar de extraerlo del JWT es vulnerable a spoofing.
  3. Compartir secrets entre tenants. Stripe webhook secret debe ser único por tenant. Lo mismo para API keys de Twilio, OpenAI, etc.
  4. Logs sin tenant_id. Cuando un cliente reporta bug, sin tag por tenant en logs estructurados, debugging es imposible sin riesgo de filtrar otro cliente.
  5. Backups sin separación lógica. Si restauras backup de todos los tenants y un cliente pidió "right to be forgotten", restauras data eliminada y violas LFPDPPP.

Patrón Catalizadora: cómo se ven las RLS policies

Ejemplo de policy real para tabla invoices:

CREATE POLICY invoices_tenant_isolation ON invoices
  FOR ALL
  USING (tenant_id = (auth.jwt() ->> 'tenant_id')::uuid);

CREATE POLICY invoices_role_admin ON invoices
  FOR DELETE
  USING (
    tenant_id = (auth.jwt() ->> 'tenant_id')::uuid
    AND (auth.jwt() ->> 'role') = 'tenant-admin'
  );

Cada tabla con datos de tenant tiene mínimo dos policies: una de aislamiento global y una por rol con permisos write/delete.

Cómo arrancar un proyecto multi-tenant seguro en 12 semanas

Plan operativo:

  • Semanas 1 y 2: discovery de roles, módulos, permisos. Inventario de datos sensibles.
  • Semanas 3 y 4: esquema con tenant_id en cada tabla, RLS policies, RBAC blueprint, audit trail design.
  • Semanas 5 a 8: construcción modular, demos semanales, testing de aislamiento entre tenants.
  • Semanas 9 y 10: penetration interno, hardening, despliegue paralelo.
  • Semanas 11 y 12: capacitación, documentación de threat model, transferencia formal.

Próximos pasos

Si tu SaaS vertical va a operar múltiples clientes con aislamiento estricto y compliance LATAM, agenda una sesión técnica con MAGIA Forge. Doce semanas, multi-tenant security desde el primer commit, código a tu nombre.

Para automatización empresarial multi-locales con RLS, RBAC y dashboards por rol, MAGIA Core es el camino correcto. Sin retainers, sin licencias atadas.

Cómo te ayuda Catalizadora

Construimos sistemas con IA a la medida, con el código 100% tuyo. Elige por dónde empezar:

  • MAGIA Solo — marca, sitio, CRM y asistente con IA en 15 días.
  • MAGIA Core — automatización empresarial y dashboards por rol.
  • MAGIA Forge — software a medida con IA.
  • Ver precios · Academia de IA

Preguntas frecuentes

¿Qué modelo multi-tenant conviene para un SaaS vertical en LATAM?

Para 99% de los casos, single database con RLS en PostgreSQL filtrado por tenant_id. Database per tenant solo si tienes pocos clientes muy grandes con compliance estricto (banca, healthcare regulado).

¿Cómo evitar que un cliente vea datos de otro en mi SaaS multi-tenant?

RLS en PostgreSQL con policies que filtran auth.uid() o tenant_id en cada query. Nunca confíes en la aplicación: la base debe rechazar la query si el tenant no corresponde, sin importar bugs de aplicación.

¿Cuántos roles RBAC necesito en un SaaS vertical?

Mínimo 4: super-admin (plataforma), tenant-admin (cliente), tenant-user (operador), readonly (auditor). Para verticales complejos como pesticidas o construcción, 7 a 12 roles. En una plataforma reciente Catalizadora configuró 17 roles.

¿Audit trail por tenant o global en SaaS multi-tenant?

Global append-only con tenant_id como columna indexada. Hash chain SHA-256 para inmutabilidad. Cada tenant ve solo sus rows vía RLS, pero la integridad es global.

¿Conviene Supabase para multi-tenant SaaS vertical en LATAM?

Sí, hasta 50,000 usuarios concurrentes con Compute Micro y session mode pooler. Para mayor volumen, escala a Compute Small y agrega read replicas. RLS está incluido y funciona bien con Postgres 17.

¿Esto aplica a tu operación?

Déjanos tu correo y te escribimos en menos de 24 horas con un diagnóstico inicial sin costo. Sin pitch, sin agenda comercial.

¿Prefieres conversar antes? Agenda 30 minutos con Pablo Estrada — sin pitch deck.

Agendar llamada →

¿Prefieres aprender a hacerlo tú? El curso completo de la Academia son 8 clases, gratis y sin tarjeta.

Entrar a la Academia →

Sigue leyendo

Detectar IA: señales que delatan contenido generadoCRM con agente IA para inmobiliaria: guía 2026Automatizar facturas AFIP con IA: la guía operativa para