Je API's beveiligen

Toepassingen ontwikkelen op AWS

Ricardo Sueiras

Principal Technologist

API's beveiligen op AWS

 

api beveiligen

  • API's beveiligen is cruciaal voor cloud-native apps.
  • Ze stellen gevoelige bedrijfsfuncties bloot.
  • Vaak de publieke ingang naar back-ends.
  • API Gateway helpt API's veilig bloot te stellen.
Toepassingen ontwikkelen op AWS

Autorisatie en authenticatie

 

authnauthz

  • Twee kernbegrippen:
  • Authenticatie: wie je bent.
  • Autorisatie: wat je mag doen.
Toepassingen ontwikkelen op AWS

IAM-autorisatie

 

iam

  • API Gateway kan IAM gebruiken voor authenticatie en autorisatie.
  • Beveiligt API's met Signature Version 4 (SigV4).
  • Clients ondertekenen elke aanvraag.
  • API Gateway valideert de handtekening vóór verwerking.
  • IAM-beleidsregels bepalen wat elke identiteit mag aanroepen.
  • Beste voor AWS service-naar-service-communicatie.
Toepassingen ontwikkelen op AWS

Amazon Cognito-authorizers

  • Cognito authenticeert gebruikers met JSON Web Tokens (JWT's).
  • Veelvoorkomend: mobiele apps, webapps, inlogflows.
  • Ondersteunt gefedereerde identiteiten.
  • Werkt met externe providers zoals Google, Apple en Facebook.
  • Enterprise-providers via SAML of OIDC.
  • Valideert JWT's native, geen custom authorizer-code nodig.

 

cogauthz

Toepassingen ontwikkelen op AWS

Lambda-authorizers

  • Een Lambda-functie voert je aangepaste autorisatielogica uit.
  • Geeft een IAM-beleid terug dat toegang toestaat of weigert.
  • Gebruik het om aangepaste tokens te valideren.
  • Integreer met externe identiteitsproviders.
  • Dwing je eigen regels af.

 

lambda authorizer

Toepassingen ontwikkelen op AWS

Lambda-authorizers

  • Voorbeeld: valideer een JWT van een provider zoals Auth0.
  • Een verzoek komt binnen en API Gateway roept de authorizer aan.
  • De functie valideert het token en retourneert een IAM-beleid.
  • Beleid bepaalt toegang: toestaan of weigeren.
  • Bij toestaan gaat het verzoek door naar de back-end.
  • Bij weigeren geeft API Gateway direct een 401 terug.

 

lambda authorizer

Toepassingen ontwikkelen op AWS

Welke authorizer

 

welke authorizer kiezen

  • Kies Cognito voor apps met gebruikers.
  • Biedt beheerde sign-up, sign-in en tokenvalidatie.
  • Geen custom code nodig.
  • Kies Lambda als je aangepaste logica nodig hebt.
  • Handig voor externe identiteitsproviders.
  • Of regels buiten wat Cognito ondersteunt.
Toepassingen ontwikkelen op AWS

Authorizer-caching

 

caching authz

  • Antwoorden van authorizers worden gecachet.
  • Verlaagt latentie en kosten op drukke endpoints.
  • Cache-TTL is instelbaar.
  • Variëert van 0 tot 3600 seconden.
  • Standaard is 300 seconden.
  • TTL op 0 schakelt caching uit.
Toepassingen ontwikkelen op AWS

API Gateway-resourcebeleid

 

resource policies

  • Definieer beleidsregels voor wie toegang heeft tot een API.
  • Beperk op AWS-account.
  • Beperk op IP-adresbereik.
  • Beperk op VPC.
  • Helpt interne API's af te schermen en blootstelling te beperken.
Toepassingen ontwikkelen op AWS

Versleuteling

  • API Gateway ondersteunt standaard HTTPS-endpoints met TLS.
  • HTTPS versleutelt data tussen client en gateway.
  • Integreert met AWS Certificate Manager (ACM).
  • ACM vereenvoudigt certificaatbeheer voor custom domeinen.
  • Certificaten voor custom domeinen zijn gratis.
  • STEL NOOIT API's bloot via onversleutelde HTTP.

 

versleuteling

Toepassingen ontwikkelen op AWS

Mutual TLS (mTLS)

 

  • API Gateway ondersteunt mutual TLS (mTLS).
  • Authenticeert clients met certificaten.
  • Vereist geconfigureerde domeinnaam
  • Gebruikelijk voor machine-to-machine-communicatie.
  • Beide partijen verifiëren elkaars identiteit.

 

mtls

Toepassingen ontwikkelen op AWS

API-throttling en rate limiting

  • Throttling beschermt back-endsystemen.
  • Verbetert de betrouwbaarheid van API's.
  • Zonder dit kunnen back-ends overbelast raken.
  • Rate limits sturen het aantal verzoeken per seconde.
  • Burst-limieten laten tijdelijke pieken toe.
  • Overschrijden geeft 429 Too Many Requests.

 

throttling

Toepassingen ontwikkelen op AWS

Beschermen tegen veelvoorkomende exploits

 

waf

  • Koppel AWS WAF aan API Gateway.
  • Blokkeert kwaadaardige verzoeken vóór je API.
  • Stopt pogingen tot SQL-injectie.
  • Stopt cross-site scripting (XSS).
  • Blokkeert verkeer van bekende malafide IP-reeksen.
Toepassingen ontwikkelen op AWS

Gebruikspakketten en API-sleutels

 

usage plans

  • Bepaal hoe clients je API's gebruiken.
  • Stel aanvraagquota in.
  • Definieer rate limits.
  • Maak abonnementsniveaus.
  • Ken verbruiksgrenzen per client toe.
Toepassingen ontwikkelen op AWS

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS laat browsers cross-origin API-verzoeken doen.
  • Zonder dit kunnen geldige browserverzoeken worden geblokkeerd.
  • Te ruime CORS-instellingen zijn een risico.
  • Vermijd Access-Control-Allow-Origin: * in productie.
  • Beperk CORS altijd tot vertrouwde origins.
Toepassingen ontwikkelen op AWS

CORS-headers en preflight-verzoeken

  • Een preflight-OPTIONS-verzoek draait vóór het echte verzoek.
  • Bevestigt dat de API cross-origin-toegang toestaat.
  • API Gateway voegt de nodige CORS-headers toe.
  • Bij Non-Proxy-integraties gebeurt dit automatisch.
  • Bij Proxy-integraties moet je Lambda de CORS-headers teruggeven.
  • Je Lambda moet ook de preflight-OPTIONS afhandelen.

 

CORS-headers

Toepassingen ontwikkelen op AWS

Laten we oefenen!

Toepassingen ontwikkelen op AWS

Preparing Video For Download...