Tenant isolation in multi-tenant application
Tenant isolation is a key concept in multi-tenant applications. In this article, we'll discuss what it is and how it can be achieved.
Olá a todos! Neste capítulo, iremos expandir nossas discussões anteriores sobre tópicos de multi-locatário. Se você ainda não leu os artigos anteriores, recomendamos começar por eles primeiro!
Ao discutir aplicações multi-locatário, é importante pensar sobre o isolamento de locatário. Isso significa manter os dados e recursos de diferentes locatários separados e seguros dentro de um sistema compartilhado (por exemplo, uma infraestrutura em nuvem ou uma aplicação multi-locatário).
O objetivo do isolamento de locatário é garantir que os dados e operações de cada locatário permaneçam distintos e seguros um do outro, mesmo quando eles estão usando os mesmos recursos subjacentes.
Em um cenário de Software como Serviço (SaaS), o isolamento de locatário envolve a criação de estruturas dentro do framework SaaS que regulam estritamente o acesso aos recursos. Isso evita quaisquer tentativas não autorizadas de acessar os recursos de outro locatário.
Mesmo que a explicação possa parecer abstrata, usaremos exemplos e detalhes chave para explicar melhor a mentalidade de isolamento.
O isolamento de locatário não vai contra a mentalidade "compartilhada" da multi-locação
Isso porque o isolamento de locatário não é necessariamente uma construção no nível de recurso da infraestrutura. No reino da multi-locação e isolamento, alguns vêem o isolamento como uma divisão estrita entre os recursos reais da infraestrutura. Isso geralmente leva a um modelo onde cada locatário tem bancos de dados, instâncias de computação, contas ou nuvens privadas separadas. Em cenários de recursos compartilhados, como aplicações multi-locatário, a forma de conseguir o isolamento pode ser uma construção lógica.
O isolamento de locatário foca exclusivamente no uso do contexto do “locatário” para limitar o acesso aos recursos. Ele avalia o contexto do locatário atual e usa esse contexto para determinar quais recursos são acessíveis para aquele locatário. Aplica esse isolamento a todos os usuários dentro daquele locatário. Qualquer tentativa de acessar um recurso de locatário deve ser limitada apenas àqueles recursos que pertencem àquele locatário.
O isolamento vem em diferentes níveis
Quando entendemos que o isolamento não está estritamente ligado a níveis de recursos da infraestrutura e não é uma separação clara entre a infraestrutura física, isso nos leva a uma conclusão como esta:
Em vez de ver o isolamento como um simples "sim" ou "não", considere-o como um espectro. Você pode configurar partes do seu sistema para serem mais ou menos isoladas com base no que você precisa.
O diagrama abaixo ilustra esse espectro de isolamento.
Autenticação e autorização não são iguais a “isolamento”
Usar autenticação e autorização para controlar o acesso aos seus ambientes SaaS é importante, mas não é suficiente para um isolamento completo. Esses mecanismos são apenas uma parte do quebra-cabeça de segurança.
As pessoas costumam perguntar, posso usar soluções gerais de autorização e controle de acesso baseado em papéis para conseguir isolamento de locatário? Você pode construir um aplicativo multi-locatário, mas você não pode dizer que alcançou e empregou estratégias de isolamento de locatário como uma prática recomendada. Geralmente, não recomendamos isso porque
Para ilustrar, considere uma situação onde você configurou autenticação e autorização para seu sistema SaaS. Quando os usuários fazem login, eles recebem um token contendo informações sobre seu papel, ditando o que podem fazer na aplicação. Essa abordagem aumenta a segurança, mas não garante o isolamento.
Agora, aqui está o problema: sem incorporar o contexto do “locatário”, tal como um ID de locatário, para restringir o acesso aos recursos, confiar somente na autenticação e autorização não impedirá que um usuário com o papel correto acesse os recursos de outro locatário.
É aqui que o isolamento de locatário entra em cena. Ele usa identificadores específicos do locatário para estabelecer limites, assim como paredes, portas e fechaduras, garantindo uma separação clara entre os locatários.
Identidade em aplicativos multi-locatário
Discutimos o isolamento de locatário, mas e as identidades? Como você decide se suas identidades devem ser “isoladas” ou não?
Há uma confusão frequente em torno do conceito de "isolamento de identidade". Isso poderia se referir a situações em que um usuário do mundo real tem duas identidades na compreensão geral das pessoas.
- Ambas as identidades podem existir dentro de um único sistema de identidade. Por exemplo, Sarah pode ter um e-mail pessoal registrado ao lado de um e-mail corporativo conectado através de single sign-on (SSO).
- Os usuários mantêm duas identidades distintas dentro de sistemas de identidade separados, representando produtos totalmente separados. Esses produtos são completamente não relacionados entre si.
Às vezes, esses cenários são referidos como "Identidade isolada". No entanto, esse rótulo pode não ajudar na tomada de decisão.
Em vez de determinar se você precisa de "isolamento de identidade", considere se você ou um segmento do seu negócio ou produto necessita manter sistemas de identidade separados. Esta resposta pode guiar o design do seu sistema de Gerenciamento de Identidade e Acesso (IAM). Para uma resposta breve em relação a um aplicativo multi-locatário,
Na maioria dos casos, em aplicativos multi-locatário, as identidades são compartilhadas enquanto os recursos de cada locatário são isolados.
Em aplicações multi-locatário, as identidades, ao contrário dos recursos e dados específicos do locatário, são compartilhadas entre vários locatários. Imagine-se como o administrador do prédio; você não gostaria de manter dois registros de nomes separados para gerenciar as identidades dos seus locatários.
Ao mirar no isolamento de locatário, você pode ter observado a ênfase recorrente no termo "organização", frequentemente considerado uma prática recomendada para construir aplicações multi-locatário.
Ao empregar a noção de "organização", você pode alcançar o isolamento de locatário em sua aplicação multi-locatário enquanto mantém um sistema de identidade unificado. Isso permite que múltiplas "organizações" coexistam, independentemente, mas compartilhem recursos agnósticos ao locatário dentro da aplicação. Similar a residentes vivendo em um edifício, cada organização utiliza a aplicação sem preocupação com seus vizinhos, pois a "organização" fornece a separação necessária na forma de paredes, corredores, portas e fechaduras. Eles compartilham a infraestrutura geral do edifício, sistema de design interior e vários componentes tangíveis ou intangíveis.
Logto está introduzindo o recurso de "Organização" em novembro
A Logto está atualmente em desenvolvimento ativo do recurso "Organização", com lançamento previsto para novembro de 2023. Este recurso é especificamente elaborado para atender aos requisitos de isolamento de locatário necessários para construir um produto SaaS, alinhando-se com os padrões do setor e as melhores práticas.
No próximo capítulo, aprofundaremos o recurso "Organização" e como a Logto facilita a implementação das melhores práticas para construir uma aplicação multi-locatário.