RBAC vs Aislamiento de Inquilinos: Dos Límites de Seguridad Diferentes

El RBAC controla lo que un usuario puede hacer; el aislamiento de inquilinos controla a qué recursos de qué inquilino puede llegar esa acción. Descubre por qué la seguridad SaaS multiinquilino requiere ambos límites.
Publicado:
Aleksandar Stajić
Actualizado: 8 de octubre de 2026, 20:56
RBAC vs Aislamiento de Inquilinos: Dos Límites de Seguridad Diferentes

RBAC y el aislamiento de inquilinos resuelven dos problemas de seguridad diferentes en sistemas multiinquilino. El Control de Acceso Basado en Roles (RBAC) determina qué puede hacer un principal autenticado, como leer pedidos, editar productos o gestionar usuarios. El aislamiento de inquilinos determina a qué datos, recursos y contexto de ejecución de qué inquilino puede acceder ese principal. Un usuario puede estar correctamente autenticado y correctamente asignado a un rol RBAC y aun así experimentar una falla de seguridad si la aplicación permite que ese rol opere sobre los recursos de otro inquilino.

Qué controla realmente RBAC

RBAC es un modelo de autorización en el que los permisos se asocian con roles y los usuarios se asignan a esos roles. El rol actúa como una abstracción administrativa entre identidades y permisos.

El trabajo clásico de NIST sobre RBAC formaliza esto en torno a usuarios, roles, permisos, operaciones y objetos. El beneficio práctico es que una organización puede gestionar la autorización mediante roles relativamente estables de puesto o responsabilidad en lugar de adjuntar cada permiso directamente a cada usuario.

Un rol como EDITOR puede por lo tanto significar: puede leer contenido, escribir contenido y publicar contenido. Un rol como CONTADOR puede significar: puede leer datos de facturación, conciliar facturas y aprobar liquidaciones.

Qué controla realmente el aislamiento de inquilinos

El aislamiento de inquilinos es el conjunto de mecanismos que impide que un inquilino lea, modifique, influya o reciba accidentalmente los recursos de otro inquilino en un sistema compartido.

El límite protegido es más amplio que las filas de una base de datos. El estado específico de un inquilino puede existir en tablas relacionales, almacenamiento de objetos, índices vectoriales, cachés, índices de búsqueda, mensajes de cola, archivos, artefactos temporales, trabajos en segundo plano, analíticas, límites de velocidad y recursos de infraestructura.

La guía de AWS para SaaS hace explícita la distinción: la autorización otorga acceso a recursos, mientras que el aislamiento de inquilinos garantiza que esos recursos no crucen el límite de inquilino incorrecto incluso cuando la infraestructura es compartida.

El ejemplo más simple

Supongamos que Alice es administradora del Inquilino A y Bob es administrador del Inquilino B. Ambos usuarios tienen legítimamente el mismo rol ADMIN.

RBAC puede concluir correctamente que ambos usuarios pueden ejecutar una operación como users.read. Pero cuando Alice solicita el ID de usuario 847, la aplicación aún debe verificar que el usuario 847 pertenece al Inquilino A.

Si la API solo verifica “Alice tiene ADMIN” y luego ejecuta SELECT * FROM users WHERE id = 847, RBAC tuvo éxito mientras que el aislamiento de inquilinos falló.

Una decisión correcta de autorización multiinquilino

1
1. Autenticar al principal
Establecer quién es el usuario, servicio o agente.
2
2. Resolver el contexto de inquilino verificado
Determinar qué contexto de inquilino aplica a partir de información confiable de identidad/pertenencia del lado del servidor.
3
3. Resolver el permiso
Evaluar si el rol o la política del principal permite la operación solicitada.
4
4. Acotar el recurso objetivo
Verificar que el objeto objetivo pertenece al inquilino permitido o a un ámbito explícitamente compartido.
5
5. Aplicar en el límite de acceso
Realizar la operación de base de datos, caché, almacenamiento, cola o servicio con las restricciones de inquilino aplicadas.
6
6. Auditar ambas dimensiones
Registrar principal, inquilino, operación, objetivo y resultado para que los intentos entre inquilinos sean visibles.

Dónde se detiene el ejemplo simple

Los sistemas reales a menudo contienen varias clases de identidad: usuarios de inquilinos, administradores de plataforma, trabajadores en segundo plano, integraciones, agentes y servicios operativos entre inquilinos. Algunos de estos cruzan legítimamente los límites de los inquilinos.

Eso no elimina la necesidad de aislamiento. Significa que la autoridad entre inquilinos debe ser explícita, estrecha y auditable por separado en lugar de surgir accidentalmente de un rol global o una conexión de base de datos sin alcance.

El aislamiento de inquilinos también puede variar según la capa. Un producto puede compartir servidores de aplicaciones mientras separa las bases de datos, o usar una base de datos compartida con políticas a nivel de fila mientras otorga a los inquilinos premium almacenamiento o cómputo aislado. No existe una única topología de aislamiento universal.

RBAC vs aislamiento de inquilinos

Dos dimensiones de seguridad diferentes

RBACAislamiento de inquilinos
Pregunta principal
Unidad típica
Ejemplo
Fallo típico
Implementación típica
¿Puede existir solo?

Autenticación, autorización y aislamiento son tres verificaciones diferentes

