Cloud Service
Azure Application Gateway
HTTP/HTTPS を終端しURLやホストで振り分ける Azure のL7ロードバランサ。WAF を統合でき、AWS の ALB と AWS WAF の組み合わせに相当する。
- 1.HTTP/HTTPS 専用のL7ロードバランサで、URL やホストで振り分ける。
- 2.WAF_v2 SKU で OWASP ベースの Web 攻撃防御を一体化できる。
- 3.AWS の Application Load Balancer に AWS WAF を組み合わせた構成に相当。
解決する課題
Azure Application Gateway は、HTTP/HTTPS リクエストの中身を理解して振り分けるレイヤー7(アプリケーション層)のロードバランサです。単純な IP・ポート分散では足りない、Web アプリ特有の要件を一台で解決します。
- URL のパスやホスト名でバックエンドを振り分けたい(マイクロサービスや複数サイトの集約)
- TLS の暗号化・復号をバックエンドに負わせず、ゲートウェイで TLS 終端したい
- SQL インジェクションや XSS などのWeb 攻撃を前段でブロックしたい(WAF)
- 同一ユーザーを同じバックエンドに固定するセッションアフィニティが必要
- ヘルスプローブで異常なバックエンドを自動的に切り離したい
L4(TCP/UDP)の単純分散で十分なら Azure Load Balancer、グローバル配信やエッジ WAF が要るなら Azure Front Door が候補になります。Application Gateway は「リージョン内の L7 + WAF」を担う中核です。
主要概念と用語
- リスナー (Listener): フロントエンド IP・ポート・プロトコル(HTTP/HTTPS)の待ち受け口。HTTPS リスナーには証明書を紐づけて TLS 終端する。ホスト名で振り分ける場合はマルチサイトリスナーを使う
- ルーティング規則 (Rule): リスナーが受けた要求を、どのバックエンドプールへどう送るかを決める設定。基本規則とパスベース規則がある
- バックエンドプール (Backend pool): 振り分け先の集合。VM、仮想マシンスケールセット、App Service、IP/FQDN などを登録できる
- HTTP 設定 (Backend settings): バックエンドへの接続プロトコル・ポート・タイムアウト・プローブ・Cookie アフィニティなどをまとめた設定
- パスベースルーティング: URL パス(例として商品系のパスと画像系のパス)で別々のバックエンドへ振り分ける
- マルチサイトホスティング: 1つのゲートウェイで複数ドメインをホスト名により振り分ける
- TLS 終端 / エンドツーエンド TLS: ゲートウェイで復号して検査する方式と、バックエンドまで再暗号化する方式
- 書き換え (Rewrite): HTTP ヘッダーや URL を要求・応答時に書き換える機能
- WAF (Web Application Firewall): WAF_v2 SKU で提供される L7 の攻撃防御。OWASP Core Rule Set などのマネージドルールに対応
- SKU: 現行は v2 世代の Standard_v2(WAF なし)と WAF_v2(WAF あり)。自動スケールとゾーン冗長に対応
仕様・制限・クォータ
- 現行 SKU は v2 世代(Standard_v2 / WAF_v2)。旧 v1 は新規構成では非推奨で、自動スケール・ゾーン冗長・静的 VIP などは v2 の特徴
- Application Gateway は専用サブネットが必要で、他のリソースと共有できない。十分な数の IP を確保できるサイズのサブネットを割り当てる
- HTTP/HTTPS(および HTTP/2、WebSocket)に対応。任意の TCP/UDP プロトコルの分散には対応しないため、その用途は Load Balancer を使う
- TLS 終端の証明書は直接アップロードのほか Key Vault 連携で集中管理・自動ローテーションできる
- WAF はマネージドルールセット(OWASP ベースの Core Rule Set やボット対策ルール)に対応し、検出モードと防御モードを切り替えられる
- インスタンス数(キャパシティ)、リスナー数、バックエンドプール数、規則数などにサブスクリプション/リージョン単位の上限があり、必要に応じて引き上げ申請が可能。具体的な上限値は変動するため最新の公式ドキュメントで確認する
内部の仕組み
Application Gateway はフルリバースプロキシとして動作します。L4 の Load Balancer がフローをそのまま転送するパススルー型なのに対し、Application Gateway はクライアントとの接続を一度終端し、HTTP 要求の中身(パス・ホスト名・ヘッダー・Cookie)を解釈してから、新しい接続でバックエンドへ要求を送ります。
- 受信時に TLS を終端し、平文の HTTP として WAF 検査やルーティング判定を行う。バックエンドへは HTTP のまま送るか、エンドツーエンド TLS で再暗号化する
- リスナーが要求を受け、ルーティング規則に従ってパスやホスト名で対象バックエンドプールを決定する
- ヘルスプローブでバックエンドの正常性を判定し、健全なインスタンスにのみ要求を送る。既定プローブのほかカスタムプローブで判定パスや期待ステータスを指定できる
- v2 SKU は負荷に応じてインスタンスを自動スケールし、複数の可用性ゾーンに分散配置してゾーン障害に耐える
Application Gateway は HTTP/HTTPS の中身を見て振り分ける L7 プロキシです。TCP/UDP の超低遅延なパススルー分散や非 HTTP プロトコルが必要な場面では Azure Load Balancer を使います。両者は競合ではなく、用途で使い分ける関係です。
設計パターン / ベストプラクティス
- WAF_v2 を Web の前段に配置し、L7 ルーティングと OWASP ベースの防御を一体で運用する
- TLS はゲートウェイで終端し、証明書は Key Vault に集約して自動ローテーションする。機密性が高い経路はバックエンドまでエンドツーエンド TLS にする
- 多層構成: インターネットからゲートウェイ(L7・WAF)を経て、内部の Load Balancer(L4)やアプリ層へ流す。境界で攻撃をブロックし内部はシンプルに保つ
- ゾーン冗長で配置し、十分なキャパシティの最小・最大インスタンス数を設定して急なスパイクに備える
- バックエンドが App Service など FQDN の場合は、HTTP 設定でホスト名のオーバーライドを正しく構成し、プローブとリスナーのホスト整合を取る
- パスベース・マルチサイトを活用して1つのゲートウェイに集約し、リスナーや規則をシンプルに保つ
運用・監視
- Azure Monitor のメトリクスを監視する。代表的な指標はスループット、正常/異常ホスト数、要求数、応答ステータス(2xx〜5xx の分布)、バックエンドの応答時間など
- バックエンドヘルス (Backend health) ビューで 502 エラーの原因(プローブ失敗、証明書不一致、NSG によるブロック、バックエンド停止)を切り分ける
- アクセスログ・パフォーマンスログ・WAF ログを Log Analytics や Storage に出力し、攻撃検知の状況やトラフィック傾向を分析する
- WAF はまず検出モードで誤検知(フォールスポジティブ)を確認し、除外ルールを調整してから防御モードへ切り替えると安全
- Network Watcher / Connection Monitor で到達性やレイテンシを継続的に確認する
コスト
Application Gateway v2 は、稼働時間に対する固定の時間課金と、処理量に応じたキャパシティユニット (CU) の従量課金で構成されます。WAF_v2 ではこれに WAF 分のキャパシティ課金が加わります。アイドルでも時間課金が発生する点に注意します。
L7 のルーティング・TLS 終端・WAF が不要なら、より安価な L4 の Load Balancer で足りることが多いです。逆に、各リージョンにゲートウェイを並べてグローバル配信とエッジ WAF を組むより、Azure Front Door に集約した方が安く済む場合があります。最小/最大インスタンス数を実トラフィックに合わせ、過剰なキャパシティを避けましょう。
セキュリティ
- WAF_v2 で OWASP Core Rule Set やボット対策ルールを有効化し、SQL インジェクションや XSS を L7 でブロックする
- TLS は最新の TLS ポリシー(最小バージョンと暗号スイート) を適用して終端し、証明書は Key Vault で管理・ローテーションする
- バックエンドへの通信をエンドツーエンド TLS にして経路全体を暗号化できる
- 専用サブネットの NSG で受信を最小限に許可し、不要なポートは閉じる
- 大規模な L3/L4 DDoS には Azure DDoS Protection を併用し、ゲートウェイのパブリック IP を保護する
L4 の Load Balancer に Web 攻撃の防御(WAF)を期待してはいけません。Load Balancer はパススルー型で HTTP の中身を検査しません。Web アプリを攻撃から守るには Application Gateway の WAF_v2、または Azure Front Door の WAF を前段に置く必要があります。
Well-Architected の観点
- 信頼性 (Reliability): ヘルスプローブによる異常バックエンドの自動切り離しと、ゾーン冗長配置・自動スケールでリージョン内の可用性を確保する
- セキュリティ (Security): WAF による L7 防御、TLS 終端と最新ポリシー、Key Vault による証明書管理、NSG での受信最小化を組み合わせる
- パフォーマンス効率 (Performance Efficiency): 自動スケールで負荷追従し、TLS 終端をオフロードしてバックエンドの負荷を下げる。HTTP/2 や接続多重化も活用する
試験で問われるポイント
- 「URL パスやホスト名で HTTP を振り分けたい、TLS 終端したい」→ Application Gateway(L7)
- 「Web アプリを SQL インジェクションや XSS から守りたい」→ Application Gateway WAF_v2
- 「TCP/UDP を超低遅延でパススルー分散したい」→ Azure Load Balancer(L4)であって Application Gateway ではない
- 「グローバルに配信し、CDN とエッジ WAF も欲しい」→ Azure Front Door
- WAF はまず検出モードで誤検知を確認し、その後で防御モードへ切り替えるのが定石
- 現行は v2 世代(Standard_v2 / WAF_v2)で、専用サブネット・自動スケール・ゾーン冗長が特徴
- AWS との対応: Application Gateway は ALB、WAF_v2 は ALB と AWS WAF の組み合わせに相当
関連サービス・比較
Azure はロードバランサが L4・L7・グローバルで別サービスに分かれます。AWS の Elastic Load Balancing 各種との対応を押さえると選定が速くなります。
| 観点 | Azure | AWS |
|---|---|---|
| L7 HTTP/HTTPS 分散 | Application Gateway (v2) | Application Load Balancer (ALB) |
| L7 と WAF の統合 | Application Gateway WAF_v2 | ALB と AWS WAF の組み合わせ |
| L4 TCP/UDP 分散 | Azure Load Balancer (Standard) | Network Load Balancer (NLB) |
| グローバル L7・CDN・エッジ WAF | Azure Front Door | CloudFront と AWS WAF |
| TLS 終端 | Application Gateway | ALB(証明書は ACM) |
| 証明書の集中管理 | Key Vault 連携 | AWS Certificate Manager (ACM) |
ハンズオン / CLI例
# リソースグループを作成
az group create --name demo-rg --location japaneast
# Application Gateway 専用サブネットを含む仮想ネットワークを作成
az network vnet create \
--resource-group demo-rg \
--name demo-vnet \
--address-prefix 10.0.0.0/16 \
--subnet-name appgw-subnet \
--subnet-prefix 10.0.1.0/24
# ゾーン冗長のパブリック IP を作成
az network public-ip create \
--resource-group demo-rg \
--name agw-pip \
--sku Standard \
--zone 1 2 3
# WAF_v2 SKU の Application Gateway を作成(自動スケール構成)
az network application-gateway create \
--resource-group demo-rg \
--name demo-agw \
--location japaneast \
--sku WAF_v2 \
--min-capacity 2 \
--max-capacity 5 \
--vnet-name demo-vnet \
--subnet appgw-subnet \
--public-ip-address agw-pip \
--priority 100
# WAF ポリシーを防御モードで作成し、OWASP マネージドルールを有効化
az network application-gateway waf-policy create \
--resource-group demo-rg \
--name demo-waf-policy
az network application-gateway waf-policy managed-rule rule-set add \
--resource-group demo-rg \
--policy-name demo-waf-policy \
--type OWASP \
--version 3.2
Azure Service
Azure Application Gatewayを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ネットワーキング
比較で見る軸
クラウド: Azure / カテゴリ: ネットワーキング / 難易度: intermediate
導入後に効く点
WAF_v2 SKU で OWASP ベースの Web 攻撃防御を一体化できる。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Azure
- カテゴリ
- ネットワーキング
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- reliability / security / performance
判断チェックリスト
- 自社の用途が「ネットワーキング / reliability」に近いか確認する。
- 強みである「HTTP/HTTPS 専用のL7ロードバランサで、URL やホストで振り分ける。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。