Gerenciar locatários em vários produtos de SaaS em um único ambiente de gerenciamento
Ramanna Avancha, Kishan Kavala, Anusha Mandava e Jenifer Pascal, Amazon Web Services
Resumo
Esse padrão mostra como gerenciar os ciclos de vida dos inquilinos em vários produtos de software como serviço (SaaS) em um único ambiente de gerenciamento na Nuvem AWS. A arquitetura de referência fornecida pode ajudar as organizações a reduzir a implementação de recursos redundantes e compartilhados em seus produtos SaaS individuais e fornecer eficiências de governança em grande escala.
Grandes empresas podem ter vários produtos SaaS em várias unidades de negócios. Esses produtos geralmente precisam ser provisionados para uso por locatários externos em diferentes níveis de assinatura. Sem uma solução comum para locação, os administradores de TI devem gastar tempo gerenciando atributos indiferenciados em várias APIs de SaaS, em vez de se concentrarem no desenvolvimento dos principais atributos do produto.
A solução comum para locatários fornecida nesse padrão pode ajudar a centralizar o gerenciamento de muitos dos recursos compartilhados do produto SaaS de uma organização, incluindo o seguinte:
Segurança
Provisionamento de locatários
Armazenamento de dados do locatário
Comunicações do locatário
Gerenciamento de produtos
Registro em log e monitoramento de métricas
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Conhecimento do Amazon Cognito ou de um provedor de identidades (IdP) terceirizado
Conhecimento do Amazon API Gateway
Conhecimento do AWS Lambda
Conhecimento do Amazon DynamoDB
Conhecimento do AWS Identity and Access Management (IAM)
Conhecimento do AWS Step Functions
Conhecimento do AWS CloudTrail e do Amazon CloudWatch
Conhecimento de bibliotecas e códigos Python
Conhecimento de APIs SaaS, incluindo os diferentes tipos de usuários (organizações, locatários, administradores e usuários de aplicativos), modelos de assinatura e modelos de isolamento de locatários
Conhecimento dos requisitos de SaaS de vários produtos e das assinaturas de vários locatários de sua organização
Limitações
As integrações entre a solução de locatário comum e os produtos SaaS individuais não são abordadas nesse padrão.
Esse padrão implanta o serviço Amazon Cognito somente em uma única região da AWS.
Arquitetura
Pilha de tecnologias de destino
Amazon API Gateway
Amazon Cognito
AWS CloudTrail
Amazon CloudWatch
Amazon DynamoDB
IAM
AWS Lambda
Amazon Simple Storage Service (Amazon S3)
Amazon Simple Notification Service (Amazon SNS)
AWS Step Functions
Arquitetura de destino
O diagrama a seguir mostra um exemplo de fluxo de trabalho para gerenciar os ciclos de vida dos locatários em vários produtos SaaS em um único ambiente de gerenciamento na Nuvem AWS.

