Instrução de regra de correspondência geográfica - AWS WAF, AWS Firewall Manager, e AWS Shield Advanced

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Instrução de regra de correspondência geográfica

Use instruções de correspondência geográfica para gerenciar solicitações da web com base no país e na região de origem. Uma instrução de correspondência geográfica adiciona rótulos às solicitações da web que indicam o país de origem e a região de origem. Ela adiciona esses rótulos independentemente de os critérios da instrução corresponderem à solicitação. Uma instrução de correspondência geográfica também realiza a correspondência com o país de origem da solicitação.

Como usar a instrução de correspondência geográfica

Você pode usar a instrução de correspondência geográfica para correspondência de país ou região, da seguinte forma:

  • País — Você pode usar uma regra de correspondência geográfica sozinha para gerenciar solicitações com base apenas no país de origem. A instrução de regra faz correspondência em relação aos códigos de país. Você também pode seguir uma regra de correspondência geográfica com uma regra de correspondência de rótulo que corresponda ao rótulo do país de origem.

  • Região — Use uma regra de correspondência geográfica seguida por uma regra de correspondência de rótulo para gerenciar solicitações com base na região de origem. Você não pode usar uma regra de correspondência geográfica sozinha para fazer correspondência em relação aos códigos de região.

Para obter informações sobre o uso de regras de correspondência de rótulos, consulte Instrução de regra de correspondência de rótulo e AWS WAF rótulos em solicitações da web.

Como funciona a instrução de correspondência geográfica

Com a declaração de correspondência geográfica, AWS WAF gerencia cada solicitação da web da seguinte forma:

  1. Determina os códigos de país e região da solicitação — AWS WAF determina o país e a região de uma solicitação com base em seu endereço IP. Por padrão, AWS WAF usa o endereço IP da origem da solicitação da web. Você pode AWS WAF instruir o uso de um endereço IP de um cabeçalho de solicitação alternativo, por exemploX-Forwarded-For, habilitando a configuração de IP encaminhado nas configurações da declaração de regra.

    AWS WAF determina a localização das solicitações usando bancos de dados MaxMind GeoIP. MaxMind relata uma precisão muito alta de seus dados em nível de país, embora a precisão varie de acordo com fatores como país e tipo de IP. Para obter mais informações sobre MaxMind, consulte Geolocalização MaxMind IP. Se achar que algum dado do GeoIP está incorreto, você pode enviar uma solicitação de correção para a Maxmind em MaxMind Correct GeoIP2 Data.

    AWS WAF usa os códigos alfa-2 de país e região do padrão 3166 da Organização Internacional de Padronização (ISO). Você pode encontrar os códigos nos seguintes locais:

    • No site da ISO, você pode pesquisar os códigos dos países na Plataforma de navegação online da ISO (OBP).

    • Na Wikipedia, os códigos de país estão listados na ISO 3166-2.

      Os códigos de região de um país estão listados na URL https://en.wikipedia.org/wiki/ISO_3166-2:<ISO country code>. Por exemplo, as regiões dos Estados Unidos estão em ISO 3166-2:US e as da Ucrânia estão em ISO 3166-2:UA.

  2. Determina o rótulo do país e o rótulo da região a serem adicionados à solicitação — Os rótulos indicam se a instrução de correspondência geográfica usa o IP de origem ou uma configuração de IP encaminhado.

    • IP de origem

      O rótulo do país é awswaf:clientip:geo:country:<ISO country code>. Por exemplo, awswaf:clientip:geo:country:US para os Estados Unidos.

      O rótulo da região é awswaf:clientip:geo:region:<ISO country code>-<ISO region code>. Exemplo para Oregon nos Estados Unidos: awswaf:clientip:geo:region:US-OR.

    • IP encaminhado

      O rótulo do país é awswaf:forwardedip:geo:country:<ISO country code>. Por exemplo, awswaf:forwardedip:geo:country:US para os Estados Unidos.

      O rótulo da região é awswaf:forwardedip:geo:region:<ISO country code>-<ISO region code>. Exemplo para Oregon nos Estados Unidos: awswaf:forwardedip:geo:region:US-OR.

    Se o código do país ou região não estiver disponível para o endereço IP especificado de uma solicitação, o AWS WAF usa XX nos rótulos, no lugar do valor. Por exemplo, o rótulo a seguir é para um IP de cliente cujo código de país não está disponível: awswaf:clientip:geo:country:XX, e o seguinte é para um IP encaminhado cujo país são os Estados Unidos, mas cujo código de região não está disponível: awswaf:forwardedip:geo:region:US-XX.

  3. Avalia o código do país da solicitação em relação aos critérios da regra

A instrução de correspondência geográfica adiciona rótulos de país e região a todas as solicitações que ela inspeciona, independentemente de encontrar uma correspondência.

nota

AWS WAF adiciona qualquer rótulo ao final da avaliação da solicitação web de uma regra. Por esse motivo, qualquer correspondência de rótulo usada com os rótulos de uma instrução de correspondência geográfica deve ser definida em uma regra separada da regra que contém a instrução de correspondência geográfica.

