こんにちは!西川です!
みなさんは、ALB(Application Load Balancer)のセキュリティグループでWebアプリケーションへのアクセスをIPアドレス制限しているときに、「許可したいCIDR表記が細かすぎてルール数の上限に達しそうになった」という経験はないでしょうか?
私はあります。
今回、ALBとAWS CloudFront、そしてAWS WAFを組み合わせることでこの上限の課題をスマートに解決できたため、その具体的な構成と設定内容をまとめます。
この記事が、同じような悩みを持つ方の参考になれば幸いです。
本記事でわかること
- ALBでインバウンドIP制限を行う際のIP数の上限の課題の解決例
- ALBやCloudFrontについて
各サービスについて
今回使用する各サービスや機能について簡単に説明します。
【CloudFrontとは】
AWSが提供するCDN(Content Delivery Network)サービスです 。
一般的にはコンテンツ配信で利用されますが、AWS WAFと組み合わせることでWebアプリケーションのセキュアな入り口としても機能します 。
【CloudFrontのVPCオリジン機能とは】
CloudFrontからVPC(プライベートネットワーク)内のリソースへ安全に接続するためのオリジン設定です 。
これにより、インターネットに公開していない(パブリックIPを持たない)プライベートサブネット内の内部向けALBへのルーティングが可能になります 。
【ALBとは】
HTTPやHTTPS通信を対象としたロードバランサーです 。
OSI参照モデルのL7(アプリケーション層)での柔軟なルーティングが可能で、多くのWebシステムで広く採用されています 。
【セキュリティグループとは】
EC2インスタンスやALBなどに適用する仮想ファイアウォールです 。
インバウンド(受信)およびアウトバウンド(送信)の通信制御を一元的に行えます 。
【WAFとは】
Webアプリケーションへの通信を検査し、不正なリクエストを遮断するためのセキュリティサービスです 。
IPアドレスだけでなく、リクエスト内容、ヘッダー情報、URIなどを条件に、通信の許可・ブロック・カウントといった柔軟な制御が可能です 。
上限(クォータ)について
【セキュリティグループのルール数の上限】
セキュリティグループのルール数の上限は、以下の文章が分かりやすいと思います。
Amazon Elastic Compute Cloud (Amazon EC2) インスタンス内の Elastic ネットワークインターフェイスの数により、各セキュリティグループでの最大ルール数が決まります。ネットワークインターフェイスには、1,000 個のルール、5 個のセキュリティグループという最大クォータが適用されます。各セキュリティグループでは、60 件のインバウンドルールと 60 件のアウトバウンドルール (合計 120 件) を使用できます。デフォルトでは、各ネットワークインターフェイスには、最大 300 件のインバウンドルールと 300 件のアウトバウンドルールを設定できます。
https://repost.aws/ja/knowledge-center/increase-security-group-rule-limit
つまり、1つのALBに対してクォータ(上限)の緩和申請を行ったとしても、インバウンドに設定できるルール数は最大1,000個です 。
ルールはCIDR表記で設定しますが 、接続元のIPアドレス(CIDR)が細かく分散していると、ルール数が膨れ上がって上限を超えてしまうリスクがあります 。
【WAFのIPSetの上限】
1つのAWS WAFのIPSetに登録できるCIDR表記のIPアドレスの上限は10,000個です 。
さらに多くのIPアドレスを制御したい場合は、複数のWAFルールを組み合わせることで拡張できます 。
これにより、セキュリティグループの上限を遥かに超える大量のIPアドレスを設定できます。
IP セットあたりの CIDR 表記の IP アドレスの最大数:10,000
https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/limits.html
構成
今回の構成イメージとポイントは以下です。
【構成イメージ】

【ポイント】
①CloudFrontに紐づけたWAFのIPSetでIPを制限する。
②CloudFrontのVPCオリジン機能を使用してALBに接続する。
③CloudFrontのVPCオリジン機能を使用するため、VPCにインターネットゲートウェイ(IGW)が必要。
④ALBはプライベートサブネットに内部向けで作成する。
ALBのセキュリティグループのインバウンドルールは、CloudFrontのマネージドプレフィックスのみ許可し、CloudFront経由のみアクセスを許可する。
設定方法
設定方法のポイントを解説します。
(1) ALBはプライベートサブネットに内部向けで作成する

(2) CloudFrontのVPCオリジン機能を使用してALBに接続する
まずはVPCオリジンを作成します。


CloudFrontのディストリビューションを作成します。
オリジンの設定時に作成済みのVPCオリジンを設定します。
※VPCオリジンを使用するためには、CloudFrontのプランを「Pay as you go」または「Business 以上」にする必要があります。

(3) ALBのセキュリティグループのインバウンドルールは、CloudFrontのマネージドプレフィックスのみ許可し、CloudFront経由のみアクセスを許可する。
インバウンドルールのソースで「com.amazonaws.global.cloudfront.origin-facing」を選択します。

まとめ
今回は、ALBの前段に配置したCloudFrontとWAFでIPを制限する構成についてご紹介しました。
上記の設定を行うことで、より多くのIPアドレスに対して制御を行うことが可能となります。



コメント