CapaPreguntaFallo de ejemplo
Autenticación¿Quién es este principal?El atacante se hace pasar por Alice
Autorización / RBAC¿Puede este principal realizar esta operación?El visor puede eliminar usuarios
Aislamiento de inquilinos¿Puede esta operación alcanzar este límite de inquilino/recurso?El administrador del inquilino A lee el pedido del inquilino B

Estas verificaciones están relacionadas pero no son sustituibles. La autenticación puede ser perfecta mientras la autorización falla. La autorización puede ser correcta mientras el aislamiento de inquilinos falla. Una ruta de solicitud SaaS segura necesita todos los límites aplicables.

Los roles necesitan un alcance

La palabra ADMIN está incompleta sin alcance. Puede significar administrador de plataforma, administrador de inquilino, administrador de proyecto, administrador de espacio de trabajo o administrador de un subsistema.

En sistemas multiinquilino, la asignación de roles normalmente debe asociarse con la membresía del inquilino u otro alcance de recurso explícito. El mismo usuario puede ser legítimamente ADMIN en el inquilino A y VIEWER en el inquilino B.

Un modelo de rol global que ignora esta distinción puede crear fugas de privilegios incluso cuando el mapa de permisos en sí es correcto.

El contexto del inquilino debe provenir de una ruta confiable

Un ID de inquilino proporcionado por el cliente es útil como selector, pero no es prueba de autoridad. El servidor debe derivar o verificar la membresía del inquilino contra la identidad autenticada y los datos de autorización actuales.

La guía multiinquilino actual de OWASP recomienda establecer el contexto del inquilino temprano en el ciclo de vida de la solicitud y advierte explícitamente contra tratar los encabezados del cliente o los parámetros de solicitud como prueba de autorización.

Esto importa porque una modificación trivial de la solicitud de inquilino=A a inquilino=B no debe ser suficiente para cruzar el límite de aislamiento.

El alcance del inquilino pertenece a la búsqueda de recursos

Un patrón común de aislamiento a nivel de aplicación es incluir el alcance del inquilino en la misma consulta que resuelve el recurso.

Búsqueda débilBúsqueda con alcance de inquilino más fuerte
findFirst({ where: { id } })findFirst({ where: { id, tenantId } })
UPDATE orders SET ... WHERE id = ?UPDATE orders SET ... WHERE id = ? AND tenant_id = ?
cache.get('user:' + id)cache.get('tenant:' + tenantId + ':user:' + id)

Este patrón no es el único mecanismo de aislamiento posible, pero mantiene la propiedad del inquilino cerca de la operación de acceso a datos y evita que un ID de objeto se convierta en una capacidad entre inquilinos.

Las comprobaciones en la aplicación son útiles, pero el aislamiento no debería depender de un comportamiento perfecto del desarrollador

La guía de aislamiento de AWS advierte explícitamente contra dejar la aplicación del aislamiento solo en manos de los desarrolladores de servicios. En una base de código grande, eventualmente una consulta, clave de caché o ruta de trabajo puede omitir el alcance del inquilino.

La defensa en profundidad puede, por lo tanto, trasladar el aislamiento a middleware compartido, capas de repositorio/servicio, motores de políticas, seguridad a nivel de fila de la base de datos, credenciales dedicadas, esquemas separados o bases de datos separadas según el riesgo y la arquitectura.

Estrategias de aislamiento de bases de datos

EstrategiaLímiteFortaleza / compensación
Tablas compartidas + clave de inquilinoPolítica de fila/aplicaciónEficiente operativamente; requiere alcance de inquilino exhaustivo y pruebas sólidas
Tablas compartidas + RLS de base de datosLímite de política de base de datosReduce la dependencia de cada consulta de la aplicación; requiere roles correctos, contexto de inquilino de sesión/transacción y cobertura de políticas
Esquemas separadosLímite de espacio de nombres / rol de BDSeparación lógica más fuerte; mayor complejidad operativa
Bases de datos separadasLímite de base de datos / credencialesAislamiento fuerte y una historia de radio de impacto más simple; mayor costo de aprovisionamiento y operaciones
Infraestructura/cuenta separadaLímite de infraestructuraSeparación de grano grueso más fuerte; mayor costo y sobrecarga operativa
HíbridoPor carga de trabajo/clase de datosPermite un aislamiento más fuerte solo donde el riesgo/cumplimiento lo justifica

La hoja de referencia actual de seguridad multiinquilino de OWASP enumera bases de datos separadas, esquemas separados, tablas compartidas con controles a nivel de fila y modelos híbridos. El modelo correcto depende del nivel de amenaza, el cumplimiento, el rendimiento y el costo operativo.

La seguridad a nivel de fila de PostgreSQL puede proporcionar defensa en profundidad

Con tablas compartidas, la seguridad a nivel de fila de PostgreSQL puede aplicar un predicado de inquilino en la capa de base de datos para que las consultas ordinarias no puedan ver filas fuera de la política de inquilino activa.

Sin embargo, RLS no es mágico. Los superusuarios de PostgreSQL y los roles con BYPASSRLS pueden eludir las políticas de fila. Por lo tanto, OWASP recomienda usar un rol de ruta de solicitud con privilegios mínimos y probar el mismo modo de conexión/agrupación utilizado en producción.

