はじめに
今回はAzure Advent Calenderの1日目の記事になります。
https://qiita.com/advent-calendar/2020/azure
1日ですが、あまりひねりのない記事になります。
Front Door でGeoフィルタリングをやってみた話です。
ちょっと社内で聞かれたので検証した話です。
- ルートディレクトリは、全ての国からのアクセスを許可する。
- 特定ディレクトリは、日本からのみアクセスを許可する。
意外とFront Door + Geoフィルタリングの内容のブログが少ないようで、1年ぐらい前に書いてた記事がヒットして聞かれたようです。
https://level69.net/archives/26245
と、いうかFront DoorでGeoフィルタリングを行うことはあまり少ないと思います。
やるならば実際のところApplication Gateway+WAFで実装する方が多いと思います。
そのことを、ざっくり説明します。
AzureのWAFについて
AzureにはWAF(Web Application Firewall)という機能は単体ではありません。
そのため、使用方法については基本的に2種類になります。
- Front DoorにWAFのポリシーを適用して利用する
- Application GatewayにWAFのポリシーを適用して利用する
現在(2020/12/01)では上記に加えプレビュー機能としてCDNも利用できます。
では2種類の使い分けについてざっくりと説明すると複数のリージョンで利用するならFront Door、日本だけで利用してるならほぼWAFで賄えると思います。
課金体制についてはFront Doorは主にトラフィックやWAFポリシーの要求数などに重きを置いているのに対して、Application Gatewayは利用した時間分費用が掛かるようになっています。
https://azure.microsoft.com/ja-jp/pricing/details/frontdoor/?WT.mc_id=AZ-MVP-5002153
https://azure.microsoft.com/ja-jp/pricing/details/application-gateway/?WT.mc_id=AZ-MVP-5002153
また、WAFで利用できるポリシーは2種類あります。
- マネージドルール
- カスタムルール
また、マネージドルールはFront DoorかApplication Gatewayでも異なります。
Front DoorはMicrosoft独自のルールになります。
Application GatewayはOWASP 3.0になります。
Geoフィルタリングはカスタムポリシーにあたります。
少々異なりますがFront Door、Application Gatewayの両方にありWAF機能で利用できます。
詳しいWAFの詳細については下記を参照してください。
https://docs.microsoft.com/ja-jp/azure/web-application-firewall/overview?WT.mc_id=AZ-MVP-5002153
ではFront Doorの説明に行きます。
構成
Front Door だけの構成だと面白みに欠けるので下記のような構成にしています。
- ルートディレクトリは、全ての国からのアクセスを許可する。
- 特定ディレクトリは、日本からのみアクセスを許可する。
バックエンドとなる部分はいろいろと変えることがきます。
Front Doorのバックエンドに指定できるのは9つあります。
ここでいうパブリックIPはAzureのパブリックIPアドレスに紐づくものです。任意のIPを指定したい場合はカスタムを利用します。
つまりAzure以外のリソースも指定できることになります。
Front Doorでgeoフィルタリング
事前にバックエンドとなる仮想マシン、Application Gatewayは作成されていることが前提です。
最初にリソースの作成からFront Doorを作成していきます。
これは一意のあたいであり、他者が利用しているものは使えません。
次にルーティング規則を追加します。
今回はHTTPのみの構成のため、受け入れ済みのプロトコルと転送プロトコルは「HTTPのみ」を指定します。
次にリソースの作成からWAFポリシーを作成します。
グローバルWAF(フロントエンド)を指定し作成します。
防止と検知ですが、実際に動作する方が防止です。検知はログにのみ残したりする場合に利用します。
防止に設定します。
Geoフィルタリングの場合は管理されたルールはそのままです。
カスタムルールを設定します。
優先度を指定します。
Geoロケーションを選択し、次ではない、日本を選択します。
この設定で日本ではない(以外)となります。
新しい条件を追加します。
文字列でRequestUriを指定し、対象のディレクトリ文字列を指定します。
以上ですべての設定は完了です。
確認
確認作業としては、それぞれVPNなどを利用して海外からアクセスするのが良いと思います。
試しにアメリカからアクセスするとURL「/japanonly/」のページには接続できなくなります。
ルートディレクトリには制限をかけていないのでアクセスが可能です。
何もせず日本からアクセスした場合は両方にアクセスできることが確認できます。
まとめ
以前の設定に比べ簡単でした。Geoフィルタリングだけでなく他のWAFポリシーもいろいろと設定できるのでWAFを活用していくと良いでしょう。
また、Waf Charmのような運用自動化のSaaSなどもあるので組み合わせていくと運用も楽になっていくと思います。
以上