Aislamiento de inquilinos en una aplicación multiinquilino
El aislamiento de inquilinos es un concepto clave en las aplicaciones multiinquilino. En este artículo, discutiremos qué es y cómo se puede lograr.
¡Hola a todos! En este capítulo, profundizaremos en nuestras discusiones anteriores sobre temas de multiinquilinato. Si aún no has leído los artículos anteriores, ¡recomendamos comenzar con esos primero!
- ¿Las aplicaciones multiinquilino son igual a SaaS?
- Modelos de arrendamiento para una aplicación multiinquilino
Cuando discutimos aplicaciones multiinquilino, es importante pensar en el aislamiento de inquilinos. Esto significa mantener los datos y recursos de diferentes inquilinos separados y seguros dentro de un sistema compartido (por ejemplo, una infraestructura en la nube o una aplicación multiinquilino).
El objetivo del aislamiento de inquilinos es asegurarse de que los datos y operaciones de cada inquilino permanezcan distintos y seguros entre sí, incluso cuando están usando los mismos recursos subyacentes.
En un escenario de Software como Servicio (SaaS), el aislamiento de inquilinos implica crear estructuras dentro del marco de SaaS que regulen estrictamente el acceso a los recursos. Esto evita cualquier intento no autorizado de acceder a los recursos de otro inquilino.
Aunque la explicación pueda parecer abstracta, usaremos ejemplos y detalles clave para explicar mejor la mentalidad de aislamiento.
El aislamiento de inquilinos no va en contra de la mentalidad "compartida" del multiinquilinato
Eso se debe a que el aislamiento de inquilinos no es necesariamente una construcción a nivel de recursos de infraestructura. En el ámbito del multiinquilinato y el aislamiento, algunos ven el aislamiento como una estricta división entre recursos de infraestructura reales. Esto generalmente conduce a un modelo donde cada inquilino tiene bases de datos separadas, instancias de cómputo, cuentas o nubes privadas. En escenarios de recursos compartidos, como las aplicaciones multiinquilino, la forma de lograr el aislamiento puede ser una construcción lógica.
El aislamiento de inquilinos se centra exclusivamente en usar el contexto del “inquilino” para limitar el acceso a recursos. Evalúa el contexto del inquilino actual y utiliza ese contexto para determinar qué recursos son accesibles para ese inquilino. Aplica este aislamiento a todos los usuarios dentro de ese inquilino. Cualquier intento de acceder a un recurso del inquilino debe estar limitado solo a aquellos recursos que pertenecen a ese inquilino.
El aislamiento viene en diferentes niveles
Cuando entendemos que el aislamiento no está estrictamente ligado a los niveles de recursos de infraestructura y no es una clara separación entre infraestructura física, se llega a una conclusión como esta:
En lugar de ver el aislamiento como un simple "sí" o "no," consídérelo como un espectro. Puedes configurar partes de tu sistema para que sean más o menos aisladas según lo que necesites.
El siguiente diagrama ilustra este espectro de aislamiento.
Autenticación y autorización no son igual a “aislamiento”
Usar autenticación y autorización para controlar el acceso a tus entornos SaaS es importante, pero no es suficiente para un aislamiento completo. Estos mecanismos son solo una parte del rompecabezas de seguridad.
A menudo, la gente pregunta, ¿puedo usar soluciones generales de autorización y control de acceso basado en roles para lograr el aislamiento de inquilinos? Puedes construir una aplicación multiinquilino pero no puedes decir que has logrado y empleado estrategias de aislamiento de inquilinos como una mejor práctica. Generalmente no lo recomendamos porque
Para ilustrar, considera una situación donde has configurado la autenticación y autorización para tu sistema SaaS. Cuando los usuarios inician sesión, reciben un token que contiene información sobre su rol, dictando lo que pueden hacer en la aplicación. Este enfoque aumenta la seguridad pero no asegura el aislamiento.
Ahora, aquí está el problema: Sin incorporar el contexto de “inquilino”, como una identificación de inquilino, para restringir el acceso a recursos, depender únicamente de la autenticación y autorización no evitará que un usuario con el rol correcto acceda a los recursos de otro inquilino.
Aquí es donde entra en juego el aislamiento de inquilinos. Utiliza identificadores específicos del inquilino para establecer límites, como muros, puertas y cerraduras, asegurando una clara separación entre los inquilinos.
Identidad en aplicaciones multiinquilino
Discutimos el aislamiento de inquilinos, pero ¿qué hay de las identidades? ¿Cómo decides si tus identidades deben estar “aisladas” o no?
A menudo hay confusión en torno al concepto de "aislamiento de identidad." Podría referirse a situaciones donde un usuario del mundo real tiene dos identidades en el entendimiento general de las personas.
- Ambas identidades pueden existir dentro de un único sistema de identidad. Por ejemplo, Sarah podría tener un correo electrónico personal registrado junto con un correo electrónico corporativo conectado a través de inicio de sesión único (SSO).
- Los usuarios mantienen dos identidades distintas dentro de sistemas de identidad separados, representando productos completamente separados. Estos productos no están relacionados entre sí.
A veces, estos escenarios se denominan "identidad aislada." Sin embargo, esta etiqueta podría no ayudar en la toma de decisiones.
En lugar de determinar si necesitas "aislamiento de identidad," considera si tú o un segmento de tu negocio o producto necesitan mantener sistemas de identidad separados. Esta respuesta puede guiar el diseño de tu sistema de Gestión de Identidad y Acceso (IAM). Para una respuesta breve en relación a una aplicación multiinquilino,
En la mayoría de los casos, en aplicaciones multiinquilino, las identidades se comparten mientras que los recursos de cada inquilino están aislados.
En aplicaciones multiinquilino, las identidades, a diferencia de los recursos y datos específicos del inquilino, se comparten entre múltiples inquilinos. Imagínate como el administrador del edificio; no querrías mantener dos listas de nombres separadas para gestionar las identidades de tus inquilinos.
Al buscar el aislamiento de inquilinos, podrías haber observado el énfasis recurrente en el término "organización," a menudo considerado como una mejor práctica para construir aplicaciones multiinquilino.
Mediante el uso de la noción de "organización," puedes lograr el aislamiento de inquilinos en tu aplicación multiinquilino mientras mantienes un sistema de identidad unificado. Esto permite que múltiples "organizaciones" coexistan de manera independiente, pero compartan recursos que no dependen del inquilino dentro de la aplicación. Similar a los residentes que viven en un edificio, cada organización utiliza la aplicación sin preocuparse por sus vecinos, ya que la "organización" proporciona la separación necesaria en forma de paredes, pasillos, puertas y cerraduras. Comparten la infraestructura general del edificio, el sistema de diseño interior y varios componentes tangibles o intangibles.
Logto está introduciendo la función de “Organización” en noviembre
Logto está actualmente en desarrollo activo de la función "Organización", con el objetivo de lanzarla en noviembre de 2023. Esta función está específicamente diseñada para cumplir con los requisitos de aislamiento de inquilinos necesarios para construir un producto SaaS, alineándose con los estándares de la industria y las mejores prácticas.
En el próximo capítulo, profundizaremos en la función "Organización" y cómo Logto facilita la implementación de mejores prácticas para construir una aplicación multiinquilino.