CloudFront, WAF ja Lambda@Edge
Liitätte AWS WAF:n yleisten verkkohyökkäysten estämiseksi ja suoritatte kevyitä pyyntöjen ja vastausten muunnoksia reunalla Lambda@Edgen avulla.
CloudFront, WAF ja Lambda@Edge on ilmainen AWS Solutions Architect-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu AWS Solutions Architect-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.
CloudFrontin suojaaminen AWS WAF:lla
AWS WAF (Web Application Firewall) suodattaa ja valvoo CloudFront-jakeluusi saapuvia HTTP/HTTPS-pyyntöjä. Liittämällä WAF:n Web ACL:n jakeluusi voit estää yleisiä verkkohyökkäyksiä – kuten SQL-injektioita, cross-site scripting (XSS) -hyökkäyksiä, haitallisia botteja ja OWASP Top 10 -hyökkäyksiä – ennen kuin ne saavuttavat alkuperäsi.
WAF toimii CloudFrontin edgessä, joten haitalliset pyynnöt hylätään lähimmässä edge-sijainnissa sen sijaan, että ne saavuttaisivat ALB:n tai sovelluspalvelimen. Tämä vähentää taustajärjestelmän kuormaa ja pysäyttää hyökkäykset lähempänä hyökkääjää.
# 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:n säännöt ja sääntöryhmät
WAF:n Web ACL sisältää järjestyksessä olevia sääntöjä ja sääntöryhmiä, jotka täsmäyttävät pyyntöjen ominaisuuksia ja suorittavat toiminnon (Allow, Block, Count, CAPTCHA). Säännöt arvioidaan prioriteettijärjestyksessä, ja ensimmäisen täsmäävän säännön toiminto otetaan käyttöön.
AWS tarjoaa hallinnoituja sääntöryhmiä – AWS:n ja AWS Marketplacen myyjien ylläpitämiä valmiita sääntökokonaisuuksia. AWS Managed Rules - Core Rule Set kattaa OWASP Top 10 -uhat ilman määrityksiä. AWS päivittää hallinnoituja sääntöryhmiä uusien uhkien ilmaantuessa, mikä vähentää ylläpitotyötäsi.
# 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:n nopeusrajoitus ja bottien hallinta
WAF:n nopeusperusteiset säännöt laskevat kustakin lähde-IP-osoitteesta tulevat pyynnöt viiden minuutin ajanjakson aikana. Jos IP-osoitteen pyyntömäärä ylittää raja-arvon (esimerkiksi 2 000 pyyntöä viidessä minuutissa), WAF estää kyseisestä IP-osoitteesta tulevat lisäpyynnöt, kunnes pyyntötahti laskee. Nopeusperusteiset säännöt suojaavat brute force -hyökkäyksiltä, tunnistetietojen täyttöhyökkäyksiltä ja yksinkertaisilta DDoS-kaavintahyökkäyksiltä.
AWS WAF Bot Control on hallinnoitu sääntöryhmä, joka luokittelee liikenteen seuraaviin luokkiin: vahvistetut botit (Googlebot, Bingbot), kaapijat, valvontatyökalut ja ihmisten liikenne. Kullekin luokalle voidaan määrittää eri toimintoja: salli hakukoneiden botit, haasta tuntemattomat botit CAPTCHA:lla ja estä haitalliset kaapijat.
WAF:n laajuus: CLOUDFRONT ja REGIONAL
WAF:n Web ACL:t määritetään joko CLOUDFRONT-laajuisiksi (globaalit, CloudFrontia varten) tai REGIONAL-laajuisiksi (tietyllä alueella sijaitsevaa ALB:tä, API Gatewayta, AppSynciä tai Cognito User Poolsia varten). CloudFront-laajuiset WAF ACL:t on luotava us-east-1-alueelle riippumatta siitä, mistä liikenne tulee, koska CloudFrontia hallitaan tältä alueelta.
Tämä on tärkeä koetilanteen kompa: jos luot WAF:n Web ACL:n alueelle eu-west-1 ja yrität liittää sen CloudFrontiin, liittäminen epäonnistuu. Luo CloudFrontin WAF ACL:t aina alueelle us-east-1.
Lambda@Edgen esittely
Lambda@Edge mahdollistaa Node.js- tai Python-Lambda-funktioiden suorittamisen CloudFrontin edge-sijainneissa CloudFront-tapahtumien perusteella. Funktiot suoritetaan millisekunneissa käyttäjän pyynnön jälkeen ilman, että liikennettä tarvitsee reitittää käsittelyä varten takaisin keskitetylle alueelle.
Lambda@Edge-funktiot otetaan käyttöön alueella us-east-1, mutta ne monistetaan automaattisesti kaikkiin CloudFrontin edge-sijainteihin maailmanlaajuisesti. Näin koodisi suoritetaan mahdollisimman lähellä käyttäjää, mikä mahdollistaa personoinnin, todennuksen ja A/B-testauksen edgessä pienellä viiveellä.
Lambda@Edgen laukaisupisteet
Lambda@Edge-funktiot voivat siepata CloudFrontin pyyntöjä ja vastauksia elinkaaren neljässä kohdassa:
- Viewer Request: sen jälkeen kun CloudFront on vastaanottanut pyynnön katsojalta ja ennen välimuistin tarkistamista – käytä todennukseen, uudelleenohjauksiin ja otsakkeiden käsittelyyn
- Origin Request: välimuistihudin jälkeen ja ennen pyynnön välittämistä alkuperälle – käytä URL-osoitteiden uudelleenkirjoittamiseen ja alkuperälle lähetettäviin mukautettuihin otsakkeisiin
- Origin Response: alkuperältä saadun vastauksen jälkeen ja ennen sen tallentamista välimuistiin – käytä suojausotsakkeiden lisäämiseen ja vastauksen muokkaamiseen
- Viewer Response: ennen kuin CloudFront lähettää vastauksen katsojalle – käytä vastausotsakkeiden lisäämiseen tai muokkaamiseen
Lambda@Edge ja CloudFront Functions
AWS tarjoaa kaksi edge-laskennan vaihtoehtoa, joiden ominaisuudet poikkeavat toisistaan:
- CloudFront Functions: suoritus alle millisekunnissa, vain JavaScript, erittäin edullinen (noin 1/6 hinnasta), toimii vain Viewer Request- ja Viewer Response -tapahtumissa, laskenta-aikaraja 1 ms, ei VPC- tai verkkoyhteyksiä
- Lambda@Edge: suoritusaika enintään 30 sekuntia (Viewer) / 30 sekuntia (Origin), Node.js tai Python, kaikki neljä laukaisupistettä, voi tehdä verkkopyyntöjä ja voi käyttää pyyntöjen ja vastausten runkoja
Käytä CloudFront Functionsia yksinkertaiseen otsakkeiden käsittelyyn, URL-osoitteiden normalisointiin ja välimuistiavaimen laskemiseen. Käytä Lambda@Edgeä monimutkaiseen logiikkaan, joka edellyttää verkkokutsuja, pidempää laskentaa tai alkuperän puolella tapahtuvaa käsittelyä.
Lambda@Edgen käyttötapaukset
Yleisiä Lambda@Edge-malleja SAA-C03-kokeessa:
- JWT:n vahvistaminen edgessä: Viewer Request -funktio vahvistaa Authorization-otsakkeen; luvattomat pyynnöt palauttavat vastauksen 401 saavuttamatta alkuperää
- A/B-testaus: Viewer Request määrittää käyttäjät A- tai B-ryhmään (evästeen avulla) ja muuttaa pyyntöä hakemaan kohteen
/a/page.htmltai/b/page.html - URL-osoitteiden uudelleenkirjoittaminen: Origin Request muuttaa selkeät URL-osoitteet S3:n todellisiksi tiedostopoluiksi
- Dynaaminen kuvien koon muuttaminen: Origin Request muodostaa pyynnön kuvankäsittelyyn tarkoitetulle Lambdalle; Origin Response tallentaa muutetun kuvan välimuistiin
- HTTP-suojausotsakkeet: Viewer Response lisää CSP-, HSTS- ja X-Frame-Options-otsakkeet
Lambda@Edgen rajoitukset
Lambda@Edgeen liittyy useita rajoituksia tavalliseen Lambdaan verrattuna:
- Funktioiden on sijaittava us-east-1-alueella
- VPC-tukea ei ole (VPC:n resursseja ei voi käyttää)
- Ympäristömuuttujia ei ole (määritykset on sisällytettävä funktion koodiin tai haettava Parameter Storesta cold start -käynnistyksen yhteydessä)
- Lambda Layers -tasoja ei voi käyttää
- Viewer-tapahtuman aikakatkaisu: 5 sekuntia; Origin-tapahtuman aikakatkaisu: 30 sekuntia
- Käyttöönottopaketin kokorajoitus: 1 Mt (Viewer-tapahtumat) / 50 Mt (Origin-tapahtumat)
Näiden rajoitusten vuoksi Lambda@Edge ei sovellu pitkäkestoisiin laskentoihin, VPC:stä riippuviin toimintoihin tai funktioihin, jotka tarvitsevat käyttöönoton yhteydessä dynaamisesti määritettävät asetukset.
WAF + Lambda@Edge: kerroksellinen tietoturva
WAF:lla ja Lambda@Edgellä on erilaiset tietoturvaroolit, ja ne täydentävät toisiaan:
- WAF: allekirjoituksiin perustuva hyökkäysten esto (SQL-injektio, XSS, tunnetut haitalliset toimijat, nopeusrajoitus) — hallitut säännöt käsittelevät yleiset hyökkäykset automaattisesti
- Lambda@Edge: mukautettu liiketoimintalogiikkaan perustuva tietoturva (JWT:n validointi, istunnon tarkistukset, käyttöoikeustunnisteen vahvistaminen) — joustava, mutta vaatii kehitystyötä
Syvyyssuuntainen tietoturva-arkkitehtuuri toimii näin: WAF estää tunnetut hyökkäysmallit ensin; Lambda@Edge validoi liiketoimintatason todennuksen; CloudFrontin allekirjoitetut URL-osoitteet ja evästeet rajoittavat sisällön käyttöä; OAC pitää S3:n yksityisenä. Kukin kerros estää itsenäisesti eri tyyppisiä hyökkäyksiä.
WAF:n ja Lambda@Edgen valvonta
Valvokaa reunatason tietoturvakerrostanne seuraavilla työkaluilla:
- WAF-lokit: ottakaa käyttöön täydellinen pyyntöjen lokitus S3:een, CloudWatch Logsiin tai Kinesis Firehoseen, jotta näette, mitkä säännöt täsmäävät ja mikä liikenne estetään
- WAF-mittarit:
BlockedRequests,AllowedRequestsjaCountedRequestssääntöä kohden CloudWatchissa - Lambda@Edge-lokit: CloudWatch Logs -lokiryhmät luodaan jokaiselle alueelle, jolla funktio suoritetaan; tehkää kyselyitä alueiden yli CloudWatch Insightsin avulla
- CloudFront Real-Time Logs: suoratoistakaa käyttölokit Kinesisiin välitöntä analyysiä varten (toisin kuin tavalliset käyttölokit, jotka kootaan muutaman minuutin välein)
Pikatarkistus
Testatkaa tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteiden ymmärrystänne.
Oppitunnin yhteenveto
Tässä oppitunnissa opitte, että AWS WAF estää yleiset verkkohyökkäykset CloudFrontin reunalla hallittujen ja mukautettujen sääntöryhmien avulla, Lambda@Edge suorittaa mukautettua koodia neljässä CloudFrontin käynnistyskohdassa maailmanlaajuisesti ja CloudFront Functions tarjoaa alle millisekunnin suoritusajan yksinkertaiseen viewer-puolen logiikkaan. CloudFrontin WAF ACL:t on luotava alueella us-east-1. Seuraavaksi tutustumme Application-, Network- ja Gateway Load Balancereihin.
Opi AWS Solutions Architect tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”CloudFront, WAF ja Lambda@Edge” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa AWS Solutions Architect-oppimispolun 3 oppituntia, myös oppitunnin “CloudFront, WAF ja Lambda@Edge”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”CloudFront, WAF ja Lambda@Edge”?
Liitätte AWS WAF:n yleisten verkkohyökkäysten estämiseksi ja suoritatte kevyitä pyyntöjen ja vastausten muunnoksia reunalla Lambda@Edgen avulla. Harjoittelet AWS Solutions Architect-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni AWS Solutions Architect-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin AWS Solutions Architect-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”CloudFront, WAF ja Lambda@Edge”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä AWS Solutions Architect-oppitunnilla?
Kyllä. Jokainen AWS Solutions Architect-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- CloudFront-jakelut ja origin-palvelimet
- Välimuistikäyttäytyminen ja TTL-asetukset
- Allekirjoitetut URL-osoitteet, allekirjoitetut evästeet ja maantieteelliset rajoitukset
- CloudFront, WAF ja Lambda@Edge