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 verUm 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?
Vídeo · português · 8 min
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 pool | Identity pool | |
|---|---|---|
| Pergunta que responde | Quem é você? | O que você pode usar na AWS? |
| Entrada | E-mail e senha, telefone, Google, Facebook, SAML, OIDC | Um token: do user pool, de rede social, de SAML, ou nada (convidado) |
| Saída | Tokens JWT: id, acesso, refresh | Credenciais temporárias da AWS (STS) com uma role |
| Recursos | Cadastro, MFA, recuperação de senha, verificação, grupos, UI hospedada | Role autenticada e role de convidado |
| Usado por | A aplicação e o API Gateway (autorizador) | O aplicativo, para chamar S3, DynamoDB e outros direto |
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
| Autorizador | Valida | Quando é a resposta |
|---|---|---|
| Cognito user pool | JWT emitido pelo pool, sem código | Os usuários já estão num user pool: menor esforço |
| Lambda | O que você programar | Token de provedor de terceiro, regra de negócio, formato próprio |
| IAM | Assinatura SigV4 de credenciais da AWS | Chamadas 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
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 reverDrill
Qual peça resolve?
Para cada necessidade, diga a peça esperada na prova.
1.Login com Google e Facebook num aplicativo, com MFA opcional.
2.O aplicativo, já logado, precisa gravar direto num bucket S3.
3.Proteger a API validando o token do próprio Cognito, sem escrever código.
4.A API precisa aceitar tokens emitidos por um provedor de identidade de terceiro, com regra própria.
5.Um serviço interno em outra conta chama a API assinando as requisições.
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