O diagrama mostra o seguinte fluxo de trabalho:
Um usuário da AWS inicia o provisionamento de locatários, o provisionamento de produtos ou ações relacionadas à administração fazendo uma chamada para um endpoint do API Gateway.
O usuário é autenticado por um token de acesso restaurado de um grupo de usuários do Amazon Cognito ou de outro IdP.
As tarefas individuais de provisionamento ou administração são executadas por funções do Lambda que são integradas aos endpoints da API Gateway API.
As APIs de administração para a solução de inquilino comum (para locatários, produtos e usuários) reúnem todos os parâmetros de entrada, cabeçalhos e tokens necessários. Em seguida, as APIs de administração invocam as funções do Lambda associadas.
As permissões do IAM para as APIs de administração e as funções do Lambda são validadas pelo serviço IAM.
As funções do Lambda armazenam e recuperam dados dos catálogos (para locatários, produtos e usuários) no DynamoDB e no Amazon S3.
Depois que as permissões são validadas, um fluxo de trabalho do AWS Step Functions é invocado para realizar uma tarefa específica. O exemplo no diagrama mostra um fluxo de trabalho de provisionamento de locatários.
As tarefas individuais do fluxo de trabalho do AWS Step Functions são executadas em um fluxo de trabalho predeterminado (máquina de estado).
Todos os dados essenciais necessários para executar a função do Lambda associada a cada tarefa de fluxo de trabalho são recuperados do DynamoDB ou do Amazon S3. Outros recursos da AWS talvez precisem ser provisionados usando um modelo do AWS CloudFormation.
Se necessário, o fluxo de trabalho envia uma solicitação para provisionar recursos adicionais da AWS para um produto SaaS específico para a conta da AWS desse produto.
Quando a solicitação é bem-sucedida ou falha, o fluxo de trabalho publica a atualização de status como uma mensagem para um tópico do Amazon SNS.
O Amazon SNS está inscrito no tópico do Amazon SNS do fluxo de trabalho Step Functions.
Em seguida, o Amazon SNS envia a atualização do status do fluxo de trabalho para o usuário da AWS.
Os logs das ações de cada serviço da AWS, incluindo uma trilha de auditoria das chamadas de API, são enviados para o CloudWatch. Regras e alarmes específicos podem ser configurados no CloudWatch para cada caso de uso.
Os logs são arquivados em buckets do Amazon S3 para fins de auditoria.
Automação e escala
Esse padrão usa um modelo do CloudFormation para ajudar a automatizar a implantação da solução comum para locatários. O modelo também pode ajudar a aumentar ou reduzir a escala verticalmente para os recursos associados com rapidez.
Para obter mais informações, consulte Trabalhar com modelos do AWS CloudFormation no Guia do usuário do AWS CloudFormation.
Ferramentas
Serviços da AWS
O Amazon API Gateway ajuda na criação, publicação, manutenção, monitoramento e proteção de REST HTTP e API de WebSocket em qualquer escala.
O Amazon Cognito fornece autenticação, autorização e gerenciamento de usuários para suas aplicações Web e móveis.
O AWS CloudTrail ajuda você a gerenciar a governança, a conformidade e o risco operacional na sua conta da AWS.
O Amazon CloudWatch ajuda você a monitorar as métricas dos seus recursos da AWS e os aplicativos que você executa na AWS em tempo real.
O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
O AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.
O AWS Lambda é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.
O AWS Step Functions é um serviço de orquestração com tecnologia sem servidor que permite combinar funções do AWS Lambda e outros serviços da AWS para criar aplicações essenciais aos negócios.
Práticas recomendadas
A solução nesse padrão usa um único ambiente de gerenciamento para gerenciar a integração de vários locatários e fornecer acesso a vários produtos SaaS. O ambiente de gerenciamento ajuda os usuários administrativos a gerenciar outros quatro ambientes específicos de atributos:
Plano de segurança
Plano de fluxo de trabalho
Plano de comunicação
Registro e ambiente de monitoramento
Épicos
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Estabeleça os requisitos para sua plataforma SaaS multilocatária. | Estabeleça requisitos detalhados para:
| Arquiteto de nuvem, administrador de sistemas da AWS |
Configurar o serviço do Amazon Cognito. | Siga as instruções em Introdução ao Amazon Cognito no Guia do Desenvolvedor do Amazon Cognito. | Arquiteto de nuvem |
Configure as políticas do IAM necessárias. | Crie as políticas do IAM necessárias para o seu caso de uso. Em seguida, mapeie as políticas para funções do IAM no Amazon Cognito. Para obter mais informações, consulte Gerenciamento de acesso usando políticas e Controle de acesso baseado em funções no Guia do Desenvolvedor do Amazon Cognito. | Administrador de nuvem, arquiteto de nuvem, segurança do AWS IAM |
Configure as permissões de API necessárias. | Configure as permissões de acesso ao API Gateway usando perfis e políticas do IAM e autorizadores do Lambda. Para obter instruções, consulte as seguintes seções do Guia do Desenvolvedor do Amazon API Gateway: | Administrador de nuvem, arquiteto de nuvem |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Crie os catálogos de dados necessários. |
Para obter mais informações, consulte Configuração do DynamoDB no Guia do desenvolvedor Amazon DynamoDB. | DBA |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Crie funções do Lambda e APIs do API Gateway para executar as tarefas necessárias do ambiente de gerenciamento. | Crie funções do Lambda e APIs do API Gateway separadas para adicionar, excluir e gerenciar o seguinte:
Para obter mais informações, consulte Como usar o AWS Lambda com o Amazon API Gateway no Guia do desenvolvedor do AWS Lambda. | Desenvolvedor de aplicativos |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Identifique as tarefas que os fluxos de trabalho do AWS Step Functions devem executar. | Identifique e documente os requisitos detalhados do fluxo de trabalho do AWS Step Functions para o seguinte:
ImportanteCertifique-se de que as partes interessadas essenciais aprovem os requisitos. | Proprietário do App |
Crie os fluxos de trabalho necessários do AWS Step Functions. |
| Desenvolvedor de aplicativos, líder de criação |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Crie tópicos do Amazon SNS. | Crie tópicos do Amazon SNS para receber notificações sobre:
Para obter mais informações, consulte Criar um tópico do SNS no Guia do desenvolvedor do Amazon SNS. | Proprietário do aplicativo, arquiteto de nuvem |
Assine endpoints em cada tópico do Amazon SNS. | Para receber mensagens publicadas em um tópico do Amazon SNS, você precisa inscrever um endpoint em cada tópico. Para obter instruções, consulte Assinatura de um tópico do Amazon SNS no Guia do desenvolvedor do Amazon SNS. | Desenvolvedor de aplicativos, arquiteto de nuvem |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Ative o registro para cada componente da solução comum de locatário. | Ative o registro no nível do componente para cada recurso na solução de locatário comum que você criou. Para instruções, consulte:
notaÉ possível consolidar os logs de cada recurso em uma conta de registro em log centralizada usando políticas do IAM. Para obter mais informações, consulte Registro centralizado e barreiras de proteção de várias contas. | Desenvolvedor de aplicativos, administrador de sistemas da AWS, administrador de nuvem |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Crie modelos do CloudFormation. | Automatize a implantação e a manutenção da solução de locatário comum completa e de todos os seus componentes usando os modelos do CloudFormation. Para obter mais informações, consulte o guia do usuário do AWS CloudFormation. | Desenvolvedor de aplicativos, engenheiro de DevOps, desenvolvedor do CloudFormation |
Recursos relacionados
Controlar o acesso a uma API REST usando um grupo de usuários do Amazon Cognito como autorizador (Guia do desenvolvedor do Amazon API Gateway)
Use autorizadores Lambda do API Gateway ((Guia do Desenvolvedor do Amazon API Gateway)
Grupos de usuários do Amazon Cognito (Guia do Desenvolvedor do Amazon Cognito)
Console do CloudWatch entre contas e entre regiões (Guia do usuário do Amazon CloudWatch)