Utilisation AWS WAF pour protéger votre AWS AppSync APIs - AWS AppSync

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation AWS WAF pour protéger votre AWS AppSync APIs

AWS WAF est un pare-feu pour applications Web qui aide à protéger les applications Web APIs contre les attaques. Il vous permet de configurer un ensemble de règles, appelé liste de contrôle d'accès Web (WebACL), qui autorise, bloque ou surveille (compte) les requêtes Web sur la base de règles et de conditions de sécurité Web personnalisables que vous définissez. Lorsque vous intégrez votre AWS AppSync API à AWS WAF, vous gagnez en contrôle et en visibilité sur le HTTP trafic accepté par votreAPI. Pour en savoir plus AWS WAF, consultez la section Comment AWS WAF fonctionne dans le guide du AWS WAF développeur.

Vous pouvez l'utiliser AWS WAF pour vous AppSync API protéger contre les exploits Web courants, tels que les attaques SQL par injection et par script intersite (XSS). Cela peut affecter API la disponibilité et les performances, 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 CIDR blocs, les demandes provenant d'un pays ou d'une région spécifique, les demandes contenant SQL du code malveillant ou les demandes contenant un script malveillant.

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 HTTP les en-têtes, la méthode, la chaîne de requête et le corps de la demande (limité aux 8 premiers Ko). URI 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.

Pour en savoir plus sur les types de règles pris en charge et sur les AWS WAF fonctionnalités supplémentaires, consultez le guide du AWS WAF développeur et la AWS WAF APIréférence.

Important

AWS WAF est votre première ligne de défense contre les exploits Web. Lorsqu'elle AWS WAF est activée sur unAPI, AWS WAF les règles sont évaluées avant les autres fonctionnalités de contrôle d'accès, telles que l'autorisation par API clé, IAM les politiques, les OIDC jetons et les groupes d'utilisateurs Amazon Cognito.

Intégrer et AppSync API avec AWS WAF

Vous pouvez intégrer une Appsync API à AWS WAF l'aide du AWS Management Console, du AWS CLI AWS CloudFormation, ou de tout autre client compatible.

Pour intégrer et AWS AppSync API avec AWS WAF
  1. Créez un AWS WAF site WebACL. Pour connaître les étapes détaillées relatives à l'utilisation de la AWS WAF console, consultez la section Création d'un site Web ACL.

  2. Définissez les règles du WebACL. Une ou plusieurs règles sont définies au cours du processus de création du WebACL. Pour plus d'informations sur la structure des règles, consultez la section AWS WAF règles. Pour des exemples de règles utiles que vous pouvez définir pour votre AWS AppSync API, voirCréation de règles pour un site Web ACL.

  3. Associez le Web ACL à un AWS AppSync API. Vous pouvez effectuer cette étape dans la AWS WAF console ou dans la AppSync console.

    • Pour associer le Web ACL à une ressource AWS AppSync API dans la AWS WAF console, suivez les instructions du manuel du AWS WAF développeur relatives à l'association ou à la dissociation ACL d'un site Web à une AWS ressource.

    • Pour associer le Web ACL à un élément AWS AppSync API dans la AWS AppSync console

      1. Connectez-vous à la AppSync console AWS Management Console et ouvrez-la.

      2. Choisissez celui API que vous souhaitez associer à un site WebACL.

      3. Dans le panneau de navigation, sélectionnez Settings (Paramètres).

      4. Dans la section Pare-feu des applications Web, activez Activer AWS WAF.

      5. Dans la liste ACL déroulante Web, choisissez le nom du site Web ACL à associer à votreAPI.

      6. Choisissez Enregistrer pour associer le Web ACL à votreAPI.

Note

Après avoir créé un site Web ACL dans la AWS WAF console, la disponibilité du nouveau site Web ACL peut prendre quelques minutes. Si vous ne voyez aucun site Web nouvellement créé ACL dans le menu du pare-feu des applications Web, attendez quelques minutes et recommencez les étapes pour associer le Web ACL à votreAPI.

Note

AWS WAF l'intégration ne prend en charge l'Subscription registration messageévénement que pour les points de terminaison en temps réel. AWS AppSync répondra par un message d'erreur au lieu d'un start_ack message pour tout message Subscription registration message bloqué par AWS WAF.