La reutilización de conexiones es otro borde importante: el contexto del inquilino debe establecerse y restablecerse de forma segura para cada transacción/solicitud para que una conexión agrupada no pueda filtrar el estado previo del inquilino.

El aislamiento de inquilinos debe incluir cachés

Una consulta de base de datos puede tener un alcance perfecto y aún así filtrar datos a través de una clave de caché compartida.

Si user:42 existe tanto en el Inquilino A como en el Inquilino B, una clave de caché global puede devolver el valor del inquilino incorrecto. Las claves de caché sensibles al inquilino deben incluir cada atributo que cambie la visibilidad o la semántica del resultado, comúnmente inquilino, usuario, configuración regional, conjunto de características o versión de permisos.

La partición de caché es defensa en profundidad, no un reemplazo de la autorización. La solicitud aún debe autorizarse antes de que se devuelva el contenido protegido en caché.

Los archivos y el almacenamiento de objetos necesitan su propia frontera de inquilino

El almacenamiento de objetos debe distinguir entre objetos globales, con alcance de inquilino y con alcance de usuario. Un prefijo de carpeta por sí solo es únicamente una convención de nombres, a menos que la política de acceso realmente restrinja las lecturas y escrituras.

Los diseños más sólidos pueden usar claves de objeto con reconocimiento de inquilino, políticas de bucket, buckets/cuentas separados o claves de cifrado específicas del inquilino cuando el riesgo o el cumplimiento exijan un aislamiento más fuerte.

Las URL firmadas deben autorizarse antes de su emisión y limitarse al objeto y la operación exactos. La posesión de un identificador de objeto no debería por sí misma otorgar acceso entre inquilinos.

Los trabajos en segundo plano y las colas pueden romper el aislamiento

Los trabajos asíncronos a menudo abandonan el contexto de la solicitud HTTP original, lo que hace fácil manejar mal la propagación del inquilino. Un mensaje de cola que contiene tenantId no es prueba suficiente de que el productor estuviera autorizado.

El worker debe llevar una identidad de servicio/usuario verificada o un sobre de trabajo confiable, restablecer el contexto del inquilino y volver a autorizar las operaciones consecuentes en la frontera del consumidor.

El aislamiento de inquilinos también incluye la disponibilidad. Un inquilino no debería poder monopolizar workers, colas, pools de conexiones o cómputo compartidos de manera que degrade materialmente a otros inquilinos.

La búsqueda y RAG necesitan recuperación con reconocimiento de inquilino

La IA multiinquilino introduce otra copia del problema de aislamiento. Los documentos pueden dividirse en fragmentos, incrustarse y almacenarse en un índice vectorial después de la ingesta.

La guía actual de seguridad de RAG de OWASP establece que el control de acceso debe aplicarse en el momento de la recuperación y que los fragmentos del Inquilino A no deben ser recuperados por consultas del Inquilino B. No se puede simplemente asumir que los permisos a nivel de documento sobreviven automáticamente a la fragmentación.

Por lo tanto, el índice vectorial necesita metadatos de inquilino/acceso o colecciones física o lógicamente separadas según el diseño de aislamiento. Los filtros de recuperación deben aplicarse antes de que contenido no autorizado pueda entrar en el contexto del modelo.

Los datos derivados heredan la sensibilidad del inquilino

Las incrustaciones, los índices de búsqueda, las miniaturas, los resúmenes generados, las cachés, las filas de analítica y las respuestas de IA se derivan de los datos de origen. Su alcance de inquilino debe seguir a la fuente, a menos que una transformación explícita cree un artefacto compartido/global legítimo.

Por lo tanto, la eliminación y la baja deben propagarse más allá de la fila canónica. Eliminar un documento de inquilino mientras se dejan fragmentos buscables o resúmenes en caché puede mantener la exposición entre inquilinos o posterior a la retención.

No todo pertenece a un inquilino

Las plataformas multiinquilino a menudo tienen recursos intencionalmente globales: taxonomías de productos, plantillas públicas, permisos del sistema, definiciones de características o contenido público.

El modelo más seguro es la clasificación explícita: global, con alcance de inquilino, con alcance de usuario o explícitamente entre inquilinos. Los recursos ambiguos son donde comienza la fuga accidental.

Un objeto compartido intencionalmente debe tener una razón documentada para ser global en lugar de simplemente carecer de una asociación de inquilino.

Los administradores de plataforma requieren un modelo de autoridad diferente

Un operador de plataforma puede necesitar inspeccionar múltiples inquilinos para soporte, cumplimiento u operaciones de infraestructura. Modelar esto como un ADMIN de inquilino ordinario con acceso global accidental a la base de datos debilita tanto la seguridad como la auditabilidad.

Un mejor diseño utiliza una identidad de plataforma distinta o un permiso explícito entre inquilinos, autenticación más fuerte, limitación de propósito, auditoría detallada y, cuando corresponda, controles de aprobación o de acceso de emergencia.

Por lo tanto, el acceso entre inquilinos debe ser una capacidad nombrada, no la ausencia de un filtro de inquilino.

RBAC se puede combinar con atributos

Algunas decisiones dependen de más que el rol. La pertenencia al inquilino, la región, el propietario del recurso, el nivel de suscripción, el tiempo, la pertenencia al proyecto o la clasificación de datos pueden afectar el acceso.

