Instruction de correspondance géographique de règle - AWS WAF, AWS Firewall Manager, et AWS Shield Advanced

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.

Instruction de correspondance géographique de règle

Utilisez des déclarations géographiques ou de correspondance géographique pour gérer les demandes Web en fonction du pays et de la région d'origine. Une déclaration de correspondance géographique ajoute aux requêtes Web des étiquettes indiquant le pays d'origine et la région d'origine. Il ajoute ces étiquettes, que les critères de l'énoncé correspondent ou non à la demande. Une instruction de correspondance géographique effectue également une correspondance avec le pays d'origine de la demande.

Comment utiliser la déclaration Geo Match

Vous pouvez utiliser l'instruction Geo Match pour faire correspondre un pays ou une région, comme suit :

  • Pays — Vous pouvez utiliser une règle de correspondance géographique à elle seule pour gérer les demandes uniquement en fonction de leur pays d'origine. L'énoncé de règle correspond aux codes de pays. Vous pouvez également suivre une règle de correspondance géographique avec une règle de correspondance d'étiquette qui correspond à l'étiquette du pays d'origine.

  • Région : utilisez une règle de correspondance géographique suivie d'une règle de correspondance d'étiquettes pour gérer les demandes en fonction de leur région d'origine. Vous ne pouvez pas utiliser une règle de correspondance géographique uniquement pour établir une correspondance avec des codes de région.

Pour plus d'informations sur l'utilisation des règles de correspondance des étiquettes, reportez-vous aux Déclaration relative à la règle de correspondance des étiquettes sections etAWS WAF étiquettes sur les requêtes Web.

Comment fonctionne la déclaration Geo Match

Avec l'instruction geo match, AWS WAF gère chaque requête Web comme suit :

  1. Détermine les codes de pays et de région de la demande : AWS WAF détermine le pays et la région d'une demande en fonction de son adresse IP. Par défaut, AWS WAF utilise l'adresse IP d'origine de la requête Web. Vous pouvez demander d' AWS WAF utiliser une adresse IP provenant d'un autre en-tête de demandeX-Forwarded-For, par exemple en activant la configuration IP transférée dans les paramètres de l'instruction de règle.

    AWS WAF détermine l'emplacement des demandes à l'aide des bases de MaxMind données GeoIP. MaxMind fait état d'une très grande précision de ses données au niveau des pays, bien que la précision varie en fonction de facteurs tels que le pays et le type de propriété intellectuelle. Pour plus d'informations MaxMind, consultez la section Géolocalisation MaxMind IP. Si vous pensez que l'une des données GeoIP est incorrecte, vous pouvez envoyer une demande de correction à Maxmind à l'adresse MaxMind Correct GeoIP2 Data.

    AWS WAF utilise les codes de pays et de région alpha-2 de la norme 3166 de l'Organisation internationale de normalisation (ISO). Vous pouvez trouver les codes aux endroits suivants :

  2. Détermine le libellé du pays et le libellé de la région à ajouter à la demande : les étiquettes indiquent si l'instruction Geo Match utilise l'adresse IP d'origine ou une configuration IP transférée.

    • IP d'origine

      L'étiquette du pays estawswaf:clientip:geo:country:<ISO country code>. Exemple pour les États-Unis :awswaf:clientip:geo:country:US.

      L'étiquette de la région estawswaf:clientip:geo:region:<ISO country code>-<ISO region code>. Exemple pour l'Oregon aux États-Unis :awswaf:clientip:geo:region:US-OR.

    • IP transférée

      L'étiquette du pays estawswaf:forwardedip:geo:country:<ISO country code>. Exemple pour les États-Unis :awswaf:forwardedip:geo:country:US.

      L'étiquette de la région estawswaf:forwardedip:geo:region:<ISO country code>-<ISO region code>. Exemple pour l'Oregon aux États-Unis :awswaf:forwardedip:geo:region:US-OR.

    Si le code de pays ou de région n'est pas disponible pour l'adresse IP spécifiée dans une demande, AWS WAF XX utilisez-le dans les libellés, à la place de la valeur. Par exemple, l'étiquette suivante est pour une adresse IP client dont le code de pays n'est pas disponible : awswaf:clientip:geo:country:XX et l'étiquette suivante est pour une adresse IP transférée dont le pays est les États-Unis, mais dont le code de région n'est pas disponible :awswaf:forwardedip:geo:region:US-XX.

  3. Évalue le code de pays de la demande par rapport aux critères de la règle

L'instruction Geo Match ajoute des libellés de pays et de régions à toutes les demandes qu'elle inspecte, qu'elle trouve ou non une correspondance.

Note

AWS WAF ajoute des libellés à la fin de l'évaluation des requêtes Web d'une règle. Pour cette raison, toute étiquette que vous utilisez par rapport aux libellés d'une instruction de correspondance géographique doit être définie dans une règle distincte de celle qui contient l'instruction de correspondance géographique.

Si vous souhaitez inspecter uniquement les valeurs des régions, vous pouvez écrire une règle de correspondance géographique avec une Count action et une seule correspondance de code de pays, suivie d'une règle de correspondance d'étiquettes pour les étiquettes de région. Vous devez fournir un code de pays pour que la règle de correspondance géographique puisse être évaluée, même pour cette approche. Vous pouvez réduire les statistiques de journalisation et de comptage en spécifiant un pays qui est très peu susceptible d'être une source de trafic vers votre site.

CloudFront les distributions et la CloudFront fonction de restriction géographique

Pour les CloudFront distributions, si vous utilisez la fonctionnalité CloudFront de restriction géographique, sachez que cette fonctionnalité ne transmet pas les demandes bloquées à AWS WAF. Il transmet les demandes autorisées à AWS WAF. Si vous souhaitez bloquer les demandes en fonction de la géographie et d'autres critères que vous pouvez spécifier AWS WAF, utilisez l'instruction AWS WAF de correspondance géographique et n'utilisez pas la fonctionnalité CloudFront de restriction géographique.

Caractéristiques de Geo Match Statement

Imbriquable : vous pouvez imbriquer ce type de déclaration.

WCU — 1 WCU.

Paramètres — Cette instruction utilise les paramètres suivants :

  • Codes de pays : ensemble de codes de pays à comparer pour une correspondance géographique. Il doit s'agir de codes de pays à deux caractères issus des codes ISO de pays alpha-2 de la norme internationale ISO 3166, par exemple. ["US","CN"]

  • (Facultatif) Configuration IP transférée — Par défaut, AWS WAF utilise l'adresse IP dans l'origine de la requête Web pour déterminer le pays d'origine. Vous pouvez également configurer la règle pour utiliser une adresse IP transférée dans un en-tête HTTP à la X-Forwarded-For place. AWS WAF utilise la première adresse IP de l'en-tête. Avec cette configuration, vous spécifiez également un comportement de secours à appliquer à une requête Web dont l'en-tête contient une adresse IP mal formée. Le comportement de remplacement définit le résultat correspondant à la demande, qu'il corresponde ou non. Pour plus d’informations, consultez Adresse IP transférée.

Où trouver cette déclaration de règle
  • Générateur de règles sur la console : pour l'option Demande, choisissez Provient d'un pays de.

  • APIGeoMatchStatement

Exemples

Vous pouvez utiliser le relevé de correspondance géographique pour gérer les demandes provenant de pays ou de régions spécifiques. Par exemple, si vous souhaitez bloquer les demandes provenant de certains pays, tout en autorisant les demandes provenant d'un ensemble spécifique d'adresses IP dans ces pays, vous pouvez créer une règle avec l'action définie sur Block et les instructions imbriquées suivantes, affichées en pseudocode :

  • AND déclaration

    • Instruction de correspondance géographique répertoriant les pays que vous souhaitez bloquer

    • NOT déclaration

      • Instruction de jeu d'adresses IP qui spécifie les adresses IP via lesquelles vous souhaitez autoriser

