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 applis infonuagiques.
  • Elles exposent des fonctions d'affaires sensibles.
  • Souvent point d'entrée public vers l'arrière-plan.
  • API Gateway aide à exposer vos API en sécurité.
Développer des applications sur AWS

Autorisation et authentification

 

authn et authz

  • 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 authentifier et autoriser.
  • Sécurise les API avec Signature Version 4 (SigV4).
  • Les clients signent chaque requête.
  • API Gateway valide la signature avant traitement.
  • Les politiques IAM contrôlent ensuite les appels permis.
  • Idéal pour la communication service-à-service AWS.
Développer des applications sur AWS

Autoriseurs Amazon Cognito

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

 

autoriseurs cognito

Développer des applications sur AWS

Autoriseurs Lambda

  • Une fonction Lambda exécute votre logique d'autorisation.
  • Elle retourne une politique IAM permettant ou refusant l'accès.
  • Utilisez-la pour valider des jetons personnalisés.
  • S'intègre à des fournisseurs d'identité externes.
  • Permet d'appliquer 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 appelle l'autoriseur.
  • La fonction valide le jeton et renvoie une politique IAM.
  • La politique décide : permettre ou refuser.
  • Si permis, la requête est transmise à l'arrière-plan.
  • Si refusé, API Gateway renvoie aussitôt un 401.

 

autoriseur lambda

Développer des applications sur AWS

Quel autoriseur choisir

 

choisir l'autoriseur

  • Choisissez Cognito pour les applis destinées aux usagers.
  • Offre inscription, connexion et validation des jetons gérées.
  • Aucun code personnalisé requis.
  • Choisissez Lambda pour une logique personnalisée.
  • Utile avec des fournisseurs d'identité tiers.
  • Ou pour des règles au‑delà de ce que Cognito permet.
Développer des applications sur AWS

Mise en cache des autoriseurs

 

mise en cache de l'autorisation

  • Les réponses d'autoriseur sont mises en cache.
  • Réduit la latence et les coûts sur les points de terminaison fréquents.
  • La durée de vie (TTL) est configurable.
  • De 0 à 3 600 secondes.
  • Par défaut : 300 secondes.
  • Mettre le TTL à 0 désactive la mise en 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.
  • Protège les API internes et limite 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 domaine personnalisé gratuits.
  • NE JAMAIS exposer d'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.
  • Exige un nom de domaine configuré.
  • Courant pour la communication machine‑à‑machine.
  • Les deux parties vérifient l'identité de l'autre.

 

mTLS

Développer des applications sur AWS

Limitation et plafonds de débit des API

  • La limitation de débit protège l'arrière-plan.
  • Améliore la fiabilité des API.
  • Sans cela, les services en arrière-plan peuvent surcharger.
  • Les plafonds de débit régulent les requêtes par seconde.
  • Les pointes (« burst ») permettent des hausses temporaires.
  • Dépasser les limites retourne 429 Too Many Requests.

 

limitation de débit

Développer des applications sur AWS

Se protéger contre les exploits courants

 

waf

  • Joignez AWS WAF à API Gateway.
  • Bloque les requêtes malveillantes avant l'API.
  • Empêche les tentatives d'injection SQL.
  • Bloque le scriptage intersites (XSS).
  • Bloque le trafic de plages IP malveillantes connues.
Développer des applications sur AWS

Forfaits d'utilisation et clés d'API

 

forfaits d'utilisation

  • Contrôlez la consommation de vos API par les clients.
  • Configurez des quotas de requêtes.
  • Définissez des plafonds de débit.
  • Créez des paliers d'abonnement.
  • Attribuez des limites par client.
Développer des applications sur AWS

Partage des ressources entre origines (CORS)

 

CORS

  • CORS permet aux navigateurs des requêtes interorigines.
  • Sans cela, des requêtes valides peuvent être bloquées.
  • Un CORS trop permissif est un risque de sécurité.
  • Évitez Access-Control-Allow-Origin: * en production.
  • Limitez 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.
  • Confirme que l'API permet l'accès interorigine.
  • API Gateway ajoute les en-têtes CORS requis.
  • Intégrations non proxy : pris en charge automatiquement.
  • 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...