RBAC y ABAC no son mutuamente excluyentes. La guía actual de autorización multiinquilino de AWS analiza modelos RBAC, ABAC e híbridos. Un rol puede definir una responsabilidad amplia mientras que los atributos restringen qué instancia de recurso concreta se puede acceder.

La regla clave de arquitectura sigue siendo: no codifique el aislamiento de inquilinos solo como un nombre de rol incidental si la identidad del inquilino es un límite de recurso de primera clase.

Las decisiones de autorización son al menos bidimensionales

PrincipalPermiso de rolRelación de inquilinoDecisión
Aliceorders.readEl pedido pertenece al inquilino de AlicePermitir
Aliceorders.readEl pedido pertenece a otro inquilinoDenegar
Aliceorders.writeEl pedido pertenece al inquilino de AlicePermitir si el rol incluye escritura
Aliceorders.writeEl pedido pertenece a otro inquilinoDenegar
Soporte de plataformasupport.cross_tenant.readAlcance de soporte explícito + inquilino objetivo auditadoPotencialmente permitir bajo política de plataforma
Trabajador en segundo planoorders.processAlcance de servicio confiable para el inquilino del trabajoPermitir solo para el inquilino del trabajo verificado

Evidencia de implementación original: Aaasaasa AI CMS

El servicio RBAC define códigos de permiso tipados como cms.content.read, shop.orders.write, billing.reconcile y users.roles. Los roles del sistema asignan esos permisos a conjuntos de responsabilidad nombrados.

Los registros de roles se crean y resuelven con un tenantId. Los roles del sistema se insertan o actualizan utilizando una identidad compuesta de inquilino/código, y el listado de roles se filtra por inquilino.

La actualización y eliminación de roles primero resuelven el rol utilizando tanto el ID del rol como el ID del inquilino. Las asignaciones de rol de usuario también se almacenan y reemplazan bajo el contexto del inquilino actual.

La resolución de permisos lee asignaciones explícitas de rol de usuario con alcance tanto de tenantId como de userId. Esto evita que la asignación de rol de un inquilino se convierta automáticamente en la asignación de rol de otro inquilino.

A nivel de API, las rutas administrativas de RBAC resuelven un contexto de inquilino antes de crear o modificar roles. Esta es la dirección correcta: la administración de permisos en sí misma debe respetar la multi-tenencia.

Patrón de implementación observadoSignificado de seguridad
Códigos de permiso tipadosEl vocabulario de operaciones RBAC es explícito
Mapas de rol de sistema → permisosLos roles agregan permisos en lugar de codificar usuarios de forma rígida
Identidad de rol tenantId_codeEl mismo rol lógico puede existir por separado por inquilino
La búsqueda de roles usa id + tenantIdLa mutación de roles está limitada al inquilino
La relación usuario-rol almacena tenantIdLa pertenencia no se infiere globalmente solo del rol
La resolución de permisos usa tenantId + userIdLa autorización se evalúa dentro del contexto del inquilino

Por qué esta distinción importa aún más para los agentes de IA

Los agentes de IA pueden convertir un error de permisos en una secuencia de acciones. Si a un agente se le da una herramienta amplia orders.read sin aplicación con alcance de inquilino, una falla de razonamiento o de inyección de prompts puede causar lecturas entre inquilinos a velocidad de máquina.

Las descripciones de herramientas del agente pueden mencionar restricciones de inquilino, pero la aplicación aún debe ocurrir en la capa confiable de tiempo de ejecución/servicio/datos. Las instrucciones en lenguaje natural no son una frontera de autorización.

Lo mismo se aplica a RAG: un agente puede tener permiso para usar la herramienta de búsqueda mientras el backend de búsqueda aún debe evitar que la consulta del Inquilino A devuelva fragmentos del Inquilino B.

Probar RBAC y aislamiento de inquilinos por separado

Familia de pruebasQué debería probar
Prueba de degradación de rolUn usuario sin un permiso no puede realizar la operación incluso dentro de su propio inquilino
Prueba de objeto entre inquilinosUn usuario con el rol correcto aún no puede acceder al mismo tipo de recurso en otro inquilino
Manipulación de identificadoresCambiar los ID de objeto/inquilino no cruza el alcance
Prueba de endpoint de listado/masivoLas consultas amplias devuelven solo datos de inquilinos autorizados
Prueba de reutilización de cachéDos inquilinos que usan procesos/conexiones reutilizados nunca reciben el estado en caché del otro
Prueba de rol de solicitud RLSEl rol de solicitud de producción no puede eludir las políticas de fila
Prueba de trabajador asíncronoEl contexto del inquilino sobrevive al encolado y se revalida al consumirse
Prueba de recuperación vectorialLa consulta del Inquilino A nunca recupera fragmentos del Inquilino B
Prueba de administrador de plataformaLa capacidad entre inquilinos es explícita, limitada y auditable
Prueba de baja de servicioLos datos del inquilino y los índices/cachés derivados se eliminan según la política

La guía de regresión de autorización de OWASP señala específicamente las pruebas de frontera entre inquilinos porque los cambios de código en cachés, consultas o servicios compartidos pueden romper silenciosamente el aislamiento incluso cuando las pruebas de roles siguen pasando.

Modos de falla comunes

