地理的一致ルールステートメント - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

地理的一致ルールステートメント

地理的または地理照合ステートメントを使用して、発信元の国や地域に基づいてウェブリクエストを管理します。地理的照合ステートメントは、ウェブリクエストに発信国や発信地域を示すラベルを追加します。これらのラベルは、ステートメントの条件がリクエストと一致するかどうかに関係なく追加されます。また、地理的照合ステートメントは、リクエストの発信国に対する一致も実行します。

地理的一致ステートメントの使用方法

地理的一致ステートメントは、次のような国や地域のマッチングに使用できます。

  • — 地理的一致ルールを単独で使用し、発信国のみに基づいてリクエストを管理できます。ルールステートメントは国コードに対する一致を実行します。また、発信元のラベルに一致するラベル一致ルールが適用されている地域的一致ルールに従うこともできます。

  • 地域 — 地理的一致ルールに続いてラベル一致ルールを使用し、発信地域に基づいてリクエストを管理します。地理的一致ルールだけを使用して地域コードとの一致を実行することはできません。

ラベルマッチルールの使用方法については、「ラベル一致ルールステートメント」および「AWS WAF ウェブリクエストのラベル」を参照してください。

地理的一致ステートメントのしくみ

geo match ステートメントを使用して、 AWS WAF 各ウェブリクエストを次のように管理します。

  1. AWS WAF リクエストの国と地域コードの決定 — IP アドレスに基づいてリクエストの国と地域を決定します。デフォルトでは、ウェブリクエストの発信元の IP AWS WAF アドレスを使用します。ルールステートメント設定で転送 IP AWS WAF 設定を有効にするなどして、代替リクエストヘッダーの IP X-Forwarded-For アドレスを使用するように指示できます。

    AWS WAF MaxMind GeoIP データベースを使用してリクエストの場所を決定します。MaxMind 国や IP の種類などの要因によって精度は異なりますが、国レベルでのデータの精度は非常に高いと報告します。詳細については MaxMind、「MaxMind IP ジオロケーション」を参照してください。GeoIPデータのいずれかが正しくないと思われる場合は、「GeoIP2データの修正」MaxMind でMaxmindに修正リクエストを送信できます。

    AWS WAF 国際標準化機構 (ISO) 3166 規格の alpha-2 国および地域コードを使用します。コードは次の場所にあります。

    • ISO ウェブサイトでは、「ISO Online Browsing Platform (OBP)」(ISO オンラインブラウジングプラットフォーム (OBP)) で国コードを検索できます。

    • ウィキペディアでは、国コードは「ISO 3166-2」に一覧表示されています。

      国の地域コードは https://en.wikipedia.org/wiki/ISO_3166-2:<ISO country code> の URL に一覧表示されています。たとえば、米国の地域は「ISO 3166-2:US」にあり、ウクライナの地域は「ISO 3166-2:UA」にあります。

  2. リクエストに追加する国ラベルおよび地域ラベルを決定します — ラベルは、地理一致ステートメントが発信元 IP 設定を使用するか、転送された IP 設定を使用するかを示します。

    • 発信元 IP

      国ラベルは awswaf:clientip:geo:country:<ISO country code> です。米国の例は awswaf:clientip:geo:country:US です。

      地域ラベルは awswaf:clientip:geo:region:<ISO country code>-<ISO region code> です。米国のオレゴン州の例は awswaf:clientip:geo:region:US-OR です。

    • 転送された IP

      国ラベルは awswaf:forwardedip:geo:country:<ISO country code> です。米国の例は awswaf:forwardedip:geo:country:US です。

      地域ラベルは awswaf:forwardedip:geo:region:<ISO country code>-<ISO region code> です。米国のオレゴン州の例は awswaf:forwardedip:geo:region:US-OR です。

    リクエストが指定した IP アドレスの国または地域コードがない場合、 AWS WAF はラベル内で値の代わりに XX を使用します。たとえば、次のラベルは国コードがないクライアント IP 用です。awswaf:clientip:geo:country:XX および次のラベルは、国が米国であるが地域コードがない転送先 IP 用です。awswaf:forwardedip:geo:region:US-XX

  3. リクエストの国コードをルール基準に参照して評価

地理一致ステートメントは、一致するものを見つけるかどうかにかかわらず、検査するすべてのリクエストに国と地域のラベルを追加します。

注記

AWS WAF ルールの Web リクエスト評価の最後に任意のラベルを追加します。そのため、地理的一致ステートメントのラベルに対して使用するラベル一致は、地理的一致ステートメントを含むルールとは別のルールで定義する必要があります。

地域値のみを調べる場合、Count アクションと単一の国コード一致で地域的一致ルールを記述し、その後に地域ラベルのラベル一致ルールを作成することができます。この方法でも、地域一致ルールを評価するには国コードを入力する必要があります。サイトへのトラフィック元になる可能性が非常に低い国を指定することで、ログ記録およびカウントメトリクスを減らすことができます。

CloudFront CloudFront ディストリビューションと地域制限機能

CloudFront ディストリビューションでは、 CloudFront 地域制限機能を使用する場合、ブロックされたリクエストはに転送されないことに注意してください。 AWS WAF許可されたリクエストはに転送されます。 AWS WAF地域やその他の指定可能な条件に基づいてリクエストをブロックしたい場合は AWS WAF、地域制限機能を使わずに AWS WAF Geo match ステートメントを使用してください。 CloudFront

地理的一致ステートメントの特徴

ネスト可能 - このステートメントタイプはネスト可能です。

WCU - 1 つの WCU。

設定 – このステートメントは次の設定を使用します。

  • 国コード – 地理一致のために比較する国コードの配列。これらは、ISO 3166 国際規格の alpha-2 の国 ISO コード (たとえば、["US","CN"] など) を基準とした 2 文字の国コードである必要があります。

  • (オプション) 転送 IP 設定 — デフォルトでは、ウェブリクエストの送信元の IP AWS WAF アドレスを使用して送信元国を決定します。代わりに、HTTP ヘッダーで転送された IP X-Forwarded-For を使用するようにルールを設定することもできます。 AWS WAF ヘッダーの最初の IP アドレスを使用します。この設定では、ヘッダーに不正な形式の IP アドレスを持つウェブリクエストに適用するフォールバック動作も指定します。フォールバック動作は、リクエストの一致結果を、一致または不一致のいずれにするかを設定します。詳細については、「転送された IP アドレス」を参照してください。

このルールステートメントの場所
  • コンソールのルールビルダー - [Request option] (リクエストオプション) で [Originates from a country in] (次の国からの送信) を選択します。

  • APIGeoMatchStatement

地域一致ステートメントを使用して、特定の国または地域からのリクエストを管理できます。たとえば、特定の国からのリクエストをブロックしても、それらの国に属する一連の IP アドレスからのリクエストを許可するには、Block に設定されたアクションと次のネストされたステートメント (次の疑似コードで表示) を含めたルール作成できます。

  • AND ステートメント

    • ブロックする国をリストした 地理一致ステートメント

    • NOT ステートメント

      • 許可する IP アドレスを指定する IP セットステートメント

または、特定の国の一部地域をブロックしても、それらの国における他の地域からのリクエストを許可するには、まずアクションセットを持った地理一致リールを Count に定義できます。その後、追加された地理一致ラベルと照合し、必要に応じてリクエストを処理するラベルマッチルールを定義します。

次の擬似コードは、このアプローチの例について説明しています。

  1. 地理一致ステートメントはブロックする地域がある国をリストしますが、アクションを Count に設定された状態で実行します。これにより、マッチステータスに関係なくすべてのウェブリクエストにラベルが付けられ、対象国のカウントメトリクスも表示されます。

  2. Block アクションを含む AND ステートメント

    • ブロックする国のラベルを指定するラベル一致ステートメント

    • NOT ステートメント

      • 許可する国の地域のラベルを指定するラベル一致ステートメント

次の JSON リストは、前述の擬似コードで説明した 2 つのルールの実装を示しています。これらのルールは、オレゴン州とワシントン州からのトラフィックを除く米国からのトラフィックをすべてブロックします。地理一致ステートメントは、検査するすべてのリクエストに国と地域のラベルを追加します。ラベル一致ルールは地理一致ルールの後に実行されるため、地理一致ルールが追加したばかりの国や地域のラベルと照合できます。地理一致ステートメントは転送された IP アドレスを使用するため、ラベル一致は転送された IP ラベルも指定します。

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

別の例として、地理一致とレートベースのルールを組み合わせて、特定の国または地域のユーザーのリソースに優先順位を付けることができます。ユーザーを区別するために使用する地理一致またはラベル一致のステートメントごとに、異なるレートベースのステートメントを作成します。優先させる国または地域のユーザーのレート制限をより高く設定し、他のユーザーのレート制限をより低く設定します。

次の JSON リストは、米国からのトラフィック量を制限する地理一致ルールの次にレートベースのルールを示しています。このルールにより、オレゴン州からのトラフィックは、同国の他の地域からのトラフィックよりも高いレートで許可されます。

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