Português (Portugal)
  • multi-inquilino
  • saas
  • software
  • desenvolvimento
  • arquitetura

Isolamento de inquilinos numa aplicação multi-inquilino

O isolamento de inquilinos é um conceito chave em aplicações multi-inquilino. Neste artigo, vamos discutir o que é e como pode ser alcançado.

Guamian
Guamian
Product & Design

Olá a todos! Neste capítulo, vamos desenvolver as nossas discussões anteriores sobre temas de multi-inquilino. Se ainda não leste os artigos anteriores, recomendamos começar com esses primeiro!

Ao discutir aplicações multi-inquilino, é importante pensar sobre o isolamento de inquilinos. Isto significa manter os dados e recursos de diferentes inquilinos separados e seguros dentro de um sistema compartilhado (por exemplo, uma infraestrutura de nuvem ou uma aplicação multi-inquilino).

O objetivo do isolamento de inquilinos é garantir que os dados e operações de cada inquilino permaneçam distintos e seguros uns dos outros, mesmo quando estão a usar os mesmos recursos subjacentes.

Num cenário de Software como um Serviço (SaaS), o isolamento de inquilino envolve a criação de estruturas dentro da estrutura SaaS que regulam rigorosamente o acesso aos recursos. Isto previne qualquer tentativa não autorizada de acessar os recursos de outro inquilino.

Embora a explicação possa parecer abstrata, vamos usar exemplos e detalhes importantes para explicar ainda mais a mentalidade de isolamento.

O isolamento de inquilinos não vai contra a mentalidade "compartilhada" do multi-inquilino

Isso porque o isolamento de inquilinos não é necessariamente uma construção de nível de recurso de infraestrutura. No domínio do multi-inquilino e isolamento, alguns vêem o isolamento como uma divisão estrita entre recursos reais de infraestrutura. Isto geralmente leva a um modelo onde cada inquilino tem bases de dados separadas, instâncias de computação, contas ou nuvens privadas. Em cenários de recursos compartilhados, como aplicações multi-inquilino, a forma de alcançar o isolamento pode ser uma construção lógica.

O isolamento de inquilinos foca-se exclusivamente em usar o contexto do “inquilino” para limitar o acesso aos recursos. Avalia o contexto do inquilino atual e usa esse contexto para determinar quais recursos estão acessíveis para esse inquilino. Aplica este isolamento a todos os usuários dentro desse inquilino. Qualquer tentativa de acessar um recurso de inquilino deve ser restrita apenas aos recursos que pertencem a esse inquilino.

O isolamento vem em diferentes níveis

Quando entendemos que o isolamento não está estritamente vinculado a níveis de recurso de infraestrutura e não há uma separação clara entre a infraestrutura física, isso 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. Podes configurar partes do teu sistema para serem mais ou menos isoladas, com base no que precisas.

O diagrama abaixo ilustra este espectro de isolamento.

compartilhado isolado

Autenticação e autorização não são iguais a “isolamento”

Usar autenticação e autorização para controlar o acesso aos teus 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 de autorização geral e controle de acesso baseado em função para alcançar o isolamento de inquilinos? Podes construir uma aplicação multi-inquilino, mas não podes dizer que alcançaste e empregaste estratégias de isolamento de inquilino como uma boa prática. Não recomendamos isso geralmente porque

Para ilustrar, considera uma situação onde configuraste a autenticação e autorização para o teu sistema SaaS. Quando usuários fazem login, recebem um token contendo informações sobre o seu acesso, ditando o que podem fazer na aplicação. Esta abordagem aumenta a segurança mas não garante isolamento.

Agora, aqui está o problema: Sem incorporar o contexto de “inquilino”, como um ID de inquilino, para restringir o acesso aos recursos, confiar apenas em autenticação e autorização não impedirá que um usuário com o papel certo acesse os recursos de outro inquilino.

É aqui que o isolamento de inquilino entra em jogo. Ele usa identificadores específicos do inquilino para estabelecer limites, muito como paredes, portas e fechaduras, garantindo uma separação clara entre inquilinos.

Identidade em aplicações multi-inquilino

Discutimos o isolamento de inquilinos, mas e quanto às identidades? Como decides se as tuas identidades devem ser “isoladas” ou não?

Há frequentemente confusão em torno do conceito de "isolamento de identidade." Pode referir-se a situações onde um usuário do mundo real tem duas identidades na compreensão geral das pessoas.

  1. Ambas identidades podem existir dentro de um único sistema de identidade. Por exemplo, Sarah pode ter um email pessoal registrado ao lado de um email corporativo conectado através de um único acesso (SSO).
  2. Usuários mantêm duas identidades distintas dentro de sistemas de identidade separados, representando produtos completamente separados. Esses produtos são completamente independentes um do outro.

Às vezes, esses cenários são referidos como "Identidade isolada." No entanto, este rótulo pode não ajudar a tomar uma decisão.

Em vez de determinar se precisas de "isolamento de identidade," considera se tu ou um segmento da tua empresa ou produto precisam manter sistemas de identidade separados. Esta resposta pode guiar o teu sistema de Gerenciamento de Identidade e Acesso (IAM). Para uma resposta breve sobre uma aplicação multi-inquilino,

Na maioria dos casos, em aplicações multi-inquilino, as identidades são compartilhadas enquanto os recursos de cada inquilino são isolados.

Em aplicações multi-inquilino, identidades, ao contrário de recursos e dados específicos do inquilino, são compartilhadas entre vários inquilinos. Imagina-te como o administrador do edifício; não gostarías de manter duas listas de nomes separadas para gerenciar as identidades dos teus inquilinos.

Ao visar o isolamento de inquilinos, podes ter observado a ênfase recorrente no termo "organização," muitas vezes considerado uma boa prática para construir aplicações multi-inquilino.

Ao utilizar a noção de "organização," podes alcançar o isolamento de inquilinos na tua aplicação multi-inquilino enquanto manténs um sistema de identidade unificado. Isso permite que múltiplas "organizações" coexistam, independentemente, mas compartilhem recursos sem discriminação do inquilino dentro da aplicação. Semelhante aos residentes que vivem num edifício, cada organização utiliza a aplicação sem preocupação com os seus vizinhos, pois a "organização" fornece a separação necessária sob a 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á a introduzir o recurso de “Organização” em novembro

A Logto está atualmente em desenvolvimento ativo do recurso de "Organização", visando um lançamento em novembro de 2023. Este recurso é especificamente desenvolvido para atender aos requisitos de isolamento de inquilinos necessários para construir um produto SaaS, alinhando-se com os padrões da indústria e boas práticas.

No próximo capítulo, vamos aprofundar no recurso de "Organização" e como a Logto facilita a implementação de boas práticas para construir uma aplicação multi-inquilino.