Modo de fallaPor qué falla
Verificar el rol pero no el inquilinoUn rol válido se convierte en autoridad entre inquilinos
Confiar en el ID de inquilino de la solicitudEl cliente controla el selector de aislamiento
Delimitar la UI pero no la APILos botones ocultos no protegen los recursos del backend
Endpoint de detalle con reconocimiento de inquilino, endpoint de listado sin alcanceLas lecturas masivas filtran otros inquilinos
Filtro de inquilino en la mayoría de las consultasUna ruta olvidada rompe la frontera
Claves de caché globalesEl aislamiento correcto de la base de datos se elude mediante datos en caché
Índice vectorial compartido sin filtros de metadatos aplicadosRAG recupera fragmentos de otro inquilino
ID de inquilino del mensaje de cola tratado como autorizaciónUn trabajo falsificado o producido incorrectamente puede cruzar la frontera de inquilino
Administrador de plataforma modelado como ADMIN ordinarioEl poder entre inquilinos se vuelve implícito y difícil de auditar
Rol copiado globalmente entre pertenencias de inquilinosEl usuario recibe permisos en inquilinos donde nunca fue asignado
Bases de datos separadas pero credencial privilegiada compartidaLa aplicación aún puede cruzar bases de datos si su credencial es demasiado amplia
RLS con rol de solicitud BYPASSRLSLa política de base de datos existe pero no protege la ruta de solicitud real
UUID aleatorios tratados como aislamientoLos identificadores difíciles de adivinar reducen la enumeración pero no autorizan el acceso

Conceptos erróneos comunes

Concepto erróneoCorrección
“RBAC proporciona aislamiento de inquilinos.”RBAC controla permisos; el aislamiento también requiere alcance de inquilino/recurso.
“Si el usuario es administrador, las verificaciones de inquilino son innecesarias.”La autoridad de administrador aún debe tener un alcance explícito.
“El ID de inquilino en el JWT es suficiente.”Puede ser una entrada confiable solo si se valida y se aplica de manera consistente a cada ruta de recurso protegida.
“Bases de datos separadas eliminan los requisitos de autorización.”Los usuarios aún necesitan permisos a nivel de operación dentro de su inquilino.
“Una columna tenant_id significa que el sistema está aislado.”El campo solo ayuda si las rutas de acceso lo aplican.
“Los UUID previenen el acceso entre inquilinos.”Los identificadores impredecibles son defensa en profundidad, no autorización.
“RLS significa que el código de la aplicación no necesita verificaciones de seguridad.”La autorización de la aplicación, los roles de base de datos correctos y la cobertura de políticas aún importan.
“Una base de datos vectorial compartida es insegura.”Puede ser segura si el aislamiento es aplicable y verificado; la separación física es una opción, no la única.
“El soporte de plataforma necesita ADMIN global.”El soporte entre inquilinos debe ser una autoridad distinta, restringida y auditable.
“Los servicios internos pueden omitir las verificaciones de inquilino.”Las rutas internas aún pueden verse comprometidas o mal configuradas y deben preservar el contexto del inquilino.

Una secuencia de diseño práctica

Diseñar permisos y aislamiento como dimensiones separadas

1
1. Definir la propiedad del inquilino
Clasificar qué entidades y recursos son globales, con alcance de inquilino, con alcance de usuario o intencionalmente entre inquilinos.
2
2. Definir operaciones
Crear permisos explícitos para lecturas, escrituras, publicación, aprobaciones, administración y otras acciones comerciales.
3
3. Definir roles
Agrupar permisos según responsabilidades sin incorporar un alcance global accidental.
4
4. Definir el alcance de pertenencia
Vincular las asignaciones de roles al contexto de inquilino/espacio de trabajo/proyecto en el que se aplican.
5
5. Resolver el contexto de inquilino confiable
Derivar la identidad del inquilino a partir de la pertenencia autenticada y verificada por el servidor o la autorización del servicio.
6
6. Aplicar la propiedad de los recursos
Aplicar el alcance de inquilino en cada frontera de datos/servicio propiedad del inquilino.
7
7. Agregar defensa en profundidad
Usar RLS, credenciales separadas, esquemas/bases de datos, políticas de almacenamiento o motores de políticas donde el riesgo lo justifique.
8
8. Llevar el alcance a través de sistemas derivados
Preservar los metadatos del inquilino en caché, búsqueda, índices vectoriales, colas, archivos y analítica.
9
9. Modelar explícitamente las operaciones entre inquilinos
Separar la administración de la plataforma y las identidades de servicio de los roles ordinarios de inquilino.
10
10. Probar ambos ejes
Ejecutar pruebas negativas para permiso faltante y para inquilino incorrecto de forma independiente.
11
11. Auditar inquilino + permiso juntos
Registrar quién actuó, en qué inquilino, sobre qué objetivo y bajo qué autoridad.
12
12. Volver a probar después de cambios de esquema/tiempo de ejecución
El aislamiento puede romperse cuando se introducen nuevas tablas, cachés, colas o rutas de recuperación.

Lista de verificación de RBAC + aislamiento de inquilinos

