翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
このセクションでは、地理的な一致ステートメントとは何か、またその仕組みについて説明します。
地理的または地理照合ステートメントを使用して、発信元の国や地域に基づいてウェブリクエストを管理します。地理的照合ステートメントは、ウェブリクエストに発信国や発信地域を示すラベルを追加します。これらのラベルは、ステートメントの条件がリクエストと一致するかどうかに関係なく追加されます。また、地理的照合ステートメントは、リクエストの発信国に対する一致も実行します。
地理的一致ステートメントの使用方法
地理的一致ステートメントは、次のような国や地域のマッチングに使用できます。
-
国 — 地理的一致ルールを単独で使用し、発信国のみに基づいてリクエストを管理できます。ルールステートメントは国コードに対する一致を実行します。また、発信元のラベルに一致するラベル一致ルールが適用されている地域的一致ルールに従うこともできます。
-
地域 — 地理的一致ルールに続いてラベル一致ルールを使用し、発信地域に基づいてリクエストを管理します。地理的一致ルールだけを使用して地域コードとの一致を実行することはできません。
ラベルマッチルールの使用方法については、「ラベル一致ルールステートメント」および「でのウェブリクエストのラベル付け AWS WAF」を参照してください。
地理的一致ステートメントのしくみ
地理一致ステートメントで AWS WAF は各ウェブリクエストを次のように管理します。
-
リクエスト元の国と地域コードを決定します — AWS WAF は IP アドレスに基づいてリクエストの国と地域を決定します。デフォルトでは、AWS WAF はウェブリクエストの発信元の IP アドレスを使用します。ルールステートメントの設定で転送 IP 設定を有効にし、
X-Forwarded-For
など、代替リクエストヘッダーの IP アドレスを使用するように AWS WAF に指示できます。AWS WAF が MaxMind GeoIP データベースを使用してリクエストの場所を決定します。MaxMind は、国レベルでの非常に高精度なデータを報告しますが、精度は国や IP の種類などの要因によって異なります。MaxMind の詳細については、「MaxMind IP Geolocation
」を参照してください。GeoIP データのいずれかが正しくないと思われる場合は、MaxMind Correct GeoIP2 Data で 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:
の URL に一覧表示されています。たとえば、米国の地域は「ISO 3166-2:US<ISO country code>
」にあり、ウクライナの地域は「ISO 3166-2:UA 」にあります。
-
リクエストに追加する国ラベルおよび地域ラベルを決定します — ラベルは、地理一致ステートメントが発信元 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
。 -
リクエストの国コードをルール基準に参照して評価
地理一致ステートメントは、一致するものを見つけるかどうかにかかわらず、検査するすべてのリクエストに国と地域のラベルを追加します。
注記
AWS WAF は、ルールのウェブリクエスト評価の最後に任意のラベルを追加します。そのため、地理的一致ステートメントのラベルに対して使用するラベル一致は、地理的一致ステートメントを含むルールとは別のルールで定義する必要があります。
地域値のみを調べる場合、Count アクションと単一の国コード一致で地域的一致ルールを記述し、その後に地域ラベルのラベル一致ルールを作成することができます。この方法でも、地域一致ルールを評価するには国コードを入力する必要があります。サイトへのトラフィック元になる可能性が非常に低い国を指定することで、ログ記録およびカウントメトリクスを減らすことができます。
CloudFront ディストリビューションおよび CloudFront 地域制限機能
CloudFront ディストリビューションでは、CloudFront の地域制限機能を使用する場合、ブロックされたリクエストは AWS WAF に転送されないことに注意してください。許可されたリクエストは AWS WAF に転送されます。地理や、AWS WAF で指定できるその他の基準に基づいてリクエストをブロックする場合、CloudFront 地理制限機能は使用せずに、AWS WAF 地理的一致ステートメントを使用してください。
ルールステートメントの特性
ネスト可能 - このステートメントタイプはネスト可能です。
WCU - 1 つの WCU。
設定 – このステートメントは次の設定を使用します。
-
国コード – 地理一致のために比較する国コードの配列。これらは、ISO 3166 国際規格の alpha-2 の国 ISO コード (たとえば、
["US","CN"]
など) を基準とした 2 文字の国コードである必要があります。 -
(オプション) 転送された IP 設定 – デフォルトでは、AWS WAF はウェブリクエストの発信元の IP アドレスを使用して、発信元の国を判別します。または、代わりに
X-Forwarded-For
などの HTTP ヘッダーで転送された IP を使用するようにルールを設定することもできます。AWS WAF は、ヘッダーの最初の IP アドレスを使用します。この設定では、ヘッダーに不正な形式の IP アドレスを持つウェブリクエストに適用するフォールバック動作も指定します。フォールバック動作は、リクエストの一致結果を、一致または不一致のいずれにするかを設定します。詳細については、「転送された IP アドレスの使用」を参照してください。
このルールステートメントの場所
-
コンソールのルールビルダー - [Request option] (リクエストオプション) で [Originates from a country in] (次の国からの送信) を選択します。
-
API – 「GeoMatchStatement」
例
地域一致ステートメントを使用して、特定の国または地域からのリクエストを管理できます。たとえば、特定の国からのリクエストをブロックしても、それらの国に属する一連の IP アドレスからのリクエストを許可するには、Block に設定されたアクションと次のネストされたステートメント (次の疑似コードで表示) を含めたルール作成できます。
-
AND ステートメント
-
ブロックする国をリストした 地理一致ステートメント
-
NOT ステートメント
-
許可する IP アドレスを指定する IP セットステートメント
-
-
または、特定の国の一部地域をブロックしても、それらの国における他の地域からのリクエストを許可するには、まずアクションセットを持った地理一致リールを Count に定義できます。その後、追加された地理一致ラベルと照合し、必要に応じてリクエストを処理するラベルマッチルールを定義します。
次の擬似コードは、このアプローチの例について説明しています。
-
地理一致ステートメントはブロックする地域がある国をリストしますが、アクションを Count に設定された状態で実行します。これにより、マッチステータスに関係なくすべてのウェブリクエストにラベルが付けられ、対象国のカウントメトリクスも表示されます。
-
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"
}
}