O guia definitivo para configurar autenticação e autorização multi-inquilino
Criar uma aplicação multi-inquilino pode ser complexo. Este artigo reúne todos os nossos posts anteriores sobre estratégias multi-inquilino e organizacionais. Esperamos que possa ajudá-lo a poupar tempo e começar facilmente.
Construir uma aplicação multi-inquilino pode ser desafiador, com muitos aspetos a considerar. Este artigo compila todos os nossos anteriores posts de blog sobre a compreensão das práticas multi-inquilino e organizacionais. Para um início rápido e para poupar tempo, basta dar uma vista de olhos neste artigo, ele inclui tudo o que precisa!
As diretrizes gerais são delineadas nos seguintes passos:
- Compreender a arquitetura multi-inquilino
- Mapear os casos de uso da sua aplicação multi-inquilino
- Conseguir isolamento de inquilinos
- Definir como deseja gerir as identidades
- Escolher os modelos de autorização apropriados
O que é a arquitetura multi-inquilino
Multi-inquilinos de software é uma arquitetura de software na qual uma única instância de software executa num servidor e serve múltiplos inquilinos. Sistemas concebidos dessa forma são "partilhados" (em vez de "dedicados" ou "isolados").
Um inquilino é um grupo de utilizadores que partilham o acesso comum com privilégios específicos para a instância de software.
Uma das mentalidades chave da multi-inquilino é "partilhado". Na definição mais ampla de multi-inquilino, ser uma aplicação multi-inquilino não implica que cada componente numa solução seja partilhado. Em vez disso, implica que pelo menos alguns componentes de uma solução são reutilizados entre múltiplos inquilinos. Compreender este termo de forma ampla pode melhor ajudá-lo a empatizar com as necessidades do seu cliente e de onde vêm.
Uma vez que compreenda a arquitetura multi-inquilino, o próximo passo é aplicar a sua aplicação a cenários do mundo real, focando em necessidades específicas de produto e negócios.
Quais são os casos de uso para aplicações multi-inquilino?
Multi-inquilino em SaaS
Aplicações multi-inquilino frequentemente encontram o seu lugar em soluções business-to-business (B2B) como ferramentas de produtividade, software de colaboração e outros produtos de software como serviço (SaaS). Neste contexto, cada "inquilino" geralmente representa um cliente empresarial, que pode ter múltiplos usuários (seus empregados). Além disso, um cliente empresarial pode ter múltiplos inquilinos para representar distintas organizações ou divisões de negócios.
Multi-inquilino em casos de uso genéricos B2B
Aplicações B2B vão além dos produtos SaaS e frequentemente envolvem o uso de aplicações multi-inquilino. Em contextos B2B, estas aplicações servem como uma plataforma comum para várias equipas, clientes empresariais e empresas parceiras acederem às suas aplicações.
Por exemplo, considere uma empresa de partilha de transporte que fornece tanto aplicações B2C como B2B. As aplicações B2B servem múltiplos clientes empresariais, e empregar uma arquitetura multi-inquilino pode ajudar na gestão dos seus funcionários e recursos. Para ilustrar, se a empresa deseja manter um sistema unificado de identidade de usuários, pode desenhar uma arquitetura como o exemplo seguinte:
Sarah tem tanto uma identidade pessoal quanto empresarial. Ela usa o serviço de partilha de transporte como passageira e também trabalha como condutora no seu tempo livre. No seu papel profissional, ela também gere o seu negócio e usa esta identidade de negócio para ser uma parceira com o Negócio 1.
Por que deve empregar multi-inquilino em produtos SaaS
Escalando com multi-inquilino
Para empresas de grande porte, o multi-inquilino é a chave para efetivamente cumprir seus requisitos de disponibilidade, gestão de recursos, gestão de custos e segurança de dados. A um nível técnico, adotar uma abordagem multi-inquilino simplifica os seus processos de desenvolvimento, minimiza desafios técnicos e promove uma expansão sem contratempos.
Criar uma experiência unificada
Ao examinar as raízes dos produtos SaaS, é semelhante a um edifício que abriga vários apartamentos. Todos os inquilinos partilham utilidades comuns como água, eletricidade e gás, mas mantêm controle independente sobre a gestão do seu próprio espaço e recursos. Esta abordagem simplifica a gestão da propriedade.
Assegurar a segurança através do isolamento de inquilinos
Numa arquitetura multi-inquilino, o termo "inquilino" é introduzido para criar limites que separam e protegem os recursos e dados de diferentes inquilinos dentro de uma instância partilhada. Isso garante que os dados e operações de cada inquilino permaneçam distintos e seguros, mesmo que estejam a utilizar os mesmos recursos subjacentes.
Por que deve alcançar o isolamento de inquilinos?
Ao discutir aplicações multi-inquilino, é sempre necessário alcançar o isolamento de inquilinos. Isso significa manter os dados e recursos dos diferentes inquilinos separados e seguros dentro de um sistema compartilhado (por exemplo, uma infraestrutura na nuvem ou uma aplicação multi-inquilino). Isso evita qualquer tentativa não autorizada de aceder aos recursos de outro inquilino.
Embora a explicação possa parecer abstrata, usaremos exemplos e detalhes chave para explicar melhor a mentalidade de isolamento e as melhores práticas para alcançar o isolamento de inquilinos.
O isolamento de inquilinos não vai contra a mentalidade "partilhada" de multi-inquilino
Isso porque o isolamento de inquilinos não é necessariamente uma construção de recurso de nível de infraestrutura. No reino de multi-inquilino e isolamento, alguns visualizam o isolamento como uma divisão estrita entre recursos reais de infraestrutura. Isso 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 maneira de obter isolamento pode ser uma construção lógica.
O isolamento de inquilinos foca-se exclusivamente no uso do contexto “inquilino” para limitar o acesso aos recursos. Ele avalia o contexto do inquilino atual e utiliza esse contexto para determinar quais recursos são acessíveis para esse inquilino.
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 completo isolamento. Esses mecanismos são apenas uma parte do quebra-cabeça de segurança.
As pessoas frequentemente fazem uma pergunta: posso usar soluções gerais de autorização e controle de acesso baseado em função para alcançar o isolamento de inquilinos?
Aqui está a questão, você pode construir uma aplicação multi-inquilino, mas não pode afirmar que alcançou e empregou estratégias de isolamento de inquilinos como uma melhor prática. Geralmente não recomendamos isso porque
Para ilustrar, considere uma situação onde você configurou autenticação e autorização para o seu sistema SaaS. Quando os utilizadores fazem login, eles recebem um token contendo informações sobre o seu papel, ditando o que podem fazer na aplicação. Essa abordagem aumenta a segurança, mas não garante o isolamento.
Usar "organização" para representar o inquilino do produto SaaS, para alcançar o isolamento de inquilinos
Confiar apenas na autenticação e autorização não impedirá um utilizador com o papel certo de aceder aos recursos de outro inquilino. Então, precisamos incorporar um contexto "inquilino", como um ID de inquilino, para restringir o acesso aos recursos.
É aqui que entra o isolamento de inquilinos. Ele usa identificadores específicos do inquilino para estabelecer limites, como paredes, portas e fechaduras, garantindo uma clara separação entre os inquilinos.
Gestão de identidades em aplicações multi-inquilino
Discutimos o isolamento de inquilinos, mas e as identidades? Como decide se as suas identidades devem ser "isoladas" ou não?
Há frequentemente confusão em torno do conceito de "isolamento de identidade". Isso poderia referir-se a situações onde um único utilizador 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 email pessoal registado ao lado de um email corporativo conectado através de login único (SSO).
- Os utilizadores mantêm duas identidades distintas dentro de sistemas de identidade separados, representando produtos inteiramente separados. Esses produtos não estão de todo relacionados entre si.
Às vezes, estes 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 decidir se precisa de "isolamento de identidade", considere
Esta resposta pode orientar o seu design de sistema. Para uma resposta breve sobre uma aplicação multi-inquilino,
Em aplicações multi-inquilino, as identidades, ao contrário de recursos e dados específicos dos inquilinos, são partilhadas entre múltiplos inquilinos. Imagine-se como o administrador do edifício; você não gostaria de manter duas folhas de nomes separadas para gerir as identidades dos seus inquilinos.
Ao visar o isolamento de inquilinos, pode ter observado a ênfase recorrente no termo "organização", muitas vezes considerado uma melhor prática para construir aplicações multi-inquilino.
Ao empregar a noção de "organização", você pode alcançar o isolamento de inquilinos na sua aplicação multi-inquilino enquanto mantém um sistema unificado de identidades.
Como escolher e desenhar o modelo de autorização adequado
Ao selecionar o modelo de autorização certo, considere estas questões:
- Está a desenvolver um produto B2C, B2B ou uma combinação de ambos os tipos de produtos?
- A sua aplicação tem uma arquitetura multi-inquilino?
- Existe uma necessidade de um certo nível de isolamento na sua aplicação, conforme determinado pela unidade de negócio?
- Quais permissões e papéis precisam ser definidos no contexto da organização, e quais não?
Que diferentes modelos de autorização estão disponíveis no Logto?
Controle de acesso baseado em função
RBAC(Controle de Acesso Baseado em Função) é um método para conceder permissões de usuário baseadas nos seus papéis, permitindo a gestão eficaz do acesso aos recursos.
Esta técnica comum sustenta o controle de acesso e é um componente chave das funcionalidades de autorização do Logto. Como uma plataforma abrangente de gestão de identidade, Logto oferece soluções personalizadas para várias camadas e entidades, servindo a desenvolvedores e empresas para diversas arquiteturas de produtos.
Controle de acesso baseado em função para API
Para proteger recursos gerais de API que não são específicos de nenhuma organização e não precisam de restrições de contexto, a funcionalidade API RBAC é ideal.
Basta registar a API e atribuir permissões a cada recurso. Em seguida, controlar o acesso através do relacionamento entre papéis e usuários.
Recursos de API, papéis e permissões aqui são "democratizados" sob um sistema unificado de identidade. Isto é muito comum em produtos B2C com menos hierarquia e não precisa de um nível muito profundo de isolamento.
Controle de acesso baseado em função para organizações
No ambiente B2B e multi-inquilino, o isolamento de inquilinos é necessário. Para alcançar isso, as organizações são usadas como um contexto para isolamento, significando que o RBAC é eficaz apenas quando um utilizador pertence a uma organização específica.
O RBAC organizacional foca-se em controlar o acesso ao nível da organização em vez do nível da API. Isso fornece uma flexibilidade significativa para a auto-gestão ao nível da organização a longo prazo, mas ainda dentro de um sistema unificado de identidade.
Uma característica chave do RBAC organizacional é que papéis e permissões são geralmente os mesmos em todas as organizações por padrão, o que torna o "template de organização" do Logto extremamente significativo para melhorar a eficiência do desenvolvimento. Isto alinha-se com a filosofia partilhada de aplicações multi-inquilino, onde políticas de controle de acesso e identidades são componentes de infraestrutura comuns entre todos os inquilinos (inquilinos de aplicações), uma prática comum em produtos SaaS.
Conclusão
Este artigo fornece tudo o que você precisa para começar a preparar e configurar aplicações multi-inquilino. Experimente o Logto hoje e comece a aplicar as melhores práticas para desenvolvimento de aplicações multi-inquilino com organizações.