こんにちは。クイックSREチームのみっちーです。
今日は、弊社で設定しているCloudFrontのIP制限方法をご紹介したいと思います。
開発環境等で「ユーザには見せたくないけど、関係者だけは見れるようにしたい!」と言った話にも、AWS WAFを使えば簡単に対応できます。
お困りの方はぜひ試してみて下さい!
それではさっそく行ってみましょ~ ✧(・ㅂ・)و
前提
CloudFrontに対して、IPアドレスによるアクセス制限を行いたい。
アクセス制限の対象となるCloudFrontは、事前に作成済みである。
手順概要
必要な手順は大まかに以下の2つです。
手順詳細
1. [AWS WAF] ACLの作成
AWSコンソールにログインし、
「Services」->「WAF & Shield」をクリックします。
続いて、「AWS WAF」->「Configure web ACL」の順に選択して、WAFの設定画面に進みましょう。
Step 1:Name web ACL
ここでは、ACLの名称を定義します。細かい設定はこの後で順番にやっていきます。
Region: 「Global(CloudFront)」を選択します。
※ ここを間違えると、CloudFrontにattachできなくなります。注意です。
上記以外は特に気にしなくてOKです。次へ進みましょう!
Step 2:Create conditions
続いて、IPaddressのlist設定を行います。
ここで作成したlistを元に、Whitelistにするか、Blacklistにするかを決めていきます。
※ 今回はWhitelistです。
IP match conditionsの「Create conditions」をクリックします。
すると以下の画面が出てくるので、それぞれ設定を行いましょう。
Name: 任意のlist名を入力します。
※ ここでは、allow-ip-addressとしています。Address: 許可したい「IPアドレス」または「範囲」を記載し、「Add IP address or range」をクリックします。
※ 記載できるサブネットマスクの範囲は、/8, /16, /24 または、/32 です。
※ ここでは、111.123.123.1/32 を設定しています。Filters in IP match conditionに、追加したIPアドレスが表示されていることを確認します。
問題なければ、次へ進みましょう。
Step 3:Create rules
先程作成したIPaddressのlistを元に、Filtering Rules(Whitelistにするか、Blacklistにするか)を決めていきます。
※ 今回はWhitelistとして設定します。
まずはCreate ruleをクリックして、「Filtering Rules」を作成します。
Name: 任意のFiltering Rules名を入力します。
※ ここでは、test-ruleとしています。Add conditions: 「does」、「originate from an IP address」の順に選択し、
先程作成したlistの「allow-ip-address」を対象に選択します。
つぎに、作成したFiltering Rulesを適用する条件を指定します。Add rules to a web ACLのRulesで、
先程作成したFiltering Rules「test-rule」を選択します。Action: 「Allow」を選択します。
※ Filtering Rules(test-rule)にマッチングした場合にどうするか、を定義します。Default action:「Block all requests…」を選択します。
※ Filtering Rules(test-rule)にマッチングしなかった時にどうするか、を定義します。
終わったらReview and createを押して、最終確認です。
確認して問題なければ作成しましょう。
次はいよいよCloudFrontにACLの設定をattachします!
2. 作成したWAFのACLを、CloudFrontにattachします。
AWSコンソールにログインし、「Services」->「CloudFront」をクリックします。
次に、アクセス制限をかけたいCloudFront Distributionを選択して、
General の「Edit」をクリックします。
Distribution Settings
AWS WAF Web ACLで、先程作成したACL(test-ACL)を選択します。
問題なければ、下段のYes Editをクリックして反映させましょう。
なお、設定変更直後はStatusがIn Progressとなり、この間は設定が反映されていません。
しばらく(20~40分程度)して反映完了すると、StatusがDeployedになります。
アクセス確認
反映完了後(StatusがDeployedになる)、適当なファイルにアクセスしてみましょう。
Whitelistに記載の無いIPアドレスからのアクセスであれば、
下図のようにErrorとなるはずです。
以上で設定は完了です。
いかがでしたか。AWS WAFを使えば、CloundFrontにも簡単に制限が掛けられますね。
不慮の事故を防ぐという意味でも、念のために設定しておいて損は無いのかなと思っています。