PreguntaRespuesta esperada
¿Quién es el principal?Identidad de usuario/servicio/agente autenticada
¿Qué contexto de inquilino aplica?Pertenencia verificada por el servidor o alcance del servicio
¿Qué operación se solicita?Permiso tipado o acción de política
¿El principal tiene ese permiso?Decisión de rol/política
¿Quién es propietario del recurso objetivo?Clasificación explícita de inquilino/global/usuario
¿El alcance del recurso coincide con la autoridad?Búsqueda/política con reconocimiento de inquilino
¿El almacenamiento puede eludir las verificaciones de la aplicación?Decisión de defensa en profundidad documentada
¿Las cachés son seguras para inquilinos?Las claves/espacios de nombres y la autorización preservan el alcance del inquilino
¿Los archivos/blobs son seguros para inquilinos?La política de objetos y la emisión de URL firmadas aplican el alcance
¿Los trabajos asíncronos son seguros para inquilinos?El contexto verificado se propaga y se revalida
¿RAG/búsqueda es seguro para inquilinos?Aislamiento de metadatos/colecciones aplicado antes del contexto del modelo
¿Los administradores entre inquilinos son explícitos?Autoridad, controles y auditoría separados
¿Las credenciales ordinarias pueden eludir el aislamiento?No, o una ruta excepcional estrictamente documentada
¿Las pruebas negativas entre inquilinos están automatizadas?Sí para cada capa de acceso relevante

Casos límite y limitaciones

Un usuario puede pertenecer a múltiples inquilinos. Por lo tanto, el inquilino actual debe ser un contexto de ejecución explícito, no inferido permanentemente de la cuenta de usuario.

Algunos recursos se comparten intencionalmente entre inquilinos seleccionados, como espacios de colaboración o datos de consorcio. Esto requiere un modelo de compartición explícito; pretender que el recurso pertenece a un inquilino y añadir excepciones después suele crear autorización ambigua.

El aislamiento de vecinos ruidosos está relacionado pero es diferente del aislamiento de confidencialidad. Un inquilino puede nunca ver los datos de otro inquilino y aun así agotar la CPU compartida, la capacidad de cola o las conexiones de base de datos. Por lo tanto, los límites de velocidad y las cuotas de recursos pueden ser conscientes del inquilino como un límite de disponibilidad.

El aislamiento físico no es automáticamente seguro si las credenciales del plano de control o las rutas administrativas pueden cruzar límites. El aislamiento lógico no es automáticamente débil si las políticas se aplican centralmente, con privilegios mínimos y se prueban exhaustivamente.

Los requisitos de aislamiento de inquilinos pueden diferir según la clase de datos. Los datos de catálogo público, los registros de facturación y los documentos privados de IA pueden justificar diferentes límites de almacenamiento y cifrado dentro del mismo producto SaaS.

¿Qué cambiaría esta respuesta?

La implementación exacta cambia con la arquitectura: las API sin servidor, Kubernetes, PostgreSQL, el almacenamiento de objetos, las bases de datos vectoriales y los motores de políticas exponen diferentes primitivas de aislamiento.

La fuerza requerida también cambia con la regulación, los contratos de clientes, la sensibilidad de los datos, el modelo de amenaza y la escala operativa. Algunos inquilinos pueden justificar bases de datos o infraestructura en silos, mientras que otros comparten recursos agrupados.

La distinción conceptual no cambia: el permiso para realizar una operación no es lo mismo que el permiso para cruzar un límite de inquilino.

Conocimiento canónico relacionado

S01 es un requisito previo de límite de seguridad para la Arquitectura de IA Empresarial y la Gobernanza de IA. Una vez que las herramientas de IA, RAG o los agentes operan sobre datos multiinquilino, la identidad del inquilino debe viajar a través de la recuperación, la ejecución de herramientas, la memoria, las cachés y los rastros de auditoría.

También se conecta directamente con la IA Agéntica: la capacidad de la herramienta y el permiso de rol aún deben estar restringidos por la propiedad del inquilino antes de que un agente pueda leer o modificar recursos empresariales.

Para RAG, el aislamiento de inquilinos debe aplicarse antes de que los fragmentos protegidos lleguen al contexto del modelo.

Preguntas frecuentes

Preguntas frecuentes sobre RBAC vs aislamiento de inquilinos

¿Cuál es la diferencia entre RBAC y el aislamiento de inquilinos?

RBAC determina qué operaciones puede realizar un principal. El aislamiento de inquilinos determina a qué recursos de qué inquilino pueden acceder esas operaciones. Las aplicaciones multiinquilino seguras normalmente necesitan ambos.

¿Un rol ADMIN permite automáticamente el acceso a todos los inquilinos?

No. ADMIN debe tener un alcance explícito. Un administrador de inquilino normalmente tiene permisos amplios solo dentro de ese inquilino, mientras que la administración de plataforma entre inquilinos debe modelarse por separado.

¿Es suficiente la autenticación para el aislamiento de inquilinos?

No. La autenticación prueba la identidad. La autorización controla las acciones permitidas. El aislamiento de inquilinos además evita que esas acciones lleguen a los recursos del inquilino equivocado.

¿Debería almacenarse tenantId en el JWT?

Puede ser una entrada al contexto del inquilino, pero el servidor debe verificar la membresía/autoridad actual y aplicar el alcance en los límites de recursos protegidos. Una afirmación por sí sola no reemplaza los controles de aislamiento.

¿Necesito una base de datos separada por inquilino?

