As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Implemente o isolamento de inquilinos de SaaS para o Amazon S3 usando uma máquina de venda automática de tokens AWS Lambda
Tabby Ward, Thomas Davis e Sravan Periyathambi, da Amazon Web Services
Resumo
Os aplicativos SaaS multilocação devem implementar sistemas para garantir que o isolamento dos inquilinos seja mantido. Quando você armazena dados de inquilinos no mesmo AWS recurso, como quando vários inquilinos armazenam dados no mesmo bucket do Amazon Simple Storage Service (Amazon S3), você deve garantir que o acesso entre inquilinos não ocorra. As máquinas de venda automática de tokens (TVMs) são uma forma de fornecer isolamento de dados do inquilino. Essas máquinas fornecem um mecanismo para obter tokens e, ao mesmo tempo, abstrair a complexidade de como esses tokens são gerados. Os desenvolvedores podem usar uma TVM sem ter conhecimento detalhado de como ela produz tokens.
Esse padrão implementa um TVM usando. AWS Lambda A TVM gera um token que consiste em credenciais temporárias de serviço de token de segurança (STS) que limitam o acesso aos dados de um único inquilino SaaS em um bucket S3.
TVMse o código fornecido com esse padrão são normalmente usados com declarações derivadas de JSON Web Tokens (JWTs) para associar solicitações de AWS recursos a uma política com escopo de inquilino (IAM AWS Identity and Access Management ). Você pode usar o código deste padrão como base para implementar um aplicativo SaaS que gera credenciais STS temporárias e com escopo com base nas declarações fornecidas em um token JWT.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS.
AWS Command Line Interface (AWS CLI) versão 1.19.0 ou posterior, instalada e configurada no macOS, Linux ou Windows. Como alternativa, você pode usar a AWS CLI versão 2.1 ou posterior.
Limitações
Este código é executado em Java e atualmente não oferece suporte a outras linguagens de programação.
O aplicativo de amostra não inclui suporte AWS entre regiões ou recuperação de desastres (DR).
Este padrão demonstra como uma TVM do Lambda para um aplicativo SaaS pode fornecer acesso de inquilino com escopo definido. Esse padrão não deve ser usado em ambientes de produção sem testes de segurança adicionais como parte de seu aplicativo ou caso de uso específico.
Arquitetura
Pilha de tecnologias de destino
AWS Lambda
Amazon S3
IAM
AWS Security Token Service (AWS STS)
Arquitetura de destino

Ferramentas
Serviços da AWS
AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.
AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
O AWS Lambda é um serviço de computação que ajuda 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.
AWS Security Token Service (AWS STS) ajuda você a solicitar credenciais temporárias com privilégios limitados para os usuários.
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.
Código
O código-fonte deste padrão está disponível como anexo e inclui os seguintes arquivos:
s3UploadSample.jarfornece o código-fonte para uma função do Lambda que carrega um documento JSON em um bucket do S3.tvm-layer.zipoferece uma biblioteca Java reutilizável que fornece um token (credenciais temporárias STS) para que a função do Lambda acesse o bucket do S3 e faça o upload do documento JSON.token-vending-machine-sample-app.zipfornece o código-fonte usado para criar esses artefatos e instruções de compilação.
Para usar esses arquivos, siga as instruções da próxima seção.
Épicos
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Determinar os valores das variáveis. | A implementação deste padrão inclui vários nomes de variáveis que devem ser usados de forma consistente. Determine os valores que devem ser usados para cada variável e forneça esse valor quando solicitado nas etapas subsequentes.
| Administrador de nuvem |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Criar um ambiente do bucket do S3 para o aplicativo de exemplo. | Use o AWS CLI comando a seguir para criar um bucket do S3. Forneça o
O aplicativo de exemplo Lambda carrega arquivos JSON nesse bucket. | Administrador de nuvem |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Criar um perfil TVM. | Use um dos AWS CLI comandos a seguir para criar uma função do IAM. Forneça o Para shells no macOS ou Linux:
Para a linha de comando do Windows:
O aplicativo de exemplo do Lambda assume essa função quando o aplicativo é invocado. A capacidade de assumir o perfil do aplicativo com uma política de escopo fornece ao código permissões mais amplas para acessar o bucket do S3. | Administrador de nuvem |
Criar uma política de função de TVM em linha. | Use um dos AWS CLI comandos a seguir para criar uma política do IAM. Para shells no macOS ou Linux:
Para a linha de comando do Windows:
Esta política é anexada à função da TVM. Dá ao código a capacidade de assumir o perfil do aplicativo que possui permissões mais amplas para acessar o bucket do S3. | Administrador de nuvem |
Anexar a política gerenciada do Lambda. | Use o AWS CLI comando a seguir para anexar a política
Para a linha de comando do Windows:
Essa política gerenciada é anexada à função TVM para permitir que o Lambda envie registros para a Amazon. CloudWatch | Administrador de nuvem |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Criar o perfil do aplicativo. | Use um dos AWS CLI comandos a seguir para criar uma função do IAM. Para shells no macOS ou Linux:
Para a linha de comando do Windows:
O aplicativo de exemplo Lambda assume essa função com uma política de escopo para obter acesso baseado em inquilinos a um bucket do S3. | Administrador de nuvem |
Criar uma política de função de aplicativo embutida. | Use um dos comandos a seguir AWS CLI para criar uma política do IAM. Forneça os Para shells no macOS ou Linux:
Para a linha de comando do Windows:
Esta política é anexada ao perfil do aplicativo. Ela fornece amplo acesso aos objetos no bucket do S3. Quando o aplicativo de exemplo assume o perfil, essas permissões são atribuídas a um inquilino específico com a política gerada dinamicamente pela TVM. | Administrador de nuvem |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Baixe os arquivos de origem compilados. | Baixe os arquivos | Administrador de nuvem |
Criar a camada do Lambda. | Use o AWS CLI comando a seguir para criar uma camada Lambda, que torna o TVM acessível ao Lambda. notaSe você não estiver executando esse comando a partir do local em que fez o download
Para a linha de comando do Windows:
Esse comando cria uma camada Lambda que contém a biblioteca TVM reutilizável. | Administrador da nuvem, desenvolvedor de aplicativos |
Criar a função do Lambda. | Use o AWS CLI comando a seguir para criar uma função Lambda. Forneça os notaSe você não estiver executando esse comando a partir do local em que fez o download
Para a linha de comando do Windows:
Esse comando cria uma função do Lambda com o código do aplicativo de exemplo e a camada TVM anexada. Ele também define duas variáveis de ambiente: | Administrador da nuvem, desenvolvedor de aplicativos |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Invocar o aplicativo de exemplo do Lambda. | Use um dos AWS CLI comandos a seguir para iniciar o aplicativo de amostra Lambda com a carga esperada. Forneça os Para shells no macOS ou Linux:
Para a linha de comando do Windows:
Esse comando chama a função do Lambda e retorna o resultado em um documento notaA alteração do | Administrador da nuvem, desenvolvedor de aplicativos |
Visualizar o bucket do S3 para ver os objetos criados. | Navegue até o bucket do S3 ( | Administrador de nuvem |
Veja os registros do aplicativo de amostra em CloudWatch Logs. | Visualize os registros associados à função Lambda nomeada A funcionalidade da TVM é fornecida em uma camada Lambda para que possa ser anexada a outras funções do Lambda usadas por um aplicativo sem precisar replicar o código. Para obter uma ilustração da política gerada dinamicamente, consulte a seção Informações adicionais. | Administrador de nuvem |
Recursos relacionados
Isolar inquilinos com políticas do IAM geradas dinamicamente
(publicação do blog) Aplicação de políticas de isolamento geradas dinamicamente em ambientes SaaS
(postagem no blog)
Mais informações
O registro a seguir mostra a política gerada dinamicamente produzida pelo código TVM nesse padrão. Nesta captura de tela, o <sample-app-bucket-name> é DOC-EXAMPLE-BUCKET e o <sample-tenant-name> étest-tenant-1. As credenciais STS retornadas por essa política de escopo não conseguem realizar nenhuma ação em objetos no bucket do S3, exceto os objetos associados ao prefixo da chave do objeto test-tenant-1.

Anexos
Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip