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

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

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

このセクションでは、地理的一致ステートメントとその仕組みについて説明します。

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

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

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

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

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

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

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

Geo 一致ステートメントでは、 AWS WAF は、各ウェブリクエストを次のように管理します。

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

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

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

  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 は、ルールのウェブリクエスト評価の最後にラベルを追加します。そのため、地理的一致ステートメントのラベルに対して使用するラベル一致は、地理的一致ステートメントを含むルールとは別のルールで定義する必要があります。

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

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

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

ルールステートメントの特性

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

WCUs – 1 WCU。

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

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

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

このルールステートメントの場所

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

  • APIGeoMatchStatement

地域一致ステートメントを使用して、特定の国または地域からのリクエストを管理できます。例えば、特定の国からのリクエストをブロックしても、それらの国の特定の IP アドレスセットからのリクエストを許可する場合は、 アクションを に設定してルールを作成できます。Block および次のネストされたステートメントは、擬似コードで示されています。

  • AND statement

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

    • NOT statement

      • 許可する 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" } }