No necesariamente. Los modelos de tabla compartida, RLS, esquema, base de datos, infraestructura e aislamiento híbrido pueden ser válidos según los requisitos de riesgo y operativos.

¿Puede PostgreSQL RLS reemplazar los filtros de inquilino en el código de la aplicación?

RLS puede proporcionar una fuerte defensa en profundidad, pero los roles de base de datos correctos, el contexto de la solicitud, la cobertura de políticas y la autorización a nivel de aplicación siguen siendo importantes.

¿Cómo debería RAG aplicar el aislamiento de inquilinos?

El alcance de inquilino/acceso debe aplicarse durante la recuperación para que los fragmentos no autorizados nunca entren en el contexto del modelo. Preserve los metadatos de acceso a través del chunking y la indexación.

¿Puede un usuario tener diferentes roles en diferentes inquilinos?

Sí. Esto es común en SaaS B2B y es una fuerte razón para delimitar las asignaciones de roles por membresía de inquilino en lugar de tratar los roles como adjuntos globalmente al usuario.

¿Cuál es la mejor prueba para el aislamiento de inquilinos?

Use pruebas negativas entre inquilinos: cree al menos dos inquilinos, otorgue a un usuario permisos válidos en un inquilino, luego demuestre que cada ruta protegida deniega el acceso a los recursos del otro inquilino.

Glosario

Términos clave de seguridad multiinquilino

RBAC
Control de acceso basado en roles: un modelo de autorización que asocia permisos con roles y asigna usuarios o principales a esos roles.
Inquilino
Un cliente, organización, espacio de trabajo u otro consumidor lógico aislado de un sistema multiinquilino compartido.
Aislamiento de inquilinos
Mecanismos que impiden que un inquilino acceda, modifique o reciba los recursos de otro inquilino en un sistema compartido.
Autenticación
Verificación de la identidad de un usuario, servicio u otro principal.
Autorización
Proceso de decisión que determina si un principal puede realizar una operación solicitada sobre un recurso.
Permiso
Una operación o capacidad permitida definida, como orders.read o users.write.
Rol
Una agrupación nombrada de permisos asociada con una responsabilidad o función.
ABAC
Control de acceso basado en atributos: autorización basada en atributos del principal, recurso, acción o entorno.
Seguridad a nivel de fila
Mecanismo de política de base de datos que restringe qué filas puede leer o modificar un rol o sesión de base de datos.
Acceso entre inquilinos
Cualquier ruta de acceso en la que un principal que opera bajo el contexto de un inquilino alcanza recursos pertenecientes a otro inquilino.
Administrador de plataforma
Una identidad operativa privilegiada con autoridad modelada explícitamente que puede abarcar múltiples inquilinos.
Contexto de inquilino
El ámbito de inquilino verificado bajo el cual se ejecuta la solicitud, trabajo o operación de agente actual.

Conclusión

RBAC y el aislamiento de inquilinos son mecanismos de seguridad complementarios, no competidores. RBAC estructura el permiso operativo; el aislamiento de inquilinos restringe el límite de recursos dentro del cual ese permiso puede aplicarse.

Por lo tanto, una solicitud multiinquilino robusta necesita más que “el usuario tiene el rol ADMIN”. Necesita un principal verificado, un contexto de inquilino verificado, una operación permitida, un objetivo con alcance de inquilino y aplicación en cada capa de recursos que pueda contener datos propiedad del inquilino.

La regla confiable más corta es: autoriza la acción, luego aísla el alcance — y nunca asumas que uno prueba el otro.

Fuentes primarias y orientación actual

Las fuentes a continuación respaldan la definición de RBAC y la orientación actual sobre aislamiento de inquilinos. La sección de Aaasaasa AI CMS es evidencia de implementación original y está intencionalmente limitada a los patrones de código que fueron verificados.

NIST — Control de acceso basado en roles

Descripción general de NIST de los modelos RBAC y el estándar INCITS RBAC, incluidos usuarios, roles, permisos, operaciones y objetos.

NIST CSRC — Glosario RBAC

Definiciones actuales del glosario de NIST sobre control de acceso basado en roles como asignación de permisos a través de roles.

AWS — La mentalidad de aislamiento

Orientación de AWS SaaS que distingue explícitamente la autenticación/autorización del aislamiento de inquilinos y recomienda mecanismos de aislamiento compartidos.

AWS — Preguntas frecuentes sobre autorización multiinquilino

Orientación actual que explica la diferencia entre autorización y aislamiento de inquilinos en aplicaciones SaaS.

AWS — Consideraciones de diseño multiinquilino

Orientación actual de SaaS que distingue el aislamiento de inquilinos de la autorización y analiza modelos de políticas de autorización agrupados/aislados.

OWASP — Hoja de referencia de seguridad de aplicaciones multiinquilino

Orientación práctica actual para el contexto de inquilino, aislamiento de base de datos, cachés, almacenamiento, colas, pruebas y prevención de acceso entre inquilinos.

OWASP — Hoja de referencia de seguridad de RAG

Orientación actual que exige control de acceso en el momento de la recuperación y aislamiento de inquilinos para almacenes vectoriales multiinquilino.

OWASP — Pruebas de regresión de autorización

Orientación actual de pruebas que incluye pruebas de degradación de roles y límites entre inquilinos.

Related Articles

