Utilisation d’AWS WAF pour protéger vos API REST dans API Gateway - Amazon API Gateway

Utilisation d’AWS WAF pour protéger vos API REST dans API Gateway

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 utiliser AWS WAF pour protéger votre API REST API Gateway contre les attaques web courantes, telles que les attaques par injection SQL et par scripts inter-site (XSS). 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 64 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 AWS WAF sont évaluées avant d’autres fonctionnalités de contrôle d’accès, telles que les politiques de ressources, les politiques 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 politique de ressources, AWS WAF prévaut et la politique 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 AWS SDK ou l’interface de ligne de commande pour créer une liste ACL web contenant la combinaison souhaitée de règles gérées par AWS WAF et de vos propres règles personnalisées. Pour plus d’informations, consultez Getting Started with AWS WAF et Web access control lists (web ACLs).

    Important

    API Gateway a besoin d’une liste ACL web AWS WAFV2 pour une application régionale ou une liste ACL web AWS WAF Classic Regional.

  2. Associez une liste ACL web AWS WAF à une étape de l’API. Vous pouvez effectuer cette opération en utilisant la console AWS WAF, le kit AWS SDK ou la CLI, ou en utilisant la console API Gateway.

Pour associer une liste ACL web AWS WAF à une étape d’API API Gateway à l’aide de la console API Gateway

Pour associer une liste ACL web AWS WAF à une étape d’API API Gateway existante à l’aide de la console API Gateway, procédez comme suit :

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

  2. Choisissez une API existante ou créez-en une.

  3. Dans le volet de navigation principal, choisissez Étapes, puis sélectionnez une étape.

  4. Dans la section Détails de l’étape, choisissez Modifier.

  5. Sous Pare-feu d’applications Web (AWS WAF), sélectionnez votre liste ACL web.

    Si vous utilisez AWS WAFV2, sélectionnez une ACL web AWS WAFV2 pour une application régionale. La liste ACL web et toutes les autres ressources AWS WAFV2 qu’elle utilise doivent être situées dans la même région que votre API.

    Si vous utilisez AWS WAF Classic Regional, sélectionnez une liste ACL web régionale.

  6. Sélectionnez Enregistrer les modifications.

Association d’une liste ACL web AWS WAF à une étape d’API API Gateway à l’aide de la AWS CLI

La commande associate-web-acl suivante associe une liste ACL web AWS WAFV2 d’une application régionale à une étape d’API existante d’API Gateway :

aws wafv2 associate-web-acl \ --web-acl-arn arn:aws:wafv2:{region}:111122223333:regional/webacl/test-cli/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --resource-arn arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod

La commande associate-web-acl suivante associe une liste ACL web AWS WAF Classic Regional à une étape d’API existante d’API Gateway :

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 AWS WAF à une étape d’API à l’aide de l’API REST AWS WAF

Pour associer une liste ACL web AWS WAFV2 pour une application régionale à une étape d’API existante d’API Gateway à l’aide de l’API REST AWS WAFV2, appelez la commande AssociateWebACL, comme dans l’exemple suivant :

import boto3 wafv2 = boto3.client('wafv2') wafv2.associate_web_acl( WebACLArn='arn:aws:wafv2:{region}:111122223333:regional/webacl/test/abc6aa3b-fc33-4841-b3db-0ef3d3825b25', ResourceArn='arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod' )

Pour associer une liste ACL web AWS WAF Classic Regional à une étape d’API existante d’API Gateway à l’aide de l’API REST AWS WAF, appelez la commande AssociateWebACL, comme dans l’exemple suivant :

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