Après avoir associé un site Web ACL à un AWS AppSync API, vous allez gérer le Web ACL à l'aide du AWS WAF APIs. Vous n'avez pas besoin de réassocier le Web ACL à votre, AWS AppSync API sauf si vous souhaitez l' AWS AppSync APIassocier à un autre site WebACL.

Création de règles pour un site Web ACL

Les règles définissent comment inspecter les requêtes Web et ce qu'il faut faire lorsqu'une demande Web correspond aux critères d'inspection. Les règles n'existent pas AWS WAF en elles-mêmes. Vous pouvez accéder à une règle par son nom dans un groupe de règles ou sur le Web ACL où elle est définie. Pour plus d'informations, consultez AWS WAF les règles. Les exemples suivants montrent comment définir et associer des règles utiles pour protéger un AppSync API.

Exemple ACLrègle Web pour limiter la taille du corps de la demande

Voici un exemple de règle qui limite la taille du corps des demandes. Cela serait saisi dans l'JSONéditeur de règles lors de la création d'un site Web ACL dans la AWS WAF console.

{ "Name": "BodySizeRule", "Priority": 1, "Action": { "Block": {} }, "Statement": { "SizeConstraintStatement": { "ComparisonOperator": "GE", "FieldToMatch": { "Body": {} }, "Size": 1024, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ] } }, "VisibilityConfig": { "CloudWatchMetricsEnabled": true, "MetricName": "BodySizeRule", "SampledRequestsEnabled": true } }

Après avoir créé votre site Web ACL à l'aide de l'exemple de règle précédent, vous devez l'associer à votre AppSync API. Au lieu d'utiliser le AWS Management Console, vous pouvez effectuer cette étape en AWS CLI exécutant la commande suivante.

aws waf associate-web-acl --web-acl-id waf-web-acl-arn --resource-arn appsync-api-arn

La propagation des modifications peut prendre quelques minutes, mais après l'exécution de cette commande, les demandes dont le corps est supérieur à 1024 octets seront rejetées par AWS AppSync.

Note

Après avoir créé un nouveau site Web ACL dans la AWS WAF console, le site Web peut prendre quelques minutes ACL pour être associé à unAPI. Si vous exécutez la CLI commande et qu'une WAFUnavailableEntityException erreur s'affiche, attendez quelques minutes et réessayez de l'exécuter.

Exemple ACLrègle Web pour limiter les demandes provenant d'une seule adresse IP

Voici un exemple de règle qui limite un maximum de 100 demandes AppSync API à partir d'une seule adresse IP. Cela serait saisi dans l'JSONéditeur de règles lors de la création d'un site Web ACL avec une règle basée sur le taux dans la AWS WAF console.

{ "Name": "Throttle", "Priority": 0, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "Throttle" }, "Statement": { "RateBasedStatement": { "Limit": 100, "AggregateKeyType": "IP" } } }

Après avoir créé votre site Web ACL à l'aide de l'exemple de règle précédent, vous devez l'associer à votre AppSync API. Vous pouvez effectuer cette étape en AWS CLI exécutant la commande suivante.

aws waf associate-web-acl --web-acl-id waf-web-acl-arn --resource-arn appsync-api-arn
Exemple ACLrègle Web pour empêcher les requêtes d'introspection GraphQL __schema vers un API

Voici un exemple de règle qui empêche les requêtes d'introspection GraphQL __schema vers un. API Tout HTTP corps contenant la chaîne « __schema » sera bloqué. Cela serait saisi dans l'JSONéditeur de règles lors de la création d'un site Web ACL dans la AWS WAF console.

{ "Name": "BodyRule", "Priority": 5, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "BodyRule" }, "Statement": { "ByteMatchStatement": { "FieldToMatch": { "Body": {} }, "PositionalConstraint": "CONTAINS", "SearchString": "__schema", "TextTransformations": [ { "Type": "NONE", "Priority": 0 } ] } } }

Après avoir créé votre site Web ACL à l'aide de l'exemple de règle précédent, vous devez l'associer à votre AppSync API. Vous pouvez effectuer cette étape en AWS CLI exécutant la commande suivante.

aws waf associate-web-acl --web-acl-id waf-web-acl-arn --resource-arn appsync-api-arn