Bases de datos vectoriales, embeddings y reranking: tres partes diferentes de la recuperación

Bases de datos vectoriales, embeddings y reranking: tres partes diferentes de la recuperación

Las incrustaciones representan el significado, las bases de datos vectoriales recuperan candidatos y los rerankers refinan los resultados. Aprende en qué se diferencian y cómo trabajan juntas estas tres capas de recuperación en RAG.

Cómo saber si un agente de IA realmente utilizó la evidencia correcta

Cómo saber si un agente de IA realmente utilizó la evidencia correcta

Un agente de IA puede citar fuentes y aun así usar la evidencia incorrecta. Este artículo presenta un método práctico para verificar el respaldo de las afirmaciones, la autoridad de la fuente, la aplicabilidad, la procedencia y si la evidencia realmente influyó en la respuesta.

¿Qué debería recordar, olvidar, recalcular o volver a recuperar un agente de IA?

¿Qué debería recordar, olvidar, recalcular o volver a recuperar un agente de IA?

Los agentes de larga duración no deberían recordarlo todo. Este artículo proporciona un modelo práctico de ciclo de vida para decidir qué pertenece a la memoria duradera, qué se debería recuperar de nuevo, qué es más seguro recalcular y qué debería expirar o ser sustituido.

MCP vs A2A vs UCP vs AP2 vs A2UI: La pila de protocolos de agentes explicada

MCP vs A2A vs UCP vs AP2 vs A2UI: La pila de protocolos de agentes explicada

MCP, A2A, UCP, AP2 y A2UI a menudo se presentan como estándares de agentes competidores. En su mayoría, resuelven diferentes problemas de interoperabilidad. Esta guía mapea cada protocolo con el límite que realmente estandariza—y muestra cómo pueden funcionar juntos en un sistema de producción.

IA agéntica explicada: cuando un sistema de IA puede planificar, usar herramientas y actuar

IA agéntica explicada: cuando un sistema de IA puede planificar, usar herramientas y actuar

La IA agéntica utiliza modelos dentro de bucles de ejecución de varios pasos, donde pueden elegir herramientas, observar resultados, actualizar el estado y adaptar su siguiente acción dentro de límites explícitos de tiempo de ejecución y permisos.

IA soberana: control de modelos, datos, infraestructura y dependencias

IA soberana: control de modelos, datos, infraestructura y dependencias

La IA soberana se trata del control efectivo sobre los modelos, los datos, la infraestructura, el software, las operaciones y las dependencias estratégicas, no simplemente de dónde está alojado un modelo de IA.

IA con aislamiento de red: cómo funcionan los sistemas de IA sin acceso a Internet ni a la nube

IA con aislamiento de red: cómo funcionan los sistemas de IA sin acceso a Internet ni a la nube

La IA con aislamiento de red ejecuta modelos, RAG y aplicaciones de IA dentro de un dominio de seguridad aislado sin dependencias de internet ni de la nube. Descubra cómo funcionan los modelos, los datos, las actualizaciones y las herramientas sin conexión.

¿Cuándo debería una IA dejar de confiar en su propio conocimiento? — El desencadenante de la recuperación

¿Cuándo debería una IA dejar de confiar en su propio conocimiento? — El desencadenante de la recuperación

Un modelo de IA no necesita recuperación para cada pregunta. El problema importante es saber cuándo su conocimiento interno ya no es suficiente. El Disparador de Recuperación es un límite de decisión práctico que determina cuándo un sistema de IA debe dejar de depender únicamente del conocimiento del modelo y obtener evidencia externa antes de responder.

¿Qué es la ingeniería de contexto? Lo que el modelo recibe antes de responder

¿Qué es la ingeniería de contexto? Lo que el modelo recibe antes de responder

La ingeniería de contexto diseña qué información recibe un modelo de IA antes de la inferencia, incluidos los prompts, la recuperación, la memoria, el estado de la aplicación, los resultados de las herramientas y el historial de conversación.

Por qué más contexto puede empeorar las respuestas de la IA

Por qué más contexto puede empeorar las respuestas de la IA

Una ventana de contexto más grande no garantiza una mejor respuesta. Este artículo explica cómo la dilución de la señal, la evidencia contradictoria, el estado obsoleto, la sensibilidad a la posición y la compresión con pérdidas pueden reducir la fiabilidad de la IA—e introduce una práctica Prueba de Presión de Contexto.

La GPU no es el producto: arquitectura de IA privada a prueba de futuro

La GPU no es el producto: arquitectura de IA privada a prueba de futuro

La infraestructura de IA privada no debe diseñarse en torno a una sola GPU o un solo modelo. Un enfoque más resiliente combina GPUs de inferencia rápida, sistemas de IA ricos en memoria, nodos de IA física y modelos en la nube frontier opcionales detrás de una capa de enrutamiento consciente de las capacidades.

La memoria del agente de IA no es RAG: cómo separar memoria, recuperación, estado y contexto

La memoria del agente de IA no es RAG: cómo separar memoria, recuperación, estado y contexto

La memoria del agente, RAG, el estado y el contexto a menudo se usan como si fueran intercambiables. No lo son. Este modelo práctico de arquitectura separa las cuatro capas, muestra dónde pertenece cada una y explica qué se rompe cuando los sistemas las colapsan en una sola.