← AWS Solutions Architect Associate: decisões de arquitetura
21 / 23 · 70 MIN

Identidade de utilizadores e proteção web

Liga autenticação, autorização, proteção WAF e aceitação operacional num portal de fundos fictício.

Escolher o serviço pela credencial necessária

Um portal fictício permite que parceiros consultem posições e carreguem documentos. Desenha primeiro o caminho: navegador, login, API, armazenamento. Um user pool Cognito autentica utilizadores e emite tokens para a aplicação; um identity pool pode trocar identidade federada por credenciais AWS temporárias, limitadas por IAM. Se o navegador só chama a API, não precisas de lhe conceder acesso direto ao bucket. Se existe uma necessidade justificada de upload direto, define o recurso e as operações permitidas na função temporária. Regista separadamente quem administra utilizadores, quem aprova permissões e quem revoga o acesso do parceiro.

Validar o token e depois a operação

Ler JSON de um JWT não verifica a assinatura. Usa uma biblioteca adequada, com emissor esperado, chave de assinatura, expiração, tipo de token e cliente configurados. Num ID token, confirma aud; num access token Cognito, confirma client_id e os scopes exigidos, além de quaisquer restrições de audience do desenho. Um token assinado para outro cliente não se torna aceitável por vir do mesmo pool. No exercício, positions.read permite consulta, não submissão de ordens. Mesmo um scope correto não decide sozinho a titularidade do fundo: a API deve aplicar as regras de acesso aos objetos. Estas regras de negócio são decisões do nosso desenho fictício.

Desenhar o percurso de login no navegador

Uma aplicação executada apenas no navegador não consegue guardar um client secret confidencial. Para o cliente público deste exemplo, usa authorization code com PKCE e S256, o método suportado pelo Cognito. Guarda o verifier associado à transação e apresenta-o na troca do código; não o confundas com um segredo permanente do cliente. O callback enviado deve corresponder ao URI previamente registado. Uma mudança de /callback para /login/return exige rever essa configuração. No ensaio de aceitação, inclui callback não registado, código sem verifier correto e cliente incorreto. O responsável de produção precisa de saber a quem encaminhar cada falha, sem copiar tokens para o relatório.

Percorrer a ordem e o âmbito do WAF

No web ACL, começa pela prioridade numérica mais baixa. Count regista uma correspondência e deixa a avaliação continuar; Allow e Block terminam-na. Assim, um Allow demasiado amplo antes de uma regra de bloqueio pode impedir que essa regra seja avaliada. Para CloudFront, configura o âmbito global em us-east-1; para um ALB regional, usa a região do ALB. Cada recurso associa-se a um único web ACL, embora este possa conter várias regras e grupos. Duas equipas devem combinar as suas proteções nesse desenho, não tentar associar um segundo ACL. Segue manualmente o pedido até à ação final antes de alterar prioridades.

Compreender os limites de inspeção

Um limite por IP agrega os utilizadores que partilham esse endereço, como colaboradores atrás do mesmo NAT. O rate limiting WAF é aproximado e não serve como contador exato de uma quota comercial. Para um IP vindo de header, distingue ausente, inválido e válido: numa condição positiva simples, o header ausente não corresponde e não usa fallback; NOT inverteria esse resultado. Confirma quem escreve o header, pois o cliente pode falsificá-lo se a fronteira não o impedir. Continue numa inspeção de corpo demasiado grande examina apenas a parte disponível. Define o tratamento de uploads legítimos e dos bytes não inspecionados antes de aprovar a política.

Entregar proteção utilizável à produção

Antes do bloqueio, testa regras em ambiente de ensaio e observa Count com tráfego representativo. Investiga uma correspondência num upload legítimo; ajusta a regra específica e repete a aceitação, em vez de criar um Allow geral que evita outras inspeções. Associar WAF ao CloudFront não fecha automaticamente o acesso direto ao ALB. No exemplo de origem pública, o desenho inclui restrições de rede e header secreto validado pelo listener, protegido por HTTPS; testa também o caminho direto. Por fim, redigir um header nos logs WAF não o oculta nas amostras: configura proteção de dados para sampling ou desativa-o. Entrega responsáveis, métricas e condição de rollback ao RUN.

NA PRÁTICA

Oficina: o token tem positions.read, mas o pedido submete uma ordem. A API deve rejeitar a operação. Depois segue duas regras WAF que correspondem ao mesmo upload: prioridade 10 Allow e 30 Block. O resultado é Allow; o Block não é alcançado. Altera a exceção para que não autorize todo o parceiro antecipadamente e define um teste de regressão para o upload legítimo e outro para o pedido malicioso. Valores, regras e parceiros são fictícios.

Armadilhas comuns

Confundir JWT com credenciais IAM; confiar em decode sem verificar assinatura; aceitar outro aud; esconder um segredo no JavaScript; considerar Count um bloqueio; tratar um IP como uma pessoa; confiar num header enviado pelo cliente; supor inspeção integral de uploads; ocultar logs e esquecer sampling.

Tópicos relacionados: Identidade, confiança e permissões · Proteção e recuperação de dados · CloudFront: cache, privacidade e origem

Leva esta ideia contigo

Decide separadamente quem é o utilizador, o que pode fazer e quais os pedidos que atravessam a proteção. Aceita a solução com exemplos permitidos e recusados, limites de inspeção explícitos e um procedimento de recuperação. A oficina é documental; não executa Cognito ou WAF na AWS.

Criar conta

Referência: Amazon Cognito user pools · SAA-C03

AWS é uma marca comercial da Amazon.com, Inc. ou das suas afiliadas. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por AWS. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.