Proteggere le tue API

Sviluppare applicazioni su AWS

Ricardo Sueiras

Principal Technologist

Proteggere le API su AWS

 

mettere in sicurezza le api

  • Mettere in sicurezza le API è critico per le app cloud-native.
  • Espongono funzionalità aziendali sensibili.
  • Spesso sono il punto d'ingresso pubblico ai back-end.
  • API Gateway ti aiuta a esporre le API in modo sicuro.
Sviluppare applicazioni su AWS

Autorizzazione e autenticazione

 

autenticazione e autorizzazione

  • Due concetti chiave:
  • Autenticazione: chi sei.
  • Autorizzazione: cosa puoi fare.
Sviluppare applicazioni su AWS

Autorizzazione IAM

 

iam

  • API Gateway può usare IAM per autenticazione e autorizzazione.
  • Protegge le API con Signature Version 4 (SigV4).
  • I client firmano ogni richiesta.
  • API Gateway valida la firma prima di elaborare.
  • Le policy IAM controllano cosa può invocare ogni identità.
  • Ideale per comunicazione servizio‑a‑servizio su AWS.
Sviluppare applicazioni su AWS

Authorizer Amazon Cognito

  • Cognito autentica gli utenti con JSON Web Token (JWT).
  • Casi d'uso comuni: app mobile, web, flussi di accesso.
  • Supporta identità federate.
  • Funziona con provider esterni come Google, Apple e Facebook.
  • Provider enterprise via SAML o OIDC.
  • Valida i JWT nativamente, senza codice di authorizer personalizzato.

 

authorizer cognito

Sviluppare applicazioni su AWS

Authorizer Lambda

  • Una funzione Lambda esegue la tua logica di autorizzazione personalizzata.
  • Restituisce una policy IAM che consente o nega l'accesso.
  • Usala per validare token personalizzati.
  • Integra provider di identità esterni.
  • Applica regole su misura.

 

lambda authorizer

Sviluppare applicazioni su AWS

Authorizer Lambda

  • Esempio: valida un JWT da un provider come Auth0.
  • Arriva una richiesta e API Gateway invoca l'authorizer.
  • La funzione valida il token e restituisce una policy IAM.
  • La policy decide l'accesso: allow o deny.
  • Se consentito, la richiesta va al back-end.
  • Se negato, API Gateway restituisce subito 401.

 

lambda authorizer

Sviluppare applicazioni su AWS

Quale authorizer

 

scelta dell'authorizer

  • Scegli Cognito per app rivolte agli utenti.
  • Offre sign-up, sign-in e validazione token gestiti.
  • Nessun codice personalizzato richiesto.
  • Scegli Lambda quando serve logica personalizzata.
  • Ottimo con provider di identità terzi.
  • O per regole oltre ciò che Cognito supporta.
Sviluppare applicazioni su AWS

Caching degli authorizer

 

caching authz

  • Le risposte degli authorizer vengono messe in cache.
  • Riduce latenza e costi sugli endpoint frequenti.
  • Il TTL della cache è configurabile.
  • Va da 0 a 3600 secondi.
  • Default: 300 secondi.
  • Impostare TTL a 0 disattiva la cache.
Sviluppare applicazioni su AWS

Resource policy di API Gateway

 

policy delle risorse

  • Definisci policy per controllare chi accede a un'API.
  • Limita per account AWS.
  • Limita per intervallo di IP.
  • Limita per VPC.
  • Aiuta a blindare API interne e ridurre l'esposizione.
Sviluppare applicazioni su AWS

Cifratura

  • API Gateway supporta endpoint HTTPS con TLS per default.
  • HTTPS cifra i dati in transito tra client e gateway.
  • Si integra con AWS Certificate Manager (ACM).
  • ACM semplifica la gestione certificati per domini personalizzati.
  • I certificati per domini personalizzati sono gratuiti.
  • NON esporre mai API su HTTP non cifrato.

 

cifratura

Sviluppare applicazioni su AWS

TLS reciproco (mTLS)

 

  • API Gateway supporta il TLS reciproco (mTLS).
  • Autentica i client tramite certificati.
  • Richiede un nome di dominio configurato
  • Comune nella comunicazione macchina‑a‑macchina.
  • Entrambe le parti verificano l'identità dell'altra.

 

mtls

Sviluppare applicazioni su AWS

Throttling e rate limiting delle API

  • Il throttling protegge i sistemi back-end.
  • Migliora l'affidabilità delle API.
  • Senza, i servizi back-end possono sovraccaricarsi.
  • I rate limit controllano le richieste al secondo costanti.
  • I burst limit consentono picchi temporanei di traffico.
  • Se superi i limiti, viene restituito 429 Too Many Requests.

 

throttling

Sviluppare applicazioni su AWS

Proteggere dagli exploit comuni

 

waf

  • Collega AWS WAF ad API Gateway.
  • Blocca richieste malevole prima che raggiungano l'API.
  • Ferma tentativi di SQL injection.
  • Ferma cross-site scripting (XSS).
  • Blocca traffico da IP noti come malevoli.
Sviluppare applicazioni su AWS

Piani di utilizzo e chiavi API

 

piani di utilizzo

  • Controlla come i client usano le tue API.
  • Configura quote di richieste.
  • Definisci rate limit.
  • Imposta livelli di abbonamento.
  • Assegna limiti di consumo per client.
Sviluppare applicazioni su AWS

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS permette ai browser richieste API cross-origin.
  • Senza, richieste valide dal browser possono essere bloccate.
  • CORS troppo permissivo è un rischio di sicurezza.
  • Evita Access-Control-Allow-Origin: * in produzione.
  • Limita sempre CORS a origini fidate.
Sviluppare applicazioni su AWS

Intestazioni CORS e richieste preflight

  • Una richiesta preflight OPTIONS avviene prima di quella reale.
  • Conferma che l'API consente l'accesso cross-origin.
  • API Gateway aggiunge le intestazioni di risposta CORS necessarie.
  • Per integrazioni Non‑Proxy, le gestisce automaticamente.
  • Per integrazioni Proxy, la tua Lambda deve restituire le intestazioni CORS.
  • La tua Lambda deve anche gestire il preflight OPTIONS.

 

intestazioni CORS

Sviluppare applicazioni su AWS

Esercitiamoci!

Sviluppare applicazioni su AWS

Preparing Video For Download...