【目次】

  1. 1. はじめに
  2. 2. ALB作成時にCloudFrontとWeb ACLを同時に作成する方法
  3. 3. 作成されるリソース
  4. 4. おわりに

1. はじめに

2024年11月15日に、ALBの作成時にCloudFrontとWeb ACLの設定ができるようになりました。

過去にはALB作成時にWeb ACLを作成しアタッチする機能がリリースされましたが、今回はCloudFrontも同時に作成することができるようです。
AWS Application Load Balancer announces CloudFront integration with built-in WAF

2. ALB作成時にCloudFrontとWeb ACLを同時に作成する方法

ALBを作成する画面を開くと、[Optimize with service integrations] 以下に [Amazon CloudFront + AWS Web Application Firewall (WAF)] というセクションが表示されます。

[Apply application layer acceleration and security protections – in front of the load balancer] にチェックを入れることで、新規でCloudFrontおよびWeb ACLの作成が可能です。

[Apply application layer acceleration and security protections – in front of the load balancer] にチェックを入れると、[Add a security group to your load balancer to ensure your HTTP listener allows inbound traffic originating from CloudFront.] というチェックボックスも表示されます。

こちらはALBの作成時にセキュリティグループを作成し、ALBに対してCloudFrontからのアクセスのみを許可するためのInboundルールが追加されるようです。Best practiceと記載のある通り、CloudFrontをALBの前段に置く場合、ALBへのCloudFrontからのアクセスのみを許可したほうが良いための設定かと思います。

セキュリティグループは [Apply application layer acceleration and security protections – in front of the load balancer] にチェックを入れた場合のみ作成されますので、不要な場合や、自身で作成するセキュリティグループにすでに同様のInboundルールが存在する場合などは、 [Apply application layer acceleration and security protections – in front of the load balancer] にチェックを入れる必要はないでしょう。

なお、以前リリースされたALB用のWeb ACLをワンクリックで作成・適用する機能については、これから作成するALBに既存のWeb ACLをアタッチすることもできましたが、今回はCloudFrontも同時に新規作成した上で、そのCloudFrontにWeb ACLをアタッチする方式のため、既存のWeb ACLを流用することはできません。

3. 作成されるリソース

チェックボックスにチェックを入れるだけで簡単に作成ができる反面、どこにどのリソースが作成されたのかを判断するのが少し難しくなりました。
ここでは、ALB、CloudFront、Web ACLおよびセキュリティグループの概要を見てみたいと思います。

ALBの作成完了後、Integrationsタブの [Amazon CloudFront + AWS Web Application Firewall (WAF)] セクションを開くとCloudFrontとセキュリティグループの情報が記載されます。

sgから始まるセキュリティグループへのリンクをクリックすると、自動で作成されたセキュリティグループの内容が確認できます。
Inbound rulesを見ると、CloudFrontのPrefixリストにのみALBへのアクセスが許可されているようなルールが適用されています。このPrefixリストはAWSが管理するリストで、CloudFrontのIPアドレスが登録されているようです。
※Securityタブからも当該ALBに紐づくセキュリティグループの確認が可能です。

Security dashboardのリンクをクリックすると、CloudFrontのSecurity dashboard画面が開きます。
どういったカテゴリの保護が有効になっているかの確認やCloudFront側の国別制限の設定、またAWS WAFが出力するWAFログの出力設定などもここから行えるようです。

ただし、Web ACLを開けるようなリンクなどはありませんでした。

なお、CloudFrontのSecurity dashboardからWAFログ出力を有効にした場合、自動的にCloudWatch LogsにWAFログが出力されます。S3バケットに直接出力したい場合や、Data Firehoseを経由したいといった場合には、Web ACLの画面を開いてロギング設定を行う必要がありそうです。

また、自動的にいくつかのフィールドがマスキングされています。

上記の通り、作成されたWeb ACLを開く方法はないように見受けられますので、Web ACLについては別途確認する必要があります。AWS WAF画面を開き、リージョンを [CloudFront (Global)] に変更してから [CreatedByALB-] という名称で始まるWeb ACLを探します。
※Web ACL名の末尾は固有の英数字が記載されています。

もし同じような名前のWeb ACLが複数ある場合には、Web ACLを開いた上で [Associated AWS resources] の箇所を開くとどのCloudFrontにアタッチされているかの確認ができます。

4. おわりに

今回は以前のワンクリックでWeb ACLを作成できる機能に引き続き、ワンクリックでCloudFrontおよびWeb ACLの作成が可能な機能のリリースが行われました。

ALBの前段にCloudFrontを配置したい場合は、まとめて作成できるというメリットがあります。CloudFrontはCDNサービスですので、コンテンツ配信の高速化が見込まれます。また、CloudFrontを挟むことによってオリジン側への負荷軽減やフィルタリング処理によるセキュリティの向上などのメリットもあります。
コストとのバランスは考慮すべきですが、メリットも多いのでこの機会に検討してみてもいいかもしれません。

ただし、どういったリソースが作成されているかの管理が難しくなる面もあります。名称もものによっては自動でつけられてしまうため、リソースやわかりやすい名前の管理が重要な場合には、引き続き個別に作成したほうが良い場合もあるかと思います。