AWS Cloudfrontの地域制限機能を使って特定地域からのアクセスを遮断する
インフラエンジニアの寺岡です。
今回はAWSのCloudfrontを使って
特定地域からのアクセスを遮断する設定をやってみました。
設定自体は簡単ですが実用性ありだと思いましたのでまとめておきます。
Amazon CloudFront CDN (コンテンツ配信とストリーミング) | AWS
■Cloudfrontとは?
CloudfrontはAWSのCDN(Contents Delivery Network)サービスで
世界中に「エッジロケーション」と呼ばれる
コンテンツを配信するためのサーバが設置されています。
この「エッジロケーション」を使うことで
ユーザーがURLをリクエストしたときにIPアドレスから地域情報を割り出して
一番近い場所にあるサーバからレスポンスを返すという仕組みになっています。
この仕組みのおかげで、EC2やS3などのサービスの前にCloudfrontを設置するだけで
離れた場所にあるサーバにアクセスをしにいく必要がなくなるので
簡単にWebサイトを高速化することができます。
■地理制限機能ってなんだろう?
タイトルで出てきた「地理制限機能」を使ってみます。
Cloudfrontのデフォルトの設定だと
ユーザーがいる場所に関係なくリクエストされたコンテンツを配信します。
これはこれで便利でありがたいのですが
- 特定地域から頻繁に攻撃を受けるのでアクセスを制限したい
- 著作権上の理由からアクセスが許可されていない国がある
などの理由があったときに困ります。
こんなときにCloudfrontの機能で国レベルでアクセスを許可もしくは禁止をすることができます。
これが地域制限機能です。
実際に設定して使ってみましょう。
■実際に使ってみよう
あらかじめS3のコンテンツを配信するための
Cloudfrontのディストリビューションを作成しておきました。
AWS S3で静的サイトの配信をやってみた | 株式会社ビヨンド
S3に設置しているコンテンツを配信する設定にしている場合
Orginという項目がS3のエンドポイントになっています。
Domain Nameの項目を後からブラウザでアクセスするのでメモしておきます。
左側にチェックボックスがあるのでチェックして
Distribution Settingsをクリックします。
ディストリビューションの設定画面になるので
Restrictionsタブを選択しましょう。
Geo Restrictionという項目がDisebledで無効になっているはずです。
これを有効にすることで地理制限機能が使えるようになります。
左のチェックボックスにチェックを入れてEditをクリックしましょう。
Geo-Restrictionの設定画面になります。
Enable Geo-Restrictionという項目がNoになっているはずなので
Yesを選択すると新たに項目が2つ増えるはずです。
Restriction Typeでは、制限を行うタイプを選択します。
それぞれについて軽くまとめると・・・
項目名 | 概要 | |
---|---|---|
Whitelist | 「ホワイトリスト」はアクセスを許可したい国を設定し、リストに含まれているいずれかの国にユーザーがいる場合のみコンテンツへのアクセスを許可します。 | |
Blacklist | 「ブラックリスト」はアクセスを禁止したい国を設定し、リストに含まれているいずれかの国にユーザーがいる場合コンテンツへのアクセスを禁止します。 |
今回は、特定地域からのアクセスを禁止したいので「ブラックリスト」を使います。
Blacklistを選択してCountries項目で国を選択します。
アクセスが禁止されるかを確認するために日本を選択してみましょう。
左の国一覧からJP(日本)を選択してADD>>ボタンをクリックします。
すると右側に追加されるはずです。
この状態でYes, Editをクリックして編集を完了させます。
Cloudfrontは設定が反映されるまでに少し時間がかかります。
ディストリビューションの一覧に戻って
statusがin progressからdeployedになるまで待ちましょう。
ブラウザからcloudfrontのエンドポイントにアクセスしてみます。
はい、見事に自分で作成したCloudfrontにブロックされました。
いかがでしたでしょうか。
これだけの手順でアクセスの制限が行えますし
使って損はない機能だと思いますので是非是非試してみてください。
ではまたの機会に、ありがとうございました。