Se quiser inspecionar somente valores de região, você pode escrever uma regra de correspondência geográfica com ação Count e com uma única correspondência de código de país, seguida por uma regra de correspondência de rótulos para os rótulos de região. Você deve fornecer um código de país para que a regra de correspondência geográfica seja avaliada, mesmo para essa abordagem. Você pode reduzir o registro em log e as métricas especificando um país que provavelmente não será uma origem de tráfego para seu site.

CloudFront distribuições e o recurso de CloudFront restrição geográfica

Para CloudFront distribuições, se você usar CloudFront o recurso de restrição geográfica, saiba que o recurso não encaminha solicitações bloqueadas para o. AWS WAF Ele encaminha as solicitações permitidas para AWS WAF. Se você quiser bloquear solicitações com base na geografia e em outros critérios que você pode especificar AWS WAF, use a declaração de correspondência AWS WAF geográfica e não use o recurso de restrição CloudFront geográfica.

Características da instrução de correspondência geográfica

Aninhável: você pode aninhar esse tipo de instrução.

WCUs : 1 WCU.

Configurações: essa instrução usa as seguintes configurações:

  • Códigos de país: uma matriz de códigos de país para comparar em uma correspondência geográfica. Estes devem ser códigos de país de dois caracteres, por exemplo, ["US","CN"], dos códigos ISO de países alfa-2 da norma internacional ISO 3166.

  • (Opcional) Configuração de IP encaminhada — Por padrão, AWS WAF usa o endereço IP na origem da solicitação da web para determinar o país de origem. Como alternativa, você pode configurar a regra para usar um IP encaminhado em um cabeçalho HTTP, como X-Forwarded-For alternativa. AWS WAF usa o primeiro endereço IP no cabeçalho. Com essa configuração, você também especifica um comportamento de fallback a ser aplicado a uma solicitação da web com um endereço IP incorreto no cabeçalho. O comportamento de fallback define o resultado correspondente da solicitação como correspondente ou não correspondente. Para ter mais informações, consulte Endereço IP encaminhado.

Onde encontrar essa instrução de regra
  • Criador de regras no console: para a opção Solicitação, escolha Origina de um país em.

  • APIGeoMatchStatement

Exemplos

Você pode usar a instrução de correspondência geográfica para gerenciar solicitações de países ou regiões específicos. Por exemplo, se deseja bloquear determinados países, mas ainda permitir solicitações de um conjunto específico de endereços IP nesses países, você pode criar uma regra com a ação definida como Block e as seguintes instruções aninhadas, mostradas no pseudocódigo:

  • Instrução AND

    • Instrução de correspondência geográfica que relaciona os países que você quer bloquear

    • Instrução NOT

      • Instrução de conjunto de IPs que especifica os endereços IP que você deseja permitir

Ou, se você quiser bloquear algumas regiões em determinados países, mas ainda permitir solicitações de outras regiões nesses países, você pode primeiro definir uma regra de correspondência geográfica com a ação definida como Count. Em seguida, defina uma regra de correspondência de rótulos que corresponda aos rótulos de correspondência geográfica adicionados e gerencie as solicitações conforme necessário.

O pseudocódigo a seguir descreve um exemplo dessa abordagem:

  1. Instrução de correspondência geográfica listando os países com regiões que você deseja bloquear, mas com a ação definida como Contagem. Isso rotula todas as solicitações da web, independentemente do status da correspondência, e também fornece métricas de contagem para os países de interesse.

  2. Instrução AND com ação de bloqueio

    • Instrução de correspondência de rótulos que especifica os rótulos dos países que você deseja bloquear

    • Instrução NOT

      • Instrução de correspondência de rótulos que especifica os rótulos das regiões nos países que você deseja permitir a passagem

A lista JSON a seguir mostra uma implementação das duas regras descritas no pseudocódigo anterior. Essas regras bloqueiam todo o tráfego dos Estados Unidos, exceto o tráfego de Oregon e Washington. A instrução de correspondência geográfica adiciona rótulos de país e região a todas as solicitações que ela inspeciona. A regra de correspondência de rótulos é executada após a regra de correspondência geográfica, para que possa corresponder aos rótulos de país e região que a regra de correspondência geográfica acabou de adicionar. A instrução de correspondência geográfica usa um endereço IP encaminhado, portanto, a correspondência de rótulos também especifica rótulos de IPs encaminhados.

{ "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" } }

Como outro exemplo, você pode combinar a correspondência geográfica com regras baseadas em intervalos para priorizar recursos para usuários em um determinado país ou região. Você cria uma instrução com base em intervalos diferente para cada instrução de correspondência geográfica ou de correspondência de rótulo que você usa para diferenciar seus usuários. Defina um limite de intervalo mais alto para usuários no país ou região preferido e um limite de intervalo mais baixo para os outros usuários.

A lista JSON a seguir mostra uma regra de correspondência geográfica seguida por regras baseadas em intervalos que limitam o intervalo de tráfego dos Estados Unidos. As regras permitem que o tráfego do Oregon chegue a um intervalo mais alto do que o tráfego de qualquer outro lugar do país.

{ "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" } }