【目次】

  1. 1. はじめに
  2. 2. CloudFrontに新しいWeb ACLを紐づける方法
  3. 3. CloudFrontに既存のWeb ACLを適用したい場合
  4. 4. Web ACLの解除について
  5. 5. WafCharm との併用について
  6. 6. おわりに

1. はじめに

2023年5月10日に CloudFrontのコンソール上でWeb ACLの設定・適用ができるようになりました。

CloudFrontディストリビューションにWeb ACLを紐づけて防御したい場合、これまではCloudFrontとAWS WAFを個別に設定した後、Web ACLの「Associated AWS resources」からCloudFrontを紐づける必要がありました。
今後は、CloudFrontディストリビューションを作成するタイミングで簡単にWeb ACLを適用できるようになります。

Amazon CloudFront announces one-click security protections

2. CloudFrontに新しいWeb ACLを紐づける方法

CloudFrontディストリビューションを作成または存在するディストリビューションの編集画面を開くと、「Web Application Firewall (WAF)」というセクションが表示されます。

このセクションにて「Enable security protections」をクリックすると、CloudFrontの作成と同時もしくは編集完了時にWeb ACLも作成されます。

Web ACLに適用されるルールの動作状況をあらかじめ確認する場合には、「Use monitor mode」オプションをクリックしてONにしておきます。

このオプションをONにすることで、すべてのルールがCOUNTモードで適用されます。

CloudFrontディストリビューションの作成/編集を完了すると、GeneralタブのSettings以下にて「CreatedByCloudFront」から始まるWeb ACLが表示されます。

Web ACLの名前をクリックすると、Web ACL画面が開きます。
自動的に適用されるルールは、AWSが提供するマネージドルールのうち、以下の3つです。
詳細については、リンク先のAWS公式ドキュメントをご参照ください。

Web ACL作成時に「Use monitor mode」をONにすると、Actionは「Override rule group action to count」として登録されます。

動作確認後、ルールアクションをBLOCKにしたい場合は対象のルールを選択し、EditしてからOverrideを解除します。

3. CloudFrontに既存のWeb ACLを適用したい場合

すでにWeb ACLが存在している場合は、そちらを選択することも可能です。

「Web Application Firewall (WAF)」というセクションにて「Enable security protections」をクリックした後、「Use existing WAF configuration」を選択します。

Global (CloudFront) リージョンで作成したWeb ACLの一覧が表示されますので、作成するCloudFrontディストリビューションに紐づけたいWeb ACLをクリックします。

※Web ACLはリージョンごとに作成する必要があるため、ALB等他のサービスで使用しているWeb ACLをCloudFrontディストリビューションに紐づけることはできません。

4. Web ACLの解除について

Web ACLとの紐づきを解除したい場合は、CloudFrontディストリビューションの編集画面から行うことも可能です。
編集画面は、GeneralタブのSettings以下にあるEditボタンを押して開きます。

WAFに関する設定項目が表示されますので、有効/無効の切り替えを行います。

ここでAWS WAFによる防御を解除したとしても、Web ACLとCloudFrontディストリビューションの紐づきが解除されるのみとなり、Web ACL自体は削除されません。
Web ACLも不要な場合には、解除後にAWS WAFコンソールにてWeb ACLを削除する必要があります。

一度解除した後、ディストリビューションの編集画面を開くと再度「Enable security protections」という項目が表示されますが、こちらはあくまで新規作成のための項目となります。
そのため、過去に作成した「CreatedByCloudFront」から始まるWeb ACLが再度適用されるといったことはありません。
「Enable security protections」を実行した回数分「CreatedByCloudFront」から始まるWeb ACLが作成されますのでご注意ください。

また、CloudFrontディストリビューションの編集画面から存在するWeb ACLを紐づける場合、「CreatedByCloudFront」から始まるWeb ACLについては、選択肢として表示されないようです。
誤って紐づきを解除してしまうなど、過去に作成した「CreatedByCloudFront」から始まるWeb ACLを再度紐づけ直したい場合には、AWS WAFコンソールの「Associated AWS resources」から実施してください。

なお、CloudFrontディストリビューションの編集画面からは紐づけるWeb ACLを切り替えることはできないため、切り替えについても引き続きAWS WAFコンソールのWeb ACL画面にある「Associated AWS resources」から行う必要があります。

5. WafCharm との併用について

WafCharmについては、CloudFrontコンソールからWeb ACLを新規作成する方法、あるいはWeb ACLを先に作成してから紐づける方法のどちらでもご利用いただけます。

1つ目の「CloudFrontコンソールからWeb ACLを新規作成する方法」の場合、上記の通りあらかじめAWSが提供するマネージドルールが投入されますので、それに追加してWafCharmルールが適用される形となります。

使用できるWCUの枠が5000になっておりますので、WafCharmルールの適用は可能ですが、使用WCUが1500を超える可能性があります。
AWS WAFの仕様により、1500WCUを超えて使用している場合にはリクエスト数等に応じて追加費用が発生する場合がありますので、もし1500WCU以内に収めたいといった場合にはAWSのマネージドルールを削除してからWafCharmの適用をお願いいたします。

※2023年5月時点では、WafCharmはルール適用時に1100WCUを使用します。ただし、AWS WAF側の影響により、共通するリソース分が調整される場合があります。適用時は1100WCU使用しますが、ルール適用後は使用WCUが若干減る場合があります。

先にWeb ACLを作成してからCloudFrontディストリビューションに紐づける方法の場合には、AWSが提供するマネージドルールが自動的に投入されることはありませんので、上記のような影響はございません。
また、WafCharmルールを適用するタイミングは任意でお選びいただけます。

6. おわりに

CloudFrontディストリビューション作成時にWeb ACLを作成・紐づけられるようになったことで、複数の画面を行き来しなくても簡単に防御できるようになりました。

ただし、独自の命名規則でWeb ACL名をつける場合など、設定をより柔軟に行う場合や、関連付けるWeb ACLを切り替えたいといった場合には引き続きAWS WAFコンソールが必要になりますので、どちらの操作も慣れておくと良さそうです。