Protéger vos API

Développer des applications sur AWS

Ricardo Sueiras

Principal Technologist

Sécuriser des API sur AWS

 

sécuriser les API

  • Sécuriser les API est essentiel pour les apps cloud-native.
  • Elles exposent des fonctions métiers sensibles.
  • Souvent point d'entrée public vers l'arrière‑plan.
  • API Gateway aide à exposer vos API en toute sécurité.
Développer des applications sur AWS

Autorisation et authentification

 

authentification et autorisation

  • Deux notions clés :
  • Authentification : qui vous êtes.
  • Autorisation : ce que vous pouvez faire.
Développer des applications sur AWS

Autorisation IAM

 

iam

  • API Gateway peut utiliser IAM pour l'authentification et l'autorisation.
  • Sécurise via Signature Version 4 (SigV4).
  • Les clients signent chaque requête.
  • API Gateway valide la signature avant traitement.
  • Les politiques IAM contrôlent alors ce que chaque identité peut invoquer.
  • Idéal pour la communication service‑à‑service AWS.
Développer des applications sur AWS

Autoriseurs Amazon Cognito

  • Cognito authentifie les utilisateurs avec des JSON Web Tokens (JWT).
  • Cas d'usage : applis mobiles, web, parcours de connexion.
  • Prend en charge les identités fédérées.
  • Fonctionne avec Google, Apple et Facebook.
  • Fournisseurs d'entreprise via SAML ou OIDC.
  • Valide les JWT en natif, sans code d'autoriseur.

 

autoriseurs Cognito

Développer des applications sur AWS

Autoriseurs Lambda

  • Une fonction Lambda exécute votre logique d'autorisation.
  • Elle renvoie une politique IAM autorisant ou refusant l'accès.
  • À utiliser pour valider des jetons personnalisés.
  • S'intègre à des fournisseurs d'identité externes.
  • Imposer vos propres règles.

 

autoriseur lambda

Développer des applications sur AWS

Autoriseurs Lambda

  • Exemple : valider un JWT d'un fournisseur comme Auth0.
  • Une requête arrive et API Gateway invoque l'autoriseur.
  • La fonction valide le jeton et renvoie une politique IAM.
  • La politique décide : autoriser ou refuser.
  • Si autorisée, la requête est transmise au back‑end.
  • Si refusée, API Gateway renvoie immédiatement 401.

 

autoriseur lambda

Développer des applications sur AWS

Quel autoriseur ?

 

choisir l'autoriseur

  • Choisissez Cognito pour les applis orientées utilisateurs.
  • Inscription, connexion et validation de jetons gérées.
  • Aucun code personnalisé requis.
  • Choisissez Lambda si vous avez besoin de logique sur mesure.
  • Idéal avec des fournisseurs d'identité tiers.
  • Ou pour des règles au‑delà des capacités de Cognito.
Développer des applications sur AWS

Mise en cache des autoriseurs

 

mise en cache de l'autorisation

  • Les réponses des autoriseurs sont mises en cache.
  • Réduit la latence et le coût sur les endpoints fréquents.
  • TTL du cache configurable.
  • De 0 à 3 600 secondes.
  • Par défaut : 300 secondes.
  • Mettre le TTL à 0 désactive le cache.
Développer des applications sur AWS

Politiques de ressource d'API Gateway

 

politiques de ressource

  • Définissez des politiques pour contrôler l'accès à une API.
  • Restreindre par compte AWS.
  • Restreindre par plage d'adresses IP.
  • Restreindre par VPC.
  • Utile pour cloisonner les API internes et limiter l'exposition.
Développer des applications sur AWS

Chiffrement

  • API Gateway prend en charge HTTPS avec TLS par défaut.
  • HTTPS chiffre les données en transit entre client et passerelle.
  • S'intègre à AWS Certificate Manager (ACM).
  • ACM simplifie la gestion des certificats pour domaines personnalisés.
  • Certificats de domaines personnalisés gratuits.
  • NE JAMAIS exposer des API en HTTP non chiffré.

 

chiffrement

Développer des applications sur AWS

TLS mutuel (mTLS)

 

  • API Gateway prend en charge le TLS mutuel (mTLS).
  • Authentifie les clients via certificats.
  • Requiert un nom de domaine configuré.
  • Fréquent pour la communication machine‑à‑machine.
  • Les deux parties vérifient l'identité de l'autre.

 

mTLS

Développer des applications sur AWS

Throttling et limitation de débit des API

  • Le throttling protège les systèmes back‑end.
  • Il améliore la fiabilité des API.
  • Sans cela, les services back‑end peuvent être surchargés.
  • Les limites de débit régulent les requêtes par seconde.
  • Les limites de burst tolèrent des pics temporaires.
  • Au‑delà, retour 429 Too Many Requests.

 

throttling

Développer des applications sur AWS

Se protéger des attaques courantes

 

waf

  • Attachez AWS WAF à API Gateway.
  • Bloque les requêtes malveillantes avant votre API.
  • Stoppe les tentatives d'injection SQL.
  • Stoppe le cross‑site scripting (XSS).
  • Bloque le trafic de plages IP malveillantes connues.
Développer des applications sur AWS

Plans d'utilisation et clés d'API

 

plans d'utilisation

  • Contrôlez la consommation de vos API par les clients.
  • Configurez des quotas de requêtes.
  • Définissez des limites de débit.
  • Mettez en place des niveaux d'abonnement.
  • Assignez des limites par client.
Développer des applications sur AWS

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS permet aux navigateurs des requêtes cross‑origin vers des API.
  • Sans cela, des requêtes valides peuvent être bloquées.
  • Un CORS trop permissif est un risque.
  • Évitez Access-Control-Allow-Origin: * en production.
  • Restreignez toujours CORS aux origines de confiance.
Développer des applications sur AWS

En‑têtes CORS et requêtes préliminaires

  • Une requête préliminaire OPTIONS précède la requête réelle.
  • Elle confirme que l'API autorise l'accès cross‑origin.
  • API Gateway ajoute les en‑têtes CORS nécessaires.
  • Pour les intégrations Non‑Proxy, c'est automatique.
  • Pour les intégrations Proxy, votre Lambda doit renvoyer les en‑têtes CORS.
  • Votre Lambda doit aussi gérer le OPTIONS préliminaire.

 

en-têtes CORS

Développer des applications sur AWS

Passons à la pratique !

Développer des applications sur AWS

Preparing Video For Download...