Ou, si vous souhaitez bloquer certaines régions dans certains pays, tout en autorisant les demandes provenant d'autres régions de ces pays, vous pouvez d'abord définir une règle de correspondance géographique avec l'action définie sur. Count Définissez ensuite une règle de correspondance d'étiquettes qui correspond aux étiquettes de correspondance géographique ajoutées et gère les demandes selon vos besoins.

Le pseudo-code suivant décrit un exemple de cette approche :

  1. Déclaration de correspondance géographique répertoriant les pays dont les régions que vous souhaitez bloquer, mais dont l'action est définie sur Compter. Cela étiquette chaque demande Web quel que soit le statut de correspondance, et vous donne également des mesures de comptage pour les pays qui vous intéressent.

  2. ANDdéclaration avec action de blocage

    • Déclaration de correspondance des libellés qui spécifie les libellés des pays que vous souhaitez bloquer

    • NOT déclaration

      • Déclaration de correspondance des étiquettes qui spécifie les libellés des régions des pays que vous souhaitez autoriser à passer

La liste JSON suivante montre une implémentation des deux règles décrites dans le pseudocode précédent. Ces règles bloquent tout le trafic en provenance des États-Unis, à l'exception du trafic en provenance de l'Oregon et de Washington. La déclaration Geo Match ajoute des étiquettes de pays et de régions à toutes les demandes qu'elle inspecte. La règle de correspondance des libellés s'exécute après la règle de correspondance géographique, de sorte qu'elle peut correspondre aux étiquettes de pays et de régions que la règle de correspondance géographique vient d'ajouter. L'instruction Geo Match utilise une adresse IP transférée, de sorte que la correspondance d'étiquettes spécifie également les étiquettes IP transférées.

{ "Name": "geoMatchForLabels", "Priority": 10, "Statement": { "GeoMatchStatement": { "CountryCodes": [ "US" ], "ForwardedIPConfig": { "HeaderName": "X-Forwarded-For", "FallbackBehavior": "MATCH" } } }, "Action": { "Count": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "geoMatchForLabels" } }, { "Name": "blockUSButNotOROrWA", "Priority": 11, "Statement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:forwardedip:geo:country:US" } }, { "NotStatement": { "Statement": { "OrStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:forwardedip:geo:region:US-OR" } }, { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:forwardedip:geo:region:US-WA" } } ] } } } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "blockUSButNotOROrWA" } }

Autre exemple, vous pouvez associer la géolocalisation à des règles basées sur les taux afin de hiérarchiser les ressources destinées aux utilisateurs d'un pays ou d'une région en particulier. Vous créez un relevé tarifaire différent pour chaque relevé de correspondance géographique ou de correspondance d'étiquette que vous utilisez pour différencier vos utilisateurs. Définissez une limite de débit supérieure pour les utilisateurs du pays ou de la région de votre choix et définissez une limite de débit inférieure pour les autres utilisateurs.

La liste JSON suivante montre une règle de correspondance géographique suivie de règles basées sur le taux qui limitent le débit du trafic en provenance des États-Unis. Les règles permettent au trafic en provenance de l'Oregon d'entrer à un rythme plus élevé que le trafic en provenance de n'importe quel autre endroit du pays.

{ "Name": "geoMatchForLabels", "Priority": 190, "Statement": { "GeoMatchStatement": { "CountryCodes": [ "US" ] } }, "Action": { "Count": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "geoMatchForLabels" } }, { "Name": "rateLimitOregon", "Priority": 195, "Statement": { "RateBasedStatement": { "Limit": 3000, "AggregateKeyType": "IP", "ScopeDownStatement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:clientip:geo:region:US-OR" } } } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "rateLimitOregon" } }, { "Name": "rateLimitUSNotOR", "Priority": 200, "Statement": { "RateBasedStatement": { "Limit": 100, "AggregateKeyType": "IP", "ScopeDownStatement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:clientip:geo:country:US" } }, { "NotStatement": { "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:clientip:geo:region:US-OR" } } } } ] } } } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "rateLimitUSNotOR" } }