Pular para o conteúdo

Tema

Arquiteturas seguras · tema 7 de 7

Usuários de aplicação e acesso a APIs: Cognito, API Gateway e acesso privado

35 min · 2 vídeos · 11 cards · 1 drill

Por que cai

O Domínio 1 tem um cenário recorrente que não é sobre infraestrutura: 'a aplicação móvel precisa de login e de acesso ao S3'. A resposta errada mais comum é IAM para pessoas de fora da empresa. A prova quer Cognito, e quer que você saiba qual pool faz o quê. Depois vem a API: qual autorizador, e como manter tudo privado.

Pré-teste · 1 de 2

responda antes de ver

Um aplicativo móvel com milhares de usuários precisa que eles façam login com e-mail e senha e, depois, enviem arquivos diretamente para um bucket S3. Qual combinação atende?

Quanta certeza você tem?

Vídeo · português · 8 min

Feito para a prova, em oito minutos: a distinção user pool versus identity pool é exatamente o que a SAA testa. Anote qual dos dois devolve credencial da AWS.

Em uma frase

Pessoas de fora entram pelo Cognito: o user pool autentica e emite tokens; o identity pool troca o token por credenciais temporárias da AWS. A API se protege com o autorizador certo (Cognito, Lambda ou IAM) e, se for interna, fica privada atrás de um endpoint de interface.

Duas piscinas, dois trabalhos

O nome atrapalha: os dois "pools" do Cognito fazem coisas diferentes, e a prova sabe disso.

User poolIdentity pool
Pergunta que respondeQuem é você?O que você pode usar na AWS?
EntradaE-mail e senha, telefone, Google, Facebook, SAML, OIDCUm token: do user pool, de rede social, de SAML, ou nada (convidado)
SaídaTokens JWT: id, acesso, refreshCredenciais temporárias da AWS (STS) com uma role
RecursosCadastro, MFA, recuperação de senha, verificação, grupos, UI hospedadaRole autenticada e role de convidado
Usado porA aplicação e o API Gateway (autorizador)O aplicativo, para chamar S3, DynamoDB e outros direto
user poolDiretório de usuários da aplicação. Faz cadastro, login, MFA e emite tokens JWT. Não dá acesso a serviços da AWS por si. identity poolTroca um token de identidade por credenciais temporárias da AWS, com uma role. Aceita usuários autenticados e, opcionalmente, convidados.

O cenário-padrão: aplicativo com login e upload direto para o S3. User pool para o login, identity pool para o upload. Quem responde "só user pool" erra porque o S3 não aceita JWT; quem responde "usuário IAM" erra porque IAM não é para público.

Os autorizadores do API Gateway

AutorizadorValidaQuando é a resposta
Cognito user poolJWT emitido pelo pool, sem códigoOs usuários já estão num user pool: menor esforço
LambdaO que você programarToken de provedor de terceiro, regra de negócio, formato próprio
IAMAssinatura SigV4 de credenciais da AWSChamadas de serviços, contas e identidades da AWS, não de público

A regra de leitura: "sem manter código" e "usuários no Cognito" apontam para o autorizador Cognito; "provedor externo" ou "lógica personalizada" apontam para Lambda; "outro serviço" ou "outra conta" apontam para IAM.

Chave de API e plano de uso não autenticam ninguém. Identificam o cliente (um parceiro comercial) e limitam taxa e cota por cliente. "Cada parceiro com seu limite" é plano de uso; "cada usuário autenticado" é autorizador.

API privada e acesso sem internet

Uma API consumida só por serviços internos não precisa existir na internet. O desenho: API com endpoint do tipo privado, um endpoint de interface para o API Gateway na VPC, e a política de recurso da API restrita a esse endpoint. WAF não resolve isso: ele filtra o que já chegou.

O mesmo princípio vale ao contrário: para consumir um serviço de terceiro exposto via PrivateLink, um endpoint de interface na sua VPC aponta para o serviço do provedor, e o tráfego não sai da rede da AWS.

Como responder o cenário

Classifique quem acessa: público (Cognito), funcionário (Identity Center), serviço (role e autorizador IAM). Depois, o que ele precisa: provar quem é (user pool), usar um serviço da AWS (identity pool), chamar a API (autorizador). Por fim, a exposição: se ninguém de fora consome, a API é privada. Com essas três respostas, a alternativa certa sobra sozinha, e a que tem usuário IAM para cliente de aplicativo cai primeiro.

Se quiser outro ângulo1 vídeo
Complementar, da própria AWS: vê o user pool sendo configurado, com cadastro, login e o token que sai dele. Ajuda a visualizar o que o autorizador do API Gateway valida.

Como cai na sabatina

Um aplicativo móvel precisa que usuários façam login com e-mail ou rede social e enviem fotos direto para o S3. Qual desenho atende com o MENOR esforço?

Erros comuns

  • Criar usuário IAM para cliente de aplicativo. Usuário IAM é para operar a conta; pessoas de fora, em número indefinido, entram por Cognito ou por federação.
  • Confundir user pool com identity pool. User pool autentica (login, cadastro, MFA, tokens JWT). Identity pool troca um token por credenciais temporárias da AWS para acessar S3, DynamoDB e afins.
  • Usar autorizador Lambda quando o Cognito basta. Autorizador Lambda é para lógica própria (token de terceiro, regra de negócio); com user pool do Cognito, o autorizador nativo é a resposta de menor esforço.
  • Achar que autorizador IAM serve para usuário final de aplicativo. Autorizador IAM (SigV4) é para chamadas de serviços, contas e identidades da AWS, não para o público.
  • Expor a API na internet quando só serviços internos a consomem. API privada com endpoint de interface na VPC mantém tudo fora da internet.
  • Ignorar que o API Gateway já limita taxa. Throttling e chaves de API com planos de uso resolvem 'limitar clientes' antes de qualquer WAF.

Flashcards

Card 1 de 11

0 certos · 0 a rever

Drill

Qual peça resolve?

Para cada necessidade, diga a peça esperada na prova.

  1. 1.Login com Google e Facebook num aplicativo, com MFA opcional.

  2. 2.O aplicativo, já logado, precisa gravar direto num bucket S3.

  3. 3.Proteger a API validando o token do próprio Cognito, sem escrever código.

  4. 4.A API precisa aceitar tokens emitidos por um provedor de identidade de terceiro, com regra própria.

  5. 5.Um serviço interno em outra conta chama a API assinando as requisições.

  6. 6.A API só deve ser alcançável de dentro da VPC, nunca pela internet.

Quiz · 1 de 4

Uma empresa está lançando um aplicativo móvel para o público. Os usuários precisam se cadastrar com e-mail, fazer login com redes sociais e enviar fotos diretamente para o Amazon S3. Qual solução atende com o MENOR esforço operacional?

Explique para um gerente

Explique em um minuto a diferença entre 'provar quem você é' e 'receber uma credencial temporária para usar um serviço', e por que o Cognito tem uma peça para cada.

Se travar numa palavra técnica, é sinal de que ainda não entendeu essa parte.

Prefiro falar em voz alta

00:00

Toque para gravar, ou responda em voz alta sem gravar

Para ir além4 artigos