はじめに
こんにちは、もちもちMAXです。
AWSでS3+CloudFrontなどの構成で静的なコンテンツを配信する際、誰でもアクセスできる状態はマズイ、となることはありませんか?デモ用に作ってみただけなので限定的に公開したい、ということもあるかと思います。そんな時に使えるのがIPアドレス制限で、特定のIPアドレスからのアクセスのみ許可(or ブロック)ができます。これで安心して公開できますね。
今回はCloudFrontで配信するコンテンツにIPアドレス制限をかける方法を説明します。IPアドレス制限にはAWS WAFを用いておこないます。また、本記事ではCloudFrontによるコンテンツ配信方法については説明しません。配信方法も知りたい方はこちらの記事をご確認ください。
手順
まずはざっくりとした手順を紹介します。
1.IP setsの作成
2.web ACLの作成
3.web ACLをCloudFrontディストリビューションに適用
制限対象のIPアドレスの設定をおこない、どのような制限をかけるかを設定、それをCloudFrontに適用、といった流れです。それでは各手順の詳細を説明していきます。
IP setsの作成
最初におこなうのはIP setsの作成です。IP setsとはアドレス制限をかける対象のアドレス一覧で、グローバルIPアドレスを指定します。(おそらく)
作成方法ですが、まずAWS マネジメントコンソールからAWS WAFを開いてCreate IP set
をクリックします。
IP set name
には作成するIP setの名前を、Region
はGlobal(CloudFront)
を設定してください。名前は何でも良いですがCloudFrontに適用するためのIP setのRegion
はGlobal(CloudFront)
にしないといけないようです。そしてIP addresses
には制限をかけたいIPアドレスをCIDR表記で記載します。本記事では今使っているマシンを制限対象としてコンテンツにアクセスできないようにします。そのため、グローバルIPアドレスを知る必要があるのでこちらのサイトにアクセスしMy Public IPv4
と書いてあるところのアドレスをコピーしておきます。そしてIP addresses
にコピーしたアドレス/32
と記入します。/32
と書くことでコピーしたアドレス
のみを制限対象とすることができます。以上の設定が終わればCreate IP set
をクリックすることでIP setの作成が完了です。
※CIDR表記はIPアドレス/24
のようにサブネットマスクを表記する方式です。詳しくは調べてみてください。
web ACLの作成
次にweb ACLを設定していきます。
Resource type
はAmazon CloudFront distributions
を選び、Name
は適宜設定します。
次の画面ではRulesというものを設定します。Rulesは制限対象のIPアドレスに対してどのような処理をおこなうかを示すものです。Add my own rules and rule groups
を選択し新しいRulesを作成していきます。
Rule type
はIP set
、Name
は適宜設定、IP set
には先ほど作成したIP setを設定します。Action
はIP setをどのように処理したいかで選びます。今回はアクセスできないようにしたいのでBlock
を設定します。以上でRulesの作成は完了です。
最後にDefault action
としてAllow
を設定します。これによって制限対象のIPアドレス以外からのアクセスは許可される、ということになります。
ここまでの設定が完了すればあとはnextを連打してCreate web ACL
をクリックすればweb ACLの作成が完了です。
web ACLをCloudFrontディストリビューションに適用
最後に、AWS WAFのweb ACLsから作成したweb ACLを選択しAssociated AWS resources
からAdd AWS resources
を選択します。
適用したいCloudFrontディストリビューションを選択しAddをクリックします。
以上で、web ACLの適用が完了です。
確認
設定したCloudFrontディストリビューションにアクセスして、アクセスできないことが確認できればIPアドレス制限が成功していることになります。
ちなみに、CloudFrontディストリビューションの設定でWAFを有効にする
を選ぶと自動的にweb ACLが作成されます。ここには多くの一般的なウェブ攻撃から自動的に保護するためのRuleが適用されており、これにより簡単にセキュリティ対策が施せるようです。ご参考まで。
さいごに
本記事では、WAFを用いてCloudFrontディストリビューションにIPアドレス制限をかける方法を説明しました。当然のことですが、同じ方法でRulesを一部変更すれば特定のIPアドレスからのアクセスのみを許可する、といった使い方もできますので是非活用してくださいね。
最近、ブログと自作アプリのLPを立ち上げたので是非見てってください!
ブログ↓
https://mochinochikimchi.com
アプリLP↓
https://mochinochikimchi.com/applications/mealmotion/index.html