Skydda dina API:er

Utveckla applikationer på AWS

Ricardo Sueiras

Principal Technologist

Säkra API:er på AWS

 

securing api

  • Att säkra API:er är viktigt för molnbaserade appar.
  • De exponerar känslig affärsfunktionalitet.
  • De är ofta den publika ingångspunkten till backend-system.
  • API Gateway hjälper dig att exponera API:er på ett säkert sätt.
Utveckla applikationer på AWS

Auktorisering och autentisering

 

authnauthz

  • Två nyckelbegrepp:
  • Autentisering: vem du är.
  • Auktorisering: vad du får göra.
Utveckla applikationer på AWS

IAM-auktorisering

 

iam

  • API Gateway kan använda IAM för autentisering och auktorisering.
  • Skyddar API:er med Signature Version 4 (SigV4).
  • Klienter signerar varje förfrågan.
  • API Gateway validerar signaturen innan bearbetning.
  • IAM-policyer styr vad varje identitet får anropa.
  • Bäst för kommunikation mellan AWS-tjänster.
Utveckla applikationer på AWS

Amazon Cognito-auktoriserare

  • Cognito autentiserar användare med JSON Web Tokens (JWT).
  • Vanliga användningsfall: mobilappar, webbappar, inloggningsflöden.
  • Stöder federerade identiteter.
  • Fungerar med externa leverantörer som Google, Apple och Facebook.
  • Företagsleverantörer via SAML eller OIDC.
  • Validerar JWT nativt – ingen anpassad auktoriseringskod krävs.

 

cogauthz

Utveckla applikationer på AWS

Lambda-auktoriserare

  • En Lambda-funktion kör din anpassade auktoriseringslogik.
  • Den returnerar en IAM-policy som tillåter eller nekar åtkomst.
  • Använd den för att validera anpassade token.
  • Integrera med externa identitetsleverantörer.
  • Tillämpa egna anpassade regler.

 

lambda authorizer

Utveckla applikationer på AWS

Lambda-auktoriserare

  • Exempel: validera ett JWT från en leverantör som Auth0.
  • En förfrågan anländer och API Gateway anropar auktoriseraren.
  • Funktionen validerar token och returnerar en IAM-policy.
  • Policyn avgör åtkomsten: tillåt eller neka.
  • Om tillåtet vidarebefordras förfrågan till backend.
  • Om nekad returnerar API Gateway 401 omedelbart.

 

lambda authorizer

Utveckla applikationer på AWS

Vilken auktoriserare ska du välja

 

choosing which authorizer

  • Välj Cognito för användarorienterade appar.
  • Det erbjuder hanterad registrering, inloggning och tokenvalidering.
  • Ingen anpassad kod krävs.
  • Välj Lambda när du behöver anpassad logik.
  • Lämpligt för tredjepartsidentitetsleverantörer.
  • Eller regler som går bortom vad Cognito stöder.
Utveckla applikationer på AWS

Cachelagring av auktoriserare

 

caching authz

  • Auktoriserarsvar cachas.
  • Det minskar latens och kostnad vid frekventa anrop.
  • Cache-TTL är konfigurerbar.
  • Intervall: 0 till 3 600 sekunder.
  • Standardvärde är 300 sekunder.
  • TTL satt till 0 inaktiverar cachelagring.
Utveckla applikationer på AWS

API Gateway-resurspolicyer

 

resource policies

  • Definiera policyer för att styra vem som får åtkomst till ett API.
  • Begränsa per AWS-konto.
  • Begränsa per IP-adressintervall.
  • Begränsa per VPC.
  • Hjälper till att låsa interna API:er och begränsa exponeringen.
Utveckla applikationer på AWS

Kryptering

  • API Gateway stöder HTTPS-slutpunkter med TLS som standard.
  • HTTPS krypterar data under överföring mellan klient och gateway.
  • Integreras med AWS Certificate Manager (ACM).
  • ACM förenklar certifikathantering för anpassade domäner.
  • Certifikat för anpassade domäner är gratis.
  • Exponera ALDRIG API:er via okrypterad HTTP.

 

encryption

Utveckla applikationer på AWS

Ömsesidig TLS (mTLS)

 

  • API Gateway stöder ömsesidig TLS (mTLS).
  • Autentiserar klienter med certifikat.
  • Kräver konfigurerat domännamn.
  • Vanligt vid maskin-till-maskin-kommunikation.
  • Båda parter verifierar varandras identitet.

 

mtls

Utveckla applikationer på AWS

API-begränsning och hastighetsgränser

  • Begränsning skyddar backend-system.
  • Det förbättrar API-tillförlitligheten.
  • Utan det kan backend-tjänster överbelastas.
  • Hastighetsgränser styr jämna förfrågningar per sekund.
  • Burstgränser tillåter tillfälliga trafiktoppar.
  • Överskridna gränser returnerar 429 Too Many Requests.

 

throttling

Utveckla applikationer på AWS

Skydd mot vanliga angrepp

 

waf

  • Koppla AWS WAF till API Gateway.
  • Det blockerar skadliga förfrågningar innan de når ditt API.
  • Stoppar SQL-injektionsförsök.
  • Stoppar cross-site scripting (XSS).
  • Blockerar trafik från kända skadliga IP-intervall.
Utveckla applikationer på AWS

Användningsplaner och API-nycklar

 

usage plans

  • Styr hur klienter använder dina API:er.
  • Konfigurera förfrågningskvoter.
  • Definiera hastighetsgränser.
  • Ange prenumerationsnivåer.
  • Tilldela förbrukningsgränser per klient.
Utveckla applikationer på AWS

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS låter webbläsare göra API-förfrågningar över olika ursprung.
  • Utan det kan giltiga webbläsarförfrågningar blockeras.
  • Alltför tillåtande CORS utgör en säkerhetsrisk.
  • Undvik Access-Control-Allow-Origin: * i produktion.
  • Begränsa alltid CORS till betrodda ursprung.
Utveckla applikationer på AWS

CORS-huvuden och preflight-förfrågningar

  • En preflight-förfrågan med OPTIONS körs före den faktiska förfrågan.
  • Bekräftar att API:et tillåter åtkomst över ursprung.
  • API Gateway lägger till nödvändiga CORS-svarshuvuden.
  • För icke-proxyintegrationer hanteras de automatiskt.
  • För proxyintegrationer måste din Lambda returnera CORS-huvudena.
  • Din Lambda måste också hantera preflight-förfrågan med OPTIONS.

 

CORS headers

Utveckla applikationer på AWS

Nu kör vi en övning!

Utveckla applikationer på AWS

Preparing Video For Download...