Utilisation de AWS WAF pour protéger vos API - Amazon API Gateway

Utilisation de AWS WAF pour protéger vos API

AWS WAF est un pare-feu d'application web qui aide à protéger les applications web et les API contre les attaques. Il vous permet de configurer un ensemble de règles (appelé liste de contrôle d'accès web (ACL web)) qui autorisent, bloquent ou comptent les requêtes web en fonction des règles et conditions de sécurité web personnalisables que vous définissez. Pour plus d'informations, consultez la section Fonctionnement de AWS WAF

Vous pouvez l'utiliser AWS WAF pour protéger votre API API Gateway contre les attaques web courantes, telles que l'injection SQL et les attaques XSS (cross-site scripting). Celles-ci peuvent affecter la disponibilité et les performances des API, compromettre la sécurité ou consommer des ressources excessives. Par exemple, vous pouvez créer des règles pour autoriser ou bloquer les demandes provenant de plages d'adresses IP spécifiées, les demandes provenant de blocs CIDR, les demandes provenant d'un pays ou d'une région spécifique, les demandes contenant du code SQL malveillant ou les demandes contenant des scripts malveillants.

Vous pouvez également créer des règles qui correspondent à une chaîne spécifiée ou un modèle d'expression régulière dans les en-têtes HTTP, la méthode, la chaîne de requête, l'URI et le corps de la demande (limité aux 8 premiers Ko). De plus, vous pouvez créer des règles pour bloquer les attaques émanant d'agents utilisateurs spécifiques, de robots malveillants et d'extracteurs de contenu. Par exemple, vous pouvez utiliser des règles basées sur le débit pour spécifier le nombre de requêtes web que chaque adresse IP du client est autorisée à envoyer au cours d'une période de 5 minutes mise à jour en continu.

Important

AWS WAF est la première ligne de défense contre les menaces web. Si AWS WAF est activé sur une API, les règles d'AWS WAF sont évaluées avant d'autres fonctions de contrôle d'accès, comme les stratégies de ressources, les stratégies IAM, les mécanismes d'autorisation Lambda et les mécanismes d'autorisation Amazon Cognito. Par exemple, si AWS WAF bloque l'accès d'un bloc d'adresse CIDR qui est autorisé par une stratégie de ressources, AWS WAF prévaut et la stratégie de ressources n'est pas évaluée.

Pour activer AWS WAF pour votre API, vous devez effectuer les opérations suivantes :

  1. Utilisez la console AWS WAF, le kit SDK AWS ou l'interface de ligne de commande pour créer une liste ACL web régionale contenant la combinaison souhaitée de règles gérées par AWS WAF et vos propres règles personnalisées. Pour plus d'informations, consultez Mise en route avec AWS WAF et Création et configuration d'une liste de contrôle d'accès web (ACL web).

    Important

    API Gateway nécessite une liste ACL web régionale.

  2. Associez la liste ACL web régionale AWS WAF à une étape d'API. Vous pouvez effectuer cette opération à l'aide de la console AWS WAF, du kit SDK AWS ou de l'interface de ligne de commande ou de la console API Gateway, du kit SDK AWS ou de l'interface de ligne de commande.

Association d'une liste ACL web régionale AWS WAF à une étape d'API API Gateway à l'aide de la console API Gateway

Pour utiliser la console API Gateway afin d'associer une liste ACL web régionale AWS WAF à une étape d'API API Gateway existante, procédez comme suit :

  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Dans le volet de navigation APIs (API), choisissez l'API, puis Stages (Étapes).

  3. Dans le volet Stages, choisissez le nom de l'étape.

  4. Dans le volet Stage Editor, sélectionnez l'onglet Settings.

  5. Pour associer une liste ACL web régionale à l'étape d'API :

    1. Dans la liste déroulante ACL web AWS WAF (Liste ACL web WAF), choisissez la liste ACL web régionale que vous souhaitez associer à cette étape.

      Note

      Si l'ACL web dont vous avez besoin n'existe pas encore, choisissez Créer une liste WebACL. Choisissez ensuite Aller à AWS WAF pour ouvrir la console AWS WAF dans un nouvel onglet de navigateur et créer une liste ACL web régionale. Revenez ensuite à la console API Gateway pour associer la liste ACL web à l'étape.

  6. Choisissez Save Changes (Enregistrer les modifications).

Association d'une liste ACL web régionale AWS WAF à une étape d'API API Gateway à l'aide de l'AWS CLI

Pour utiliser l'AWS CLI afin d'associer une liste ACL web régionale AWS WAF à une étape d'API API Gateway existante, appelez la commande associate-web-acl en procédant comme dans l'exemple suivant :

aws waf-regional associate-web-acl \ --web-acl-id 'aabc123a-fb4f-4fc6-becb-2b00831cadcf' \ --resource-arn 'arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod'

Association d'une liste ACL web régionale AWS WAF à une étape d'API à l'aide de l'API REST AWS WAF

Pour utiliser l'API REST AWS WAF pour associer une liste ACL web régionale AWS WAF à une étape d'API API Gateway existante, appelez la commande AssociateWebACL en procédant comme dans l'exemple suivant :

import boto3 waf = boto3.client('wafregional') waf.associate_web_acl( WebACLId='aabc123a-fb4f-4fc6-becb-2b00831cadcf', ResourceArn='arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod' )