AWSのApplication Load BalancerとCloudFront+WAFの統合機能を使ってみた
はじめに
2024 年 11 月 15 日から、AWS の ALB と CloudFront の統合機能が利用可能になりました。
本記事で試してみたいと思います。
参考ドキュメントはこちら
東京リージョンで作ってみる
まずは、コンソールから作ってみます。
通常通りに ALB を作成し、基本設定とネットワーク設定を行います。
「サービスの統合で最適化」にて、「Amazon CloudFront + AWS Web Application Firewall (WAF)」というオプションがあるので、これを選択します。
続いて、「Create a security group to block inbound traffic that does not originate from CloudFront」もチェックを入れてから、ロードバランサーの作成を行います。
続くと...エラーが出てしまいました。
WAFInvalidParameterException: Error reason: The scope is not valid., field: SCOPE_VALUE, parameter: CLOUDFRONT
理由としては、us-east-1 (バージニア北部)での実施が必要だったためです。
どうやら東京リージョンの ALB を作成しつつ、バージニア北部で WAF を作成できないようです。
参考
バージニア北部で作ってみる
同様な手順で、バージニア北部で ALB を作成します。
5 秒ほどで作成が完了しました。
作成されたものを確認してみる
ALB
ALB は指定された通りに作られたため、特に問題はありません。
セキュリティグループ
「Create a security group to block inbound traffic that does not originate from CloudFront」のチェックを入れていたため、指定されたセキュリティグループと別途に、「CloudFrontSG - ALB 名」というセキュリティグループが追加されます。
グループの設定を覗てみると、CloudFront からのみアクセスができるようになっています。
ソース pl-3b927c52 (com.amazonaws.global.cloudfront.origin-facing)の正体は、VPC > マネージドプレフィックスリストにあるものです。
CloudFront
作られた CloudFront は、デフォルトでは標準ログと cookie の設定が無効な状態です。
セキュリティ設定にて、WAF のコア保護のみ有効化されています。
オリジン設定は一般的なものです。
証明書などは全く未設定なので、プロトコルは HTTP のみになっており、本番用するのに設定変更が必要なのでご注意ください。
ビヘイビアは、デフォルトで /*.js
、/*.css
、/*.jpg
、/*.png
などの静的ファイルをキャッシュするようになっています。
エラーページ設定は特にされていません。
WAF
最後に作られた WAF を見てみましょう。
最低限なマネージドルールのみ有効化されています。
ログ設定もデフォルトで無効になっています。
片付け
ALB を作ると時になかなか便利ですが、削除する際にはどうなるか試してみたところ、
流石にそこまでやってくれないだろうと思いつつ、想定通りに ALB のみ削除され、他のリソースはそのまま残っていました。
おわりに
プロジェクトごとに ALB、CloudFront、WAF を構築するのはとても面倒で、
今回の統合機能があってとても嬉しいです。
しかし、想像するユースケースとしては、最速 MVP を作るためにささっと環境構築ぐらい、
ちゃんと運用していくためにはやはり細かい設定が必要になり、細かくコントロールするためにはこの統合機能はあまり活用されないのではないかと考えています。
特に IaC 運用が当たり前になっている時代なので、この統合機能を使うメリットはとても限定的ですね。
今後の改善やアップデートに期待しています。
Discussion