はじめに
CloudFrontを利用した構成で、国単位のアクセス制限を行いたい場合、各ディストリビューションの「地理的制限」から設定することができます。
デフォルトでは、「制限なし」となっており、制限を行う場合は、「許可リスト(ホワイトリスト)」設定、又は「ブロックリスト(ブラックリスト)」設定を行うことができるので、試してみました。
※IP単位のアクセス制限を設けたい場合は、AWS WAFを組み合わせる必要があります。
設定方法
AWSマネージメントコンソールのCloudFrontから制限をかけたいディストリビューションを選択し、「地理的制限」タブの「編集」を開く。
特定の国からのみアクセスを受け付けたい場合は、「許可リスト」、特定の国以外のアクセスを受け付けたい場合は、「ブロックリスト」を選択する。
(例):「日本」以外からのアクセスは受け付ける場合は、ブロックリストで「日本」を選択する
※タイミングにもよるが反映までには1分程度かかる。
動作確認
制限した国から該当ディストリビューションにアクセスしてみて、ステータスコード403になれば制限が有効になっている。
■制限設定前
■制限設定後
適切に設定されている場合は、403が返されるようになります。
まとめ
Webサーバで国単位の制限を設定する場合には、GeoIPやhtaccess、iptablesといったものを組み合わせて実現する必要があるので、ある程度の知識が必要となります。
CloudFrontを利用している場合は、比較的簡単に実装できるため、簡単に国単位の制限を設定したいのであればお勧めです。
ただ、地理的制限設定は国単位ではできますが、個別のIP制限をCloudFrontで設定したい場合は、AWS WAFと組み合わせる必要があるため、
実現したいことに応じて実装が変わるのを覚えておく必要があります。