CloudFront com WAF e Lambda@Edge
Associe o AWS WAF para bloquear ataques comuns à Web e execute transformações leves de solicitações e respostas na borda com o Lambda@Edge.
CloudFront com WAF e Lambda@Edge é uma aula grátis de AWS Solutions Architect no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AWS Solutions Architect, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AWS Solutions Architect inclui 4 aulas no total.
Protegendo o CloudFront com AWS WAF
O AWS WAF (Web Application Firewall) filtra e monitora solicitações HTTP/HTTPS que chegam à sua distribuição do CloudFront. Ao associar uma Web ACL do WAF à sua distribuição, você pode bloquear explorações comuns da Web — injeção de SQL, script entre sites (XSS), bots mal-intencionados e ataques do OWASP Top 10 — antes que cheguem à sua origem.
O WAF opera na borda do CloudFront. Isso significa que as solicitações mal-intencionadas são rejeitadas no local de borda mais próximo, em vez de chegar ao seu ALB ou servidor de aplicação. Isso reduz a carga no backend e interrompe os ataques mais perto do invasor.
# Associate a WAF Web ACL with a CloudFront distribution
aws wafv2 associate-web-acl \
--web-acl-arn arn:aws:wafv2:us-east-1:123456789:global/webacl/MyACL/12345 \
--resource-arn arn:aws:cloudfront::123456789:distribution/EDFDVBD6EXAMPLERegras e grupos de regras do WAF
Uma Web ACL do WAF contém regras e grupos de regras ordenados, que correspondem a atributos das solicitações e executam uma ação (Allow, Block, Count, CAPTCHA). As regras são avaliadas na ordem de prioridade; a ação da primeira regra correspondente é aplicada.
A AWS fornece grupos de regras gerenciados: conjuntos de regras predefinidos mantidos pela AWS e por vendedores do AWS Marketplace. O AWS Managed Rules - Core Rule Set abrange o OWASP Top 10 sem nenhuma configuração. A AWS atualiza os grupos de regras gerenciados à medida que surgem novas ameaças, reduzindo sua carga operacional.
# Create a Web ACL with AWS Managed Core Rule Set
aws wafv2 create-web-acl \
--name MyCloudFrontACL \
--scope CLOUDFRONT \
--default-action Allow={} \
--rules '[{
"Name": "CoreRuleSet",
"Priority": 1,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesCommonRuleSet"
}
},
"OverrideAction": {"None": {}},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "CoreRuleSet"
}
}]' \
--visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=MyACL \
--region us-east-1Limitação de taxa e controle de bots no WAF
As regras baseadas em taxa do WAF contam as solicitações de cada IP de origem em uma janela de 5 minutos. Se um IP exceder o limite, por exemplo, 2.000 solicitações em 5 minutos, o WAF bloqueará novas solicitações desse IP até que a taxa diminua. As regras baseadas em taxa protegem contra força bruta, preenchimento de credenciais e ataques simples de raspagem por DDoS.
O AWS WAF Bot Control é um grupo de regras gerenciado que classifica o tráfego em categorias: bots verificados, como Googlebot e Bingbot; raspadores; ferramentas de monitoramento; e tráfego humano. Você pode configurar ações diferentes por categoria: permitir bots de mecanismos de busca, desafiar bots desconhecidos com CAPTCHA e bloquear raspadores mal-intencionados.
Escopo do WAF: CLOUDFRONT versus REGIONAL
As Web ACLs do WAF têm escopo CLOUDFRONT, global e destinado ao uso com o CloudFront, ou REGIONAL, destinado ao uso com ALB, API Gateway, AppSync ou grupos de usuários do Cognito em uma região específica. As ACLs do WAF com escopo do CloudFront devem ser criadas na região us-east-1, independentemente de onde o tráfego se origine, pois o CloudFront é gerenciado a partir dessa região.
Esta é uma armadilha importante de prova: se você criar uma Web ACL do WAF em eu-west-1 e tentar associá-la ao CloudFront, a associação falhará. Sempre crie as ACLs do WAF do CloudFront em us-east-1.
Introdução ao Lambda@Edge
O Lambda@Edge permite executar funções Lambda Node.js ou Python nos locais de borda do CloudFront em resposta a eventos do CloudFront. As funções são executadas em milissegundos após a solicitação do usuário, sem encaminhar o tráfego de volta a uma região central para processamento.
As funções do Lambda@Edge são implantadas na região us-east-1, mas replicadas automaticamente para todos os locais de borda do CloudFront no mundo. Isso faz com que seu código seja executado o mais perto possível do usuário, permitindo personalização, autenticação e testes A/B na borda, com sobrecarga mínima de latência.
Pontos de acionamento do Lambda@Edge
As funções do Lambda@Edge podem interceptar solicitações e respostas do CloudFront em quatro pontos do ciclo de vida:
- Viewer Request: depois que o CloudFront recebe a solicitação do visitante e antes de verificar o cache — use para autenticação, redirecionamentos e manipulação de cabeçalhos
- Origin Request: depois de uma falha de cache e antes de encaminhar a solicitação à origem — use para reescrita de URLs e cabeçalhos personalizados para a origem
- Origin Response: depois de receber a resposta da origem e antes de armazená-la em cache — use para adicionar cabeçalhos de segurança e modificar a resposta
- Viewer Response: antes de o CloudFront enviar a resposta ao visitante — use para adicionar ou modificar cabeçalhos da resposta
Lambda@Edge versus CloudFront Functions
A AWS oferece duas opções de computação na borda, com diferentes compromissos:
- CloudFront Functions: execução em menos de um milissegundo, somente JavaScript, custo extremamente baixo, aproximadamente 1/6 do preço, execução apenas nos eventos Viewer Request e Viewer Response, limite de 1 ms de tempo de computação e sem acesso a VPC ou à rede
- Lambda@Edge: tempo de execução de até 30 segundos para Viewer e 30 segundos para Origin, Node.js ou Python, os quatro pontos de acionamento, capacidade de fazer solicitações de rede e acesso aos corpos das solicitações e respostas
Use CloudFront Functions para manipulação simples de cabeçalhos, normalização de URLs e cálculo de chaves de cache. Use Lambda@Edge para lógica complexa que exija chamadas de rede, computação mais longa ou processamento no lado da origem.
Casos de uso do Lambda@Edge
Padrões comuns do Lambda@Edge na prova SAA-C03:
- Validação de JWT na borda: a função Viewer Request valida um cabeçalho de autorização; as solicitações não autorizadas retornam 401 sem alcançar a origem
- Testes A/B: o Viewer Request atribui os usuários ao grupo A ou B, por meio de um cookie, e modifica a solicitação para buscar
/a/page.htmlou/b/page.html - Reescrita de URLs: o Origin Request reescreve URLs amigáveis nos caminhos reais dos arquivos no S3
- Redimensionamento dinâmico de imagens: o Origin Request cria uma solicitação para uma função Lambda de processamento de imagens; o Origin Response armazena a imagem redimensionada em cache
- Cabeçalhos de segurança HTTP: o Viewer Response insere os cabeçalhos CSP, HSTS e X-Frame-Options
Limitações do Lambda@Edge
O Lambda@Edge tem várias restrições em comparação com o Lambda padrão:
- As funções devem estar na Região us-east-1
- Não há suporte a VPC (não é possível acessar recursos em uma VPC)
- Não há variáveis de ambiente (incorpore a configuração ao código da função ou busque-a no Parameter Store durante a inicialização a frio)
- Não é possível usar camadas do Lambda
- Tempo limite do evento do visualizador: 5 segundos; tempo limite do evento da origem: 30 segundos
- Limite do tamanho do pacote de implantação: 1 MB (eventos do visualizador) / 50 MB (eventos da origem)
Essas limitações tornam o Lambda@Edge inadequado para cálculos de longa duração, operações dependentes de VPC ou funções que precisam de configuração dinâmica a cada implantação.
WAF + Lambda@Edge: segurança em camadas
O WAF e o Lambda@Edge desempenham funções de segurança diferentes e se complementam:
- WAF: bloqueio de ataques com base em assinaturas (injeção de SQL, XSS, agentes mal-intencionados conhecidos, limitação de taxa)—as regras gerenciadas lidam automaticamente com ataques comuns
- Lambda@Edge: lógica de segurança personalizada de negócios (validação de JWT, verificações de sessão, verificação de tokens de acesso)—é flexível, mas exige esforço de desenvolvimento
Uma arquitetura de defesa em profundidade: o WAF bloqueia primeiro os padrões de ataque conhecidos; o Lambda@Edge valida a autenticação no nível de negócio; URLs/cookies assinados do CloudFront restringem o acesso ao conteúdo; o OAC mantém o S3 privado. Cada camada impede de forma independente uma classe diferente de ataque.
Monitoramento do WAF e do Lambda@Edge
Monitore sua camada de segurança de borda com estas ferramentas:
- Registros do WAF: habilite o registro completo de solicitações no S3, no CloudWatch Logs ou no Kinesis Firehose para ver quais regras correspondem e qual tráfego é bloqueado
- Métricas do WAF:
BlockedRequests,AllowedRequests,CountedRequestspor regra no CloudWatch - Registros do Lambda@Edge: os grupos de registros do CloudWatch Logs são criados em cada Região onde a função é executada; use o CloudWatch Insights para consultar várias Regiões
- Registros em tempo real do CloudFront: transmita registros de acesso para o Kinesis para análise imediata (em comparação com os registros de acesso padrão, que são agrupados a cada poucos minutos)
Verificação rápida
Teste sua compreensão dos conceitos do AWS Solutions Architect (SAA-C03) abordados nesta lição.
Resumo da lição
Nesta lição, você aprendeu que: o AWS WAF bloqueia ataques comuns à Web na borda do CloudFront usando grupos de regras gerenciadas e personalizadas; o Lambda@Edge executa código personalizado em quatro pontos de acionamento do CloudFront globalmente; e as funções do CloudFront oferecem execução em menos de um milissegundo para lógica simples no lado do visualizador. As ACLs do WAF para o CloudFront devem ser criadas em us-east-1. A seguir, exploraremos os balanceadores de carga de aplicação, de rede e de gateway.
Perguntas Frequentes
A aula “CloudFront com WAF e Lambda@Edge” é grátis?
Sim — o texto completo de “CloudFront com WAF e Lambda@Edge” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AWS Solutions Architect, atualize para CoddyKit PRO. O curso de AWS Solutions Architect inclui 4 aulas no total.
O que vou aprender em “CloudFront com WAF e Lambda@Edge”?
Associe o AWS WAF para bloquear ataques comuns à Web e execute transformações leves de solicitações e respostas na borda com o Lambda@Edge. Você pratica AWS Solutions Architect com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AWS Solutions Architect?
Nenhuma experiência prévia é necessária. AWS Solutions Architect no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “CloudFront com WAF e Lambda@Edge”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AWS Solutions Architect?
Sim. Cada aula de AWS Solutions Architect inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Distribuições e origens do CloudFront
- Comportamentos de cache e configurações de TTL
- URLs assinadas, cookies assinados e restrição geográfica
- CloudFront com WAF e Lambda@Edge