CloudFrontを導入した際に、ついでにWAF(Firewall)を設定しておく事があると思います。今回はCloudFront+WAF構成の手順概要について記録しておきます。
見出し
WAFとは
WAFとはWeb Application Firewallの略で、Firewallなんですが、アプリレイヤでも解析出来る優れものです。
条件によりリクエストの許可・拒否・カウンタを使用出来ます。
条件には、IP、国、header、リクエストの文字列・長さ、SQLインジェクション、XSSなどが設定出来ます。項目が多いので結構設定は難しめの方だと思われます。
https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/what-is-aws-waf.html
構成手順
今回はIPの許可リストを作成したい場合を想定して記載します。
CloudFrontはグローバルな為、WAFは全てvirginiaリージョンで作成します。
WAF ipset
WAFのipsetを設定します。複数のipでも可能ですし、CIDR形式でも指定可能です。許可するIPを記載します。
WAF Rule
WAFのRuleを設定します。デフォルトでBLOCKし、今回作成したipsetをALLOWとして指定します。
WAF Web ACL
WAFのWeb ACLを設定します。デフォルトでBLOCKし、今回作成したRuleをALLOWとして指定します。
CloudFront
作成したWAF Web ACLを指定してdistributionを作成します。
以上が概要構成です。
おまけ
Terraform resourceリスト
1 2 3 4 |
aws_waf_ipset aws_waf_rule aws_waf_web_acl aws_cloudfront_origin_access_identity |
CloudFrontまとめ記事
以下にまとめました。