🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónModelos de aislamiento de inquilinos
5 tareas · 38 min · Principiante
Una plataforma SaaS atiende a muchos clientes con el mismo software, y la pregunta de seguridad que lo domina todo es hasta dónde llega un fallo: a un cliente, a unos cuantos o a todos. En Agendia Norte, una plataforma de reservas de ejemplo, lees la ficha de diseño de tres modelos de aislamiento, la lista de inquilinos con lo que exige cada contrato y las tablas de la base compartida. Buscas dos cosas: un cliente que vive en un modelo que su contrato no admite y una tabla que el filtrado por inquilino no alcanza. Todo es lectura de un extracto de ejemplo.
Objetivo de la sala
Una plataforma SaaS atiende a muchos clientes con el mismo software, y la pregunta de seguridad que lo domina todo es hasta dónde llega un fallo: a un cliente, a unos cuantos o a todos. En Agendia Norte, una plataforma de reservas de ejemplo, lees la ficha de diseño de tres modelos de aislamiento, la lista de inquilinos con lo que exige cada contrato y las tablas de la base compartida. Buscas dos cosas: un cliente que vive en un modelo que su contrato no admite y una tabla que el filtrado por inquilino no alcanza. Todo es lectura de un extracto de ejemplo.Un inquilino es un cliente de la plataforma: una empresa, con sus usuarios y sus datos. El modelo de aislamiento es la manera de repartir la infraestructura entre inquilinos. En el extremo más separado, cada inquilino tiene su propia base de datos (en esta sala, silo): cuesta más, pero un fallo o una mala consulta en otra base no lo toca. En el extremo más compartido, todos los inquilinos comparten la misma base y cada fila lleva un identificador de inquilino (pool): cuesta poco, pero todo el aislamiento depende de que ese identificador se aplique siempre. En medio hay variantes, como un esquema propio por inquilino dentro de una base común (puente).
No hay un modelo «correcto»: hay uno que encaja con lo que el contrato promete y con lo que el cliente paga. Lo que el análisis de seguridad exige es que lo prometido y lo construido coincidan. Abre SELECT * FROM modelos y lee las columnas «datos» y «alcance_de_un_fallo».
Responde para continuar
Un inquilino exige por contrato que sus datos no compartan base de datos con nadie más. ¿Qué modelo cumple esa exigencia?
Ver pista de ayuda
La exigencia habla de la base de datos, no de las filas ni de los esquemas. Mira cuál modelo tiene base propia.
La ficha de un inquilino guarda dos cosas que deben decir lo mismo: el modelo en el que vive y lo que su contrato exige. Cuando no coinciden no hay un incidente todavía, hay una promesa que la plataforma no cumple, y eso es un hallazgo aunque nadie haya visto datos ajenos.
Abre SELECT * FROM inquilinos y compara las columnas «modelo» y «exige_aislamiento». Un inquilino que exige aislamiento puede estar bien servido (silo) o no. Busca el que no.
Responde para continuar
¿Qué identificador tiene el inquilino que exige aislamiento dedicado pero vive en la base compartida pool-a?
Ver pista de ayuda
Ejecuta `SELECT id_inquilino, nombre, modelo FROM inquilinos WHERE exige_aislamiento = 'si' AND modelo <> 'silo'`.
En un pool, el aislamiento tiene dos piezas. La primera es que toda tabla con datos de inquilinos lleve una columna que diga de quién es cada fila. La segunda es que la base aplique una política que, para cada sesión, solo deje ver las filas de su inquilino (una política de filas), de modo que no dependa de que cada consulta de la aplicación se acuerde de filtrar. Sin la primera pieza no puede haber la segunda: no hay con qué filtrar.
Abre SELECT * FROM tablas_compartidas. Hay una tabla de configuración global que no guarda datos de inquilinos y no cuenta. Busca la que sí los guarda y no tiene siquiera la columna.
Responde para continuar
¿Qué tabla guarda datos de inquilinos y no tiene columna que identifique al inquilino?
Ver pista de ayuda
Ejecuta `SELECT tabla, base_de_datos, columna_inquilino, politica_de_filas FROM tablas_compartidas WHERE datos_de_inquilino = 'si' AND columna_inquilino = 'no'`.
Una tabla con columna de inquilino pero sin política de filas sigue aislada solo mientras cada consulta de la aplicación incluya el filtro. Basta una consulta nueva, un informe hecho a prisa o una ruta olvidada para que ese aislamiento se rompa. Por eso interesa medir cuánta información queda en esa situación: es lo que se prioriza al asignar la política.
Suma los miles de filas de todas las tablas que guardan datos de inquilinos y no tienen política de filas, cuenten o no con la columna.
Responde para continuar
¿Cuántos miles de filas hay en total en las tablas con datos de inquilinos y sin política de filas? Escribe solo el número.
Ver pista de ayuda
Ejecuta `SELECT tabla, politica_de_filas, filas_miles FROM tablas_compartidas WHERE datos_de_inquilino = 'si' AND politica_de_filas = 'no'` y suma la última columna.
Un hallazgo de aislamiento se redacta con lo observado, la promesa que se incumple y una decisión con dueño. No se «arregla» moviendo a un inquilino por la noche: cambiar de modelo mueve datos, afecta al cliente y puede necesitar su acuerdo. La decisión es de quien responde por el contrato y por la plataforma, y el analista le da los elementos para decidir.
Responde para continuar
Un inquilino cuyo contrato exige aislamiento dedicado sigue en la base compartida. ¿Cómo se redacta el hallazgo?
Ver pista de ayuda
Hay una promesa incumplida, pero no hay evidencia de que nadie haya visto datos ajenos.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.