APIs schützen

Anwendungen auf AWS entwickeln

Ricardo Sueiras

Principal Technologist

APIs auf AWS absichern

 

API absichern

  • Das Absichern von APIs ist zentral für Cloud-native Apps.
  • Sie exponieren sensible Geschäftslogik.
  • Oft sind sie der öffentliche Einstieg in Backends.
  • API Gateway hilft, APIs sicher zu veröffentlichen.
Anwendungen auf AWS entwickeln

Authorization und Authentication

 

AuthN/AuthZ

  • Zwei Kernkonzepte:
  • Authentication: wer du bist.
  • Authorization: was du darfst.
Anwendungen auf AWS entwickeln

IAM-Authorization

 

iam

  • API Gateway kann IAM für Authentication und Authorization nutzen.
  • Sichert APIs mit Signature Version 4 (SigV4).
  • Clients signieren jede Anfrage.
  • API Gateway prüft die Signatur vor der Verarbeitung.
  • IAM-Richtlinien steuern dann, was jede Identität aufrufen darf.
  • Am besten für AWS Service-zu-Service-Kommunikation.
Anwendungen auf AWS entwickeln

Amazon Cognito Authorizers

  • Cognito authentifiziert Nutzer mit JSON Web Tokens (JWTs).
  • Häufige Fälle: Mobile-Apps, Web-Apps, Anmeldeflows.
  • Unterstützt föderierte Identitäten.
  • Funktioniert mit externen Providern wie Google, Apple und Facebook.
  • Enterprise-Provider via SAML oder OIDC.
  • Validiert JWTs nativ, kein Custom-Authorizer-Code nötig.

 

Cognito-Authorizer

Anwendungen auf AWS entwickeln

Lambda Authorizers

  • Eine Lambda-Funktion führt deine benutzerdefinierte Authorization-Logik aus.
  • Sie gibt eine IAM-Richtlinie zurück: erlauben oder verweigern.
  • Nutze sie, um benutzerdefinierte Tokens zu prüfen.
  • Integriere externe Identity-Provider.
  • Erzwinge eigene Regeln.

 

Lambda-Authorizer

Anwendungen auf AWS entwickeln

Lambda Authorizers

  • Beispiel: ein JWT von einem Provider wie Auth0 prüfen.
  • Eine Anfrage kommt an, API Gateway ruft den Authorizer auf.
  • Die Funktion prüft das Token und gibt eine IAM-Richtlinie zurück.
  • Die Richtlinie entscheidet den Zugriff: erlauben oder verweigern.
  • Bei Erlaubnis wird die Anfrage ans Backend weitergeleitet.
  • Bei Verweigerung gibt API Gateway sofort 401 zurück.

 

Lambda-Authorizer

Anwendungen auf AWS entwickeln

Welcher Authorizer

 

Authorizer auswählen

  • Wähle Cognito für nutzernahe Apps.
  • Bietet verwaltetes Sign-up, Sign-in und Token-Validierung.
  • Kein eigener Code nötig.
  • Wähle Lambda, wenn du eigene Logik brauchst.
  • Gut für Drittanbieter-Identitäten.
  • Oder Regeln, die über Cognito hinausgehen.
Anwendungen auf AWS entwickeln

Authorizer-Caching

 

Authorizer-Caching

  • Authorizer-Antworten werden gecacht.
  • Verringert Latenz und Kosten bei häufigen Endpunkten.
  • Cache-TTL ist konfigurierbar.
  • Bereich: 0 bis 3.600 Sekunden.
  • Standard: 300 Sekunden.
  • TTL = 0 deaktiviert Caching.
Anwendungen auf AWS entwickeln

API Gateway Resource Policies

 

Resource Policies

  • Definiere Richtlinien, wer auf eine API zugreifen darf.
  • Beschränke nach AWS-Konto.
  • Beschränke nach IP-Adressbereich.
  • Beschränke nach VPC.
  • Hilft, interne APIs abzuschotten und Exponierung zu minimieren.
Anwendungen auf AWS entwickeln

Verschlüsselung

  • API Gateway unterstützt standardmäßig HTTPS-Endpunkte mit TLS.
  • HTTPS verschlüsselt Daten zwischen Client und Gateway.
  • Integriert mit AWS Certificate Manager (ACM).
  • ACM vereinfacht Zertifikatsverwaltung für Custom Domains.
  • Zertifikate für Custom Domains sind kostenlos.
  • NIEMALS APIs über unverschlüsseltes HTTP exponieren.

 

Verschlüsselung

Anwendungen auf AWS entwickeln

Mutual TLS (mTLS)

 

  • API Gateway unterstützt Mutual TLS (mTLS).
  • Authentifiziert Clients über Zertifikate.
  • Erfordert konfigurierten Domainnamen.
  • Häufig bei Machine-to-Machine-Kommunikation.
  • Beide Seiten prüfen gegenseitig ihre Identität.

 

mTLS

Anwendungen auf AWS entwickeln

API-Throttling und Rate Limiting

  • Throttling schützt Backends.
  • Es verbessert die Zuverlässigkeit von APIs.
  • Ohne kann das Backend überlasten.
  • Rate Limits steuern konstante Requests pro Sekunde.
  • Burst-Limits erlauben kurzzeitige Spitzen.
  • Bei Überschreitung: 429 Too Many Requests.

 

Throttling

Anwendungen auf AWS entwickeln

Schutz vor gängigen Exploits

 

WAF

  • Hänge AWS WAF an API Gateway an.
  • Blockiert bösartige Anfragen, bevor sie deine API erreichen.
  • Stoppt SQL-Injection-Versuche.
  • Stoppt Cross-Site Scripting (XSS).
  • Blockiert Traffic aus bekannten bösartigen IP-Bereichen.
Anwendungen auf AWS entwickeln

Usage Plans und API-Schlüssel

 

Usage Plans

  • Steuere, wie Clients deine APIs nutzen.
  • Konfiguriere Anfragekontingente.
  • Definiere Rate Limits.
  • Lege Abostufen fest.
  • Weisen pro Client Verbrauchslimits zu.
Anwendungen auf AWS entwickeln

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS erlaubt Browsern Cross-Origin-API-Requests.
  • Ohne können gültige Browseranfragen blockiert werden.
  • Zu großzügiges CORS ist ein Sicherheitsrisiko.
  • Vermeide Access-Control-Allow-Origin: * in Produktion.
  • Beschränke CORS immer auf vertrauenswürdige Origins.
Anwendungen auf AWS entwickeln

CORS-Header und Preflight-Anfragen

  • Eine Preflight-OPTIONS-Anfrage läuft vor der eigentlichen Anfrage.
  • Bestätigt, dass die API Cross-Origin-Zugriff erlaubt.
  • API Gateway fügt die nötigen CORS-Response-Header hinzu.
  • Bei Non-Proxy-Integrationen passiert das automatisch.
  • Bei Proxy-Integrationen muss deine Lambda die CORS-Header liefern.
  • Deine Lambda muss auch die Preflight-OPTIONS verarbeiten.

 

CORS-Header

Anwendungen auf AWS entwickeln

Lass uns üben!

Anwendungen auf AWS entwickeln

Preparing Video For Download...