Protejarea API-urilor tale

Dezvoltarea aplicațiilor pe AWS

Ricardo Sueiras

Principal Technologist

Securizarea API-urilor pe AWS

 

securizarea api

  • Securizarea API-urilor este esențială pentru aplicațiile cloud-native.
  • Ele expun funcționalități sensibile ale afacerii.
  • Sunt adesea punctul de intrare public către sistemele back-end.
  • API Gateway te ajută să expui API-urile în siguranță.
Dezvoltarea aplicațiilor pe AWS

Autorizare și autentificare

 

autentificare autorizare

  • Două concepte-cheie:
  • Autentificare: cine ești.
  • Autorizare: ce ai voie să faci.
Dezvoltarea aplicațiilor pe AWS

Autorizare IAM

 

iam

  • API Gateway poate folosi IAM pentru autentificare și autorizare.
  • Securizează API-urile cu Signature Version 4 (SigV4).
  • Clienții semnează fiecare cerere.
  • API Gateway validează semnătura înainte de procesare.
  • Politicile IAM controlează ce poate invoca fiecare identitate.
  • Ideal pentru comunicarea între servicii AWS.
Dezvoltarea aplicațiilor pe AWS

Autorizatoare Amazon Cognito

  • Cognito autentifică utilizatorii cu JSON Web Tokens (JWT-uri).
  • Cazuri de utilizare comune: aplicații mobile, web, fluxuri de autentificare.
  • Suportă identități federate.
  • Funcționează cu furnizori externi precum Google, Apple și Facebook.
  • Furnizori enterprise prin SAML sau OIDC.
  • Validează JWT-urile nativ, fără cod de autorizare personalizat.

 

autorizare cognito

Dezvoltarea aplicațiilor pe AWS

Autorizatoare Lambda

  • O funcție Lambda execută logica ta personalizată de autorizare.
  • Returnează o politică IAM care permite sau refuză accesul.
  • Folosește-o pentru a valida token-uri personalizate.
  • Integrează-te cu furnizori externi de identitate.
  • Aplică reguli personalizate proprii.

 

autorizator lambda

Dezvoltarea aplicațiilor pe AWS

Autorizatoare Lambda

  • Exemplu: validarea unui JWT de la un furnizor precum Auth0.
  • Sosește o cerere și API Gateway invocă autorizatorul.
  • Funcția validează token-ul și returnează o politică IAM.
  • Politica decide accesul: permis sau refuzat.
  • Dacă e permis, cererea este transmisă către back-end.
  • Dacă e refuzat, API Gateway returnează imediat un 401.

 

autorizator lambda

Dezvoltarea aplicațiilor pe AWS

Ce autorizator să alegi

 

alegerea autorizatorului

  • Alege Cognito pentru aplicații orientate către utilizatori.
  • Oferă înregistrare, autentificare și validare de token-uri gestionate.
  • Nu necesită cod personalizat.
  • Alege Lambda când ai nevoie de logică personalizată.
  • Potrivit pentru furnizori terți de identitate.
  • Sau pentru reguli ce depășesc ce suportă Cognito.
Dezvoltarea aplicațiilor pe AWS

Cache-ul autorizatorului

 

caching autorizare

  • Răspunsurile autorizatorului sunt stocate în cache.
  • Reduce latența și costurile pe endpoint-urile frecvente.
  • TTL-ul cache-ului este configurabil.
  • Valorile variază între 0 și 3600 de secunde.
  • Valoarea implicită este 300 de secunde.
  • Setarea TTL la 0 dezactivează cache-ul.
Dezvoltarea aplicațiilor pe AWS

Politici de resurse API Gateway

 

politici de resurse

  • Definește politici pentru a controla cine poate accesa un API.
  • Restricționează după cont AWS.
  • Restricționează după interval de adrese IP.
  • Restricționează după VPC.
  • Ajută la izolarea API-urilor interne și la limitarea expunerii.
Dezvoltarea aplicațiilor pe AWS

Criptare

  • API Gateway suportă endpoint-uri HTTPS cu TLS implicit.
  • HTTPS criptează datele în tranzit între client și gateway.
  • Se integrează cu AWS Certificate Manager (ACM).
  • ACM simplifică gestionarea certificatelor pentru domenii personalizate.
  • Certificatele pentru domenii personalizate sunt gratuite.
  • Nu expune NICIODATĂ API-uri prin HTTP necriptat.

 

criptare

Dezvoltarea aplicațiilor pe AWS

TLS mutual (mTLS)

 

  • API Gateway suportă TLS mutual (mTLS).
  • Autentifică clienții folosind certificate.
  • Necesită un nume de domeniu configurat.
  • Frecvent utilizat pentru comunicarea mașină-la-mașină.
  • Ambele părți își verifică reciproc identitatea.

 

mtls

Dezvoltarea aplicațiilor pe AWS

Throttling și limitarea ratei API

  • Throttling-ul protejează sistemele back-end.
  • Îmbunătățește fiabilitatea API-ului.
  • Fără el, serviciile back-end pot fi supraîncărcate.
  • Limitele de rată controlează cererile constante pe secundă.
  • Limitele de burst permit vârfuri temporare de trafic.
  • Depășirea limitelor returnează 429 Too Many Requests.

 

throttling

Dezvoltarea aplicațiilor pe AWS

Protecție împotriva exploatărilor comune

 

waf

  • Atașează AWS WAF la API Gateway.
  • Blochează cererile malițioase înainte să ajungă la API-ul tău.
  • Oprește tentativele de SQL injection.
  • Oprește cross-site scripting (XSS).
  • Blochează traficul din intervale de IP malițioase cunoscute.
Dezvoltarea aplicațiilor pe AWS

Planuri de utilizare și chei API

 

planuri de utilizare

  • Controlează modul în care clienții consumă API-urile tale.
  • Configurează cote de cereri.
  • Definește limite de rată.
  • Setează niveluri de abonament.
  • Atribuie limite de consum per client.
Dezvoltarea aplicațiilor pe AWS

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS permite browserelor să facă cereri API cross-origin.
  • Fără el, cereri valide din browser pot fi blocate.
  • Un CORS prea permisiv reprezintă un risc de securitate.
  • Evită Access-Control-Allow-Origin: * în producție.
  • Restricționează întotdeauna CORS la origini de încredere.
Dezvoltarea aplicațiilor pe AWS

Antete CORS și cereri preflight

  • O cerere OPTIONS de preflight rulează înaintea cererii reale.
  • Confirmă că API-ul permite accesul cross-origin.
  • API Gateway adaugă antetele de răspuns CORS necesare.
  • Pentru integrările Non-Proxy, le gestionează automat.
  • Pentru integrările Proxy, Lambda ta trebuie să returneze antetele CORS.
  • Lambda ta trebuie să gestioneze și preflight-ul OPTIONS.

 

antete CORS

Dezvoltarea aplicațiilor pe AWS

Hai să exersăm!

Dezvoltarea aplicațiilor pe AWS

Preparing Video For Download...