CloudFront med WAF och Lambda@Edge
Koppla AWS WAF för att blockera vanliga webbattacker och kör lätta transformationssteg för förfrågningar och svar vid kanten med Lambda@Edge.
CloudFront med WAF och Lambda@Edge är en gratis lektion i AWS Solutions Architect på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för AWS Solutions Architect, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.
Skydda CloudFront med AWS WAF
AWS WAF (Web Application Firewall) filtrerar och övervakar HTTP/HTTPS-begäranden som når er CloudFront-distribution. Genom att koppla en WAF-Web ACL till distributionen kan ni blockera vanliga webbattacker – SQL-injektion, cross-site scripting (XSS), skadliga botar och attacker från OWASP Top 10 – innan de når ursprunget.
WAF körs vid CloudFront-edge, vilket innebär att skadliga begäranden avvisas vid närmaste edge-plats i stället för att nå er ALB eller applikationsserver. Det minskar belastningen på backend och stoppar attacker närmare angriparen.
# 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/EDFDVBD6EXAMPLEWAF-regler och regelgrupper
En WAF Web ACL innehåller ordnade regler och regelgrupper som var och en matchar attribut i begäranden och utför en åtgärd (Allow, Block, Count, CAPTCHA). Reglerna utvärderas i prioritetsordning och åtgärden för den första matchande regeln tillämpas.
AWS tillhandahåller hanterade regelgrupper – färdiga regeluppsättningar som underhålls av AWS och säljare på AWS Marketplace. AWS Managed Rules - Core Rule Set täcker OWASP Top 10 utan någon konfiguration. AWS uppdaterar de hanterade regelgrupperna när nya hot uppstår, vilket minskar den operativa arbetsbördan.
# 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-1WAF: hastighetsbegränsning och botkontroll
Hastighetsbaserade regler i WAF räknar begäranden från varje käll-IP under ett femminutersintervall. Om en IP-adress överskrider tröskelvärdet (till exempel 2 000 begäranden på 5 minuter) blockerar WAF ytterligare begäranden från den IP-adressen tills hastigheten sjunker. Hastighetsbaserade regler skyddar mot brute force, credential stuffing och enklare DDoS-baserade skrapningsattacker.
AWS WAF Bot Control är en hanterad regelgrupp som klassificerar trafik i kategorier: verifierade botar (Googlebot, Bingbot), skrapverktyg, övervakningsverktyg och mänsklig trafik. Ni kan konfigurera olika åtgärder per kategori – tillåta sökmotorbotar, utmana okända botar med CAPTCHA och blockera skadliga skrapverktyg.
WAF-omfattning: CLOUDFRONT jämfört med REGIONAL
WAF Web ACL:er har antingen omfattningen CLOUDFRONT (global, för användning med CloudFront) eller REGIONAL (för användning med ALB, API Gateway, AppSync eller Cognito User Pools i en specifik Region). CloudFront-omfattade WAF ACL:er måste skapas i us-east-1 Region, oavsett var trafiken kommer från, eftersom CloudFront hanteras från den regionen.
Detta är en viktig fallgrop på provet: om ni skapar en WAF Web ACL i eu-west-1 och försöker koppla den till CloudFront misslyckas kopplingen. Skapa alltid WAF ACL:er för CloudFront i us-east-1.
Introduktion till Lambda@Edge
Lambda@Edge gör det möjligt att köra Lambda-funktioner i Node.js eller Python på CloudFronts edge-platser som svar på CloudFront-händelser. Funktionerna körs inom millisekunder från användarens begäran, utan att trafiken behöver dirigeras tillbaka till en central Region för bearbetning.
Lambda@Edge-funktioner distribueras till regionen us-east-1 men replikeras automatiskt till alla CloudFront-edge-platser globalt. Det innebär att koden körs så nära användaren som möjligt, vilket möjliggör personalisering, autentisering och A/B-testning vid edge med minimal extra fördröjning.
Utlösningspunkter för Lambda@Edge
Lambda@Edge-funktioner kan fånga upp CloudFront-begäranden och svar vid fyra punkter i livscykeln:
- Viewer Request: efter att CloudFront har tagit emot begäran från användaren, innan cachen kontrolleras – används för autentisering, omdirigeringar och manipulation av headers
- Origin Request: efter en cachemiss, innan begäran vidarebefordras till ursprunget – används för URL-omskrivning och anpassade headers till ursprunget
- Origin Response: efter att svaret har tagits emot från ursprunget, innan det cachas – används för att lägga till säkerhetsheaders och ändra svaret
- Viewer Response: innan CloudFront skickar svaret till användaren – används för att lägga till eller ändra svarsheaders
Lambda@Edge jämfört med CloudFront Functions
AWS erbjuder två alternativ för beräkning vid edge, med olika avvägningar:
- CloudFront Functions: körning på under en millisekund, endast JavaScript, mycket låg kostnad (cirka 1/6 av priset), körs endast vid händelserna Viewer Request och Viewer Response, gräns på 1 ms beräkningstid och ingen åtkomst till VPC eller nätverk
- Lambda@Edge: upp till 30 sekunders körningstid (Viewer) / 30 sekunder (Origin), Node.js eller Python, alla fyra utlösningspunkter, kan göra nätverksbegäranden och har åtkomst till begärande- och svarskroppar
Använd CloudFront Functions för enkel header-manipulation, normalisering av URL:er och beräkning av cache-nycklar. Använd Lambda@Edge för komplex logik som kräver nätverksanrop, längre beräkningar eller bearbetning på ursprungssidan.
Användningsfall för Lambda@Edge
Vanliga Lambda@Edge-mönster på SAA-C03-provet:
- JWT-validering vid edge: en Viewer Request-funktion validerar en Authorization-header; obehöriga begäranden returnerar 401 utan att nå ursprunget
- A/B-testning: Viewer Request tilldelar användare grupp A eller B (via en cookie) och ändrar begäran så att
/a/page.htmleller/b/page.htmlhämtas - URL-omskrivning: Origin Request skriver om rena URL:er till de faktiska filsökvägarna i S3
- Dynamisk bildstorleksändring: Origin Request skapar en begäran till en bildbearbetande Lambda; Origin Response cachar den storleksändrade bilden
- HTTP-säkerhetsheaders: Viewer Response lägger in CSP-, HSTS- och X-Frame-Options-headers
Begränsningar för Lambda@Edge
Lambda@Edge har flera begränsningar jämfört med standard-Lambda:
- Funktioner måste finnas i regionen us-east-1
- Inget stöd för VPC (kan inte komma åt resurser i en VPC)
- Inga miljövariabler (bädda in konfigurationen i funktionskoden eller hämta den från Parameter Store vid kallstart)
- Kan inte använda Lambda Layers
- Tidsgräns för viewer-händelser: 5 sekunder; tidsgräns för origin-händelser: 30 sekunder
- Storleksgräns för distributionspaket: 1 MB (viewer-händelser) / 50 MB (origin-händelser)
På grund av dessa begränsningar lämpar sig Lambda@Edge inte för långvariga beräkningar, åtgärder som är beroende av VPC eller funktioner som behöver dynamisk konfiguration vid varje distribution.
WAF + Lambda@Edge: lagerbaserad säkerhet
WAF och Lambda@Edge har olika säkerhetsroller och kompletterar varandra:
- WAF: signaturbaserad blockering av attacker (SQL-injektion, XSS, kända angripare, hastighetsbegränsning) – hanterade regler hanterar vanliga attacker automatiskt
- Lambda@Edge: anpassad säkerhetslogik för verksamheten (validering av JWT, sessionskontroller, verifiering av åtkomsttoken) – flexibelt men kräver utvecklingsarbete
En defense-in-depth-arkitektur: WAF blockerar först kända attackmönster; Lambda@Edge validerar autentisering på verksamhetsnivå; signerade URL:er och cookies i CloudFront begränsar åtkomsten till innehåll; OAC håller S3 privat. Varje lager förhindrar självständigt en annan typ av attack.
Övervakning av WAF och Lambda@Edge
Övervaka säkerhetslagret i edge-miljön med dessa verktyg:
- WAF-loggar: aktivera fullständig loggning av begäranden till S3, CloudWatch Logs eller Kinesis Firehose för att se vilka regler som matchar och vilken trafik som blockeras
- WAF-mätvärden:
BlockedRequests,AllowedRequests,CountedRequestsper regel i CloudWatch - Lambda@Edge-loggar: CloudWatch Logs-logggrupper skapas i varje region där funktionen körs; använd CloudWatch Insights för att söka i flera regioner
- CloudFront Real-Time Logs: strömma åtkomstloggar till Kinesis för omedelbar analys (i stället för standardåtkomstloggar som samlas i batchar med några minuters mellanrum)
Snabbtest
Testa Era kunskaper om AWS Solutions Architect-koncepten (SAA-C03) från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har Ni lärt Er att AWS WAF blockerar vanliga webbattacker vid CloudFronts edge med hjälp av hanterade och anpassade regelgrupper, att Lambda@Edge kör anpassad kod vid fyra utlösarpunkter i CloudFront globalt och att CloudFront Functions erbjuder körning på under en millisekund för enkel logik på viewer-sidan. WAF-ACL:er för CloudFront måste skapas i us-east-1. Härnäst går vi igenom Application Load Balancer, Network Load Balancer och Gateway Load Balancer.
Lär dig AWS Solutions Architect med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”CloudFront med WAF och Lambda@Edge” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AWS Solutions Architect, inklusive ”CloudFront med WAF och Lambda@Edge”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i AWS Solutions Architect innehåller totalt 4 lektioner.
Vad lär jag mig i ”CloudFront med WAF och Lambda@Edge”?
Koppla AWS WAF för att blockera vanliga webbattacker och kör lätta transformationssteg för förfrågningar och svar vid kanten med Lambda@Edge. Ni övar på AWS Solutions Architect med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig AWS Solutions Architect?
Du behöver inga förkunskaper. Utbildningen i AWS Solutions Architect på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”CloudFront med WAF och Lambda@Edge”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här AWS Solutions Architect-lektionen?
Ja. Varje AWS Solutions Architect-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- CloudFront-distributioner och ursprung
- Cachebeteenden och TTL-inställningar
- Signerade URL:er, signerade cookies och geografisk begränsning
- CloudFront med WAF och Lambda@Edge