【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

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をクリックします。

2016-09-10_03h06_58

ディストリビューションの設定画面になるので
Restrictionsタブを選択しましょう。
Geo Restrictionという項目がDisebledで無効になっているはずです。
これを有効にすることで地理制限機能が使えるようになります。
左のチェックボックスにチェックを入れてEditをクリックしましょう。

2016-09-10_01h42_05

Geo-Restrictionの設定画面になります。

2016-09-10_03h15_41

Enable Geo-Restrictionという項目がNoになっているはずなので
Yesを選択すると新たに項目が2つ増えるはずです。
Restriction Typeでは、制限を行うタイプを選択します。
それぞれについて軽くまとめると・・・

項目名 概要
Whitelist 「ホワイトリスト」はアクセスを許可したい国を設定し、リストに含まれているいずれかの国にユーザーがいる場合のみコンテンツへのアクセスを許可します。
Blacklist 「ブラックリスト」はアクセスを禁止したい国を設定し、リストに含まれているいずれかの国にユーザーがいる場合コンテンツへのアクセスを禁止します。

今回は、特定地域からのアクセスを禁止したいので「ブラックリスト」を使います。
Blacklistを選択してCountries項目で国を選択します。
アクセスが禁止されるかを確認するために日本を選択してみましょう。
左の国一覧からJP(日本)を選択してADD>>ボタンをクリックします。
すると右側に追加されるはずです。
この状態でYes, Editをクリックして編集を完了させます。

2016-09-10_03h38_59

Cloudfrontは設定が反映されるまでに少し時間がかかります。
ディストリビューションの一覧に戻って
statusがin progressからdeployedになるまで待ちましょう。

2016-09-10_03h36_56

ブラウザからcloudfrontのエンドポイントにアクセスしてみます。

2016-09-10_03h40_42

はい、見事に自分で作成したCloudfrontにブロックされました。

いかがでしたでしょうか。
これだけの手順でアクセスの制限が行えますし
使って損はない機能だと思いますので是非是非試してみてください。
ではまたの機会に、ありがとうございました。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
2,691
X facebook はてなブックマーク pocket
【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

この記事をかいた人

About the author

寺岡佑樹

2016年ビヨンド入社、現在6年目のインフラエンジニア
MSPの中の人として障害対応時のトラブルシューティングを行いながら
AWSなどのパブリッククラウドを用いたインフラの設計/構築も行っている。
最近はDockerやKubernetesなどのコンテナ基盤の構築や
運用自動化の一環としてTerraformやPackerなどのHashicorpツールを扱うことが多く
外部の勉強会やセミナーで登壇するEvangelistの役割も担っている。

・GitHub
https://github.com/nezumisannn

・登壇経歴
https://github.com/nezumisannn/my-profile

・発表資料(SpeakerDeck)
https://speakerdeck.com/nezumisannn

・所有資格
AWS Certified Solutions Architect - Associate
Google Cloud Professional Cloud Architect