みなさん、こんにちは。サニービュー事業部の小寺です。
AWS WAFの地理的一致ルールのステートメントから特定の場所をブロックすることができるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/11/aws-waf-supports-granular-geographic-match/

AWS WAFの地理的一致のルールって?

地理的一致ルールステートメントとは、特定の国からのサイトへのアクセスをブロックしたり、特定の国からのアクセスのみを許可することができる機能です。
発信国に基づいて、ウェブリクエストを許可すれば、まず許可ができます。また、ブロックしたい国を次のステートメントに追加すればブロックができるようになります。

※ここで、注意したいのが、CloudFrontにWAFをアタッチしている場合です。CloudFrontの機能でも地理的制限があります。
CloudForntの地理的制限の機能を既に利用していて、国によるコンテンツへのアクセスをブロックすると、その国からのリクエストはすべてブロックされ、AWS WAFまでアクセスが届かないです。
なので、どこかの国はブロック、他は許可をしたい要件があるときはAWS WAFの地理的一致のルールを使った方が良い、ということになります。

本アップデートのメリット

今までの地理的一致ルールのステートメントでは、国レベルでアクセス制御を行っていました。利用者からの要望により、
国内の地理的リージョンをより細かく制御したいという要望があり、リージョンレベルでアクセスを制御できるようになっています。

(例)
・米国のテキサスからのリクエスト:awswaf:clientip:geo:region:US-TX
・オーストラリアのクィーンズランドからのリクエスト: awswaf:clientip:geo:region:AU-QLD

上記のようなラベルの注釈が自動的に付けることができるようになっています。

このアップデートのメリットはこのような詳細のルールを使って以下のようなことができる点です。
少し例えがAWS認定試験っぽいのですが、あなたはグローバル企業で働くセキュリティ担当者です。別の国のシステム開発者にのみアクセスをさせたいときにこのアップデートがフル活用できます。

特定の地域はブロックをかけながら、許可したいIPのみをアクセスさせることでセキュリティを保つことができます。

試してみる

(1)AWS WAF は、IP アドレスに基づき、リクエストの国と地域を決定します。
デフォルトでは、AWS WAF はウェブリクエストのオリジンの IP アドレスを使用します。ルールステートメント設定で、X-Forwarded-For などの代替リクエストヘッダーからの IP アドレスを使用するように AWS WAFの設定ができます。国コードの確認はこちらから。

(2)まずはルールを追加するには、
Rules を選択し、Add RulesAdd my own rules and rule groups の順にクリックします。

(3)まずBlockするためのルールを作ります。[If a request] (リクエストが次の場合) で、[matches the statement] (ステートメントに一致) を選び、[Choose an inspection] (検査の選択) オプションで、[Originates from a country] (国から発信) を選択します。

(4)次は許可するための「Allow」のルールです。同様にして、ルールを作っていきます。リージョンでは「北海道」を許可にしています。

(5) 作った2つのルールを「test-rule1」→「test-rule2」の評価順にします。まずはBlockして、次に通したいIPを通す仕組みなので、評価順が重要です。

費用

本アップデートを利用するのに、追加費用は不要です。
AWS WAF が利用可能なすべての AWS リージョン、および Amazon CloudFront、Application Load Balancer、Amazon API Gateway、AWS AppSync、Amazon Cognitoなどサポート対象の各サービスで利用できます。