Azure ネットワーク設計
Azure Virtual Network (VNet)、Subnet 分割、Network Security Group (NSG)、Azure Firewall/WAF(Application Gateway を含む)、そしてオンプレミスとの接続を統合した構成例を示します。特にApplication Gateway (AppGW) を導入する際のサブネット設計やルーティング、NSG の制御などについても細かく解説します。











──────────────────────────────────
Azure ネットワーク設計ガイド
— App Gateway(WAF) / Azure Firewall / NSG / VPN・ExpressRoute 連携 —
──────────────────────────────────
【要点(はじめに)】
・VNet はアドレス重複を避け、将来の拡張を見込んで十分な CIDR を確保する。
・Application Gateway(以下 AppGW)は専用サブネット必須。NSG/UDR の制約があるため設計順序に注意。
・Azure Firewall はハブに置き、アウトバウンド集中制御(URL/FQDN/FQDN タグ・IDPS・TLS 検査[Premium])を担う。
・オンプレ接続(VPN/ExpressRoute)は GatewaySubnet に配置。GatewaySubnet への NSG と 0.0.0.0/0 UDR は非サポート。
・DDoS(Network Protection または IP Protection)+ WAF(Prevention)で L3/4 と L7 を多層防御。
・ログは Virtual Network Flow Logs(NSG Flow Logs は段階的廃止予定)に集約し、Sentinel/Log Analytics へ。
──────────────────────────────────
-
VNet / IP アドレス設計
──────────────────────────────────
1-1. CIDR 設計の原則
・例:VNet 全体に 10.0.0.0/16。オンプレ/他 VNet との重複は厳禁。
・将来のスケール(サブネット追加・AppGW/Firewall のスケールアウト)を見込み余裕を持たせる。
1-2. サブネット例(用途別に最小権限で分離)
・AppGW Subnet(専用):例 10.0.0.0/24 推奨
- v2 はインスタンス数に応じて私設 IP を消費。最大数を見込むと /24 程度が無難。
・AzureFirewallSubnet(専用):例 10.0.1.0/26(必須名)
・AzureFirewallManagementSubnet(強制トンネリング時など):例 10.0.2.0/26(必須名)
・GatewaySubnet(VPN/ER):例 10.0.255.0/27(必須名)
・AzureBastionSubnet(任意):/26 以上(必須名)
・Web Subnet:例 10.0.10.0/27
・App Subnet:例 10.0.11.0/27
・Data Subnet:例 10.0.12.0/26
・Management Subnet(任意/運用系):例 10.0.20.0/27
※ 専用名が必要なサブネット:AzureFirewallSubnet / AzureFirewallManagementSubnet / GatewaySubnet / AzureBastionSubnet。
※ AppGW サブネットは AppGW 以外のリソースを置かない。v1 と v2 の混在不可。
──────────────────────────────────
2. AppGW / NSG / UDR / Firewall 設計(重要ポイント)
──────────────────────────────────
2-1. AppGW(WAF)サブネット設計
・専用サブネット必須。バックエンドに到達するため AppGW から各サブネット(Web/App/Data)への東西通信を許可する。
・パブリック受けの場合、フロントエンドは Standard Public IP(静的)推奨。
・WAF は本番 Prevention、検証は Detection → 誤検知調整後に切替。
【AppGW サブネットに適用する NSG(v2/代表例)】
(Inbound)
1. クライアント → AppGW リスナー用ポート(80/443 など)を許可
- 送信元:想定クライアント(インターネット or 会社の許可元 IP 範囲)
- 宛先:AppGW サブネットのアドレスプレフィックス(※同ポートで Public/Private リスナー併用時は AppGW のフロントエンド IP を宛先に指定)
2. GatewayManager → 65200–65535/TCP を許可(管理・正常性用途)
3. AzureLoadBalancer → Allow(デフォルト既存。上書き禁止/ヘルスプローブ用途)
4. それ以外は Deny(明示的に最下位で拒否)
(Outbound)
・Internet 宛て Allow(デフォルト既存。AppGW の管理・ログ送信が必要なため明示 Deny を作らない)
・AppGW からバックエンド(Web/App など)宛て 80/443(または必要ポート)Allow
【AppGW と UDR の取り扱い(v2 の要注意点)】
・AppGW サブネットへの UDR 適用は基本非推奨。健康状態が Unknown になる等の副作用がある。
・v2 でサポートされる例外シナリオは限定的(例:VNet GW から既定ルートが伝播する場合に BGP 伝播を無効化 or 0.0.0.0/0 を Internet に明示)。
・0.0.0.0/0 を仮想アプライアンス(Firewall/NVA)やオンプレへ強制トンネルするシナリオは v2 では非サポート。
・Private/Network Isolation 構成(Private Application Gateway)が利用可能な地域・状態かを都度確認(仕様により NSG/UDR 制約が緩和される場合あり)。
【証明書/TLS】
・フロントエンドは信頼局発行の証明書(SAN をドメインに合わせる)。Key Vault 連携推奨。
・エンドツーエンド TLS(バックエンドも 443)ではバックエンドの FQDN/SNI 設定・信頼鎖に注意。
・mTLS が必要な場合は WAF ポリシー(プレビュー/GA 状態を要確認)やアプリ側実装で対応。
2-2. Azure Firewall(ハブ)
・サブネットサイズ:AzureFirewallSubnet は /26 必須。強制トンネル構成などで AzureFirewallManagementSubnet も /26 必須。
・Firewall サブネットへ NSG は基本付与しない(動作阻害リスク)。制御は Firewall ルールと周辺サブネットの NSG/UDR で行う。
・アウトバウンドは原則ハブの Firewall に集約(Spoke から 0.0.0.0/0 → 次ホップ:Firewall)。
・NAT Gateway との優先順位:UDR(Virtual Appliance/Virtual Network Gateway)> NAT Gateway > ILPIP > LB Outbound > 既定ルート。
- NAT Gateway はアウトバウンド経路として Firewall よりも優先されるため、Firewall 経由を厳密化する場合は UDR で次ホップを Firewall にする。
- SNAT 枯渇対策として NAT Gateway を Firewall サブネットに関連付けて拡張する設計パターンも有効。
・強制トンネル(Firewall 自体の 0.0.0.0/0 をオンプレへ):Management NIC を伴う AzureFirewallManagementSubnet(/26)必須。DNAT 非対応制約や非対称ルーティングに注意。
2-3. Web / App / Data サブネットの NSG
・Web Subnet:AppGW サブネット(または AppGW のプライベート範囲)からの 80/443 のみ許可。インターネットからの直接流入は拒否。
・App Subnet:Web から App の業務ポートのみ許可(例 8080/8443 等)、Data への到達は必要最小ポートへ限定。
・Data Subnet:原則拒否ベース(App/管理から必要ポートのみ開放。例 SQL 1433、PostgreSQL 5432 など)。
・管理系(Bastion/Jumpbox)は運用者の踏み台用に分離し、双方向ともに最小権限で。
2-4. NAT Gateway(イグレス固定化)
・Outbound の送信元 IP を固定化し、SNAT ポートを大幅拡張可能。
・NAT は他の明示経路より低いが、UDR が無い場合は Firewall よりも優先される点に注意。設計意図どおりに経路が選ばれるか、有効ルートで検証する。
2-5. ログ/可視化
・NSG Flow Logs は新規作成停止・将来廃止予定のため、Virtual Network Flow Logs へ移行。
・AppGW アクセス/WAF ログ、Firewall ログ、VNet Flow Logs を Log Analytics に集約し、Sentinel で相関分析。
──────────────────────────────────
3. オンプレミス接続(Site-to-Site VPN / ExpressRoute)
──────────────────────────────────
3-1. 共通要件
・GatewaySubnet(必須名)を用意。
・GatewaySubnet への NSG 適用および 0.0.0.0/0 UDR は非サポート(ゲートウェイ管理通信を阻害するため)。
・ハブ&スポークではハブの VPN/ER ゲートウェイに集約し、スポークは VNet ピアリングで連携。
- ハブ側:Allow gateway transit
- スポーク側:Use remote gateways
- ピアリングは Allow forwarded traffic も有効化。
・アドレス重複は不可。BGP を用いる場合は経路集約・フィルタリング方針を事前設計。
3-2. Site-to-Site VPN
・開発/検証や比較的軽量なワークロード向け。
・スループットや可用性要件に応じて SKU(VpnGW2 以上など)を選定。
・NAT on VPN Gateway(対向のアドレス重複回避)も検討。
3-3. ExpressRoute
・高帯域・低遅延・SLA 重視のエンタープライズ向け。
・プライベートピアリングでハブに集約し、スポークへはピアリング+ゲートウェイトランジット。
・オンプレから既定ルート(0.0.0.0/0)を広告しない設計とし、必要に応じて BGP 伝播無効化/UDR で AppGW/Firewall の管理通信を必ずインターネットへ逃がす。
──────────────────────────────────
4. 代表的トラフィックフロー
──────────────────────────────────
(インターネット → Web システム)
-
Client → AppGW(443/TLS。WAF が L7 検査/Prevention)
-
AppGW → Web Subnet(80/443 等。NSG は送信元:AppGW のみ許可)
-
Web → App(業務ポートを最小開放)
-
App → Data(1433/5432 等を限定開放)
-
Outbound(外部 API/SaaS など)
A) 直接インターネット:NAT Gateway で送信元固定
B) Firewall 経由:各サブネットに UDR(0.0.0.0/0 → Firewall)を適用、Firewall で FQDN/カテゴリ制御
(オンプレ ←→ Azure)
・オンプレ ⇄ GatewaySubnet(VPN/ER)⇄ ハブ ⇄ スポーク(ピアリング)
・必要に応じて Firewall/NSG で双方向とも最小権限に。
──────────────────────────────────
5. セキュリティ/高可用性/運用
──────────────────────────────────
・多層防御:DDoS(L3/4)+ WAF(L7)+ NSG(L3/4)+ Firewall(L3/4/7)。
・WAF ポリシーは検出→調整→防御(Prevention)へ。誤検知はカスタムルール/例外で調整。
・AppGW/Firewall はゾーン冗長 or 可用性要件に応じた SKU 選定。
・VM は可用性セット/ゾーン、PaaS はゾーン対応/冗長オプションを活用。
・DNS/証明書:Key Vault で一元管理。証明書ローテーションを自動化。
・監視/ログ:VNet Flow Logs、AppGW WAF/アクセスログ、Firewall ログを集中管理。ワークブック/アラートを整備。
・脆弱性管理:NSG/Firewall のルール棚卸しと最小化、不要な公開 IP の排除。
・変更管理:UDR の変更が経路優先度に与える影響を必ず「有効ルート」で検証。
・DDoS:Public IP を持つ VNet には DDoS Network Protection、特定 IP 単位なら DDoS IP Protection を適用。
・ガバナンス:サービスタグ(Internet/VirtualNetwork/AzureMonitor/GatewayManager など)、ASG(アプリ単位)を活用。Azure Policy で NSG 未割当や DDoS 未適用を検知。
──────────────────────────────────
6. よくある落とし穴(チェックリスト)
──────────────────────────────────
□ AppGW サブネットに UDR で 0.0.0.0/0 を Firewall/NVA へ送っていないか(v2 非サポート)。
□ AppGW サブネットの NSG にて「GatewayManager 65200–65535/TCP」許可と「AzureLoadBalancer Allow」を用意しているか。
□ パブリック受けの AppGW で、クライアント→80/443 の Inbound Allow を作らずに Deny していないか。
□ GatewaySubnet に NSG または 0.0.0.0/0 の UDR を設定していないか(非サポート)。
□ AzureFirewallSubnet/AzureFirewallManagementSubnet は /26 以上か。Firewall サブネットへ NSG を付けていないか。
□ NAT Gateway を併用する場合、優先度により Firewall をバイパスしていないか(UDR で明示)。
□ Web サブネットで AppGW 以外からの 80/443 を拒否しているか(最小権限)。
□ App Service/関係 PaaS をバックエンドに使う場合、Private Endpoint or サービスエンドポイント+アクセス制限(AppGW サブネット許可)で直公開を塞いでいるか。
□ NSG Flow Logs を使い続けていないか(新規作成不可・将来廃止)。VNet Flow Logs へ移行済みか。
□ DDoS(Network/IP Protection)を有効化しているか(パブリック入口がある VNet は推奨)。
──────────────────────────────────
7. 参考 NSG/UDR の最小例
──────────────────────────────────
■ AppGW Subnet(NSG の例/優先度は環境に合わせて調整)
・Allow_In_Client_to_Listener
送信元:Internet または許可元 IP 範囲/宛先:AppGW サブネット(または FE IP)/ポート:80,443/TCP Allow
・Allow_In_GatewayManager_Infra
送信元:GatewayManager/宛先:Any/ポート:65200-65535/TCP Allow
・Allow_In_AzureLoadBalancer
送信元:AzureLoadBalancer/宛先:Any/任意/Allow(デフォルトルール維持)
・Deny_In_All
送信元:Any/宛先:Any/Any/Deny(最低優先度)
・Allow_Out_Internet
送信元:Any/宛先:Internet/Any/Allow(デフォルト維持。明示 Deny 不可)
・Allow_Out_To_Backend
送信元:AppGW サブネット/宛先:Web/App サブネット/80,443 等/Allow
■ Web Subnet(NSG の例)
・Allow_In_From_AppGW
送信元:AppGW サブネット/宛先:Web サブネット/80,443/Allow
・Deny_In_From_Internet
送信元:Internet/宛先:Web サブネット/Any/Deny
・Allow_Out_To_Firewall_Or_Internet
(設計に応じて)Firewall 経由なら Any→Firewall(UDR 併用)/直接なら NAT Gateway 利用
■ App/Data Subnet(NSG の例)
・App:Allow_In_From_Web(業務ポートのみ)
・Data:Allow_In_From_App(DB ポートのみ)/Deny_In_All_Else
■ UDR(代表)
・各 Spoke サブネット:0.0.0.0/0 → 次ホップ:Virtual appliance(Firewall)
・AppGW サブネット:基本 UDR 適用なし(例外:BGP 既定ルートを無効化、または 0.0.0.0/0 → Internet を明示)
・GatewaySubnet:UDR 不可(0.0.0.0/0 非サポート)
──────────────────────────────────
8. コスト観点(概略)
──────────────────────────────────
・AppGW(WAF 有無、容量単位、自動スケール、ルール数)
・Azure Firewall(データ処理量・ポリシー・IDPS/TLS 検査)
・NAT Gateway(時間課金+データ処理)
・パブリック IP(Standard SKU・ゾーン冗長)
・DDoS(Network Protection/ IP Protection)
・Log Analytics/Sentinel(取り込み量・保持期間)
→ 設計段階でトラフィック見積とログ設計(保持/サンプリング)を行い、料金計算ツールで事前試算。
──────────────────────────────────
9. まとめ
──────────────────────────────────
・AppGW は専用サブネット+正しい NSG(クライアント 80/443 許可、GatewayManager/ALB 許可、その他拒否)、UDR は原則適用しない。
・アウトバウンドは Firewall に集約、NAT Gateway 併用時は優先度と UDR を明確化。
・GatewaySubnet は NSG/0.0.0.0/0 UDR を付けない。ハブ&スポークは Gateway Transit/Use Remote Gateways で集約。
・DDoS+WAF+NSG+Firewall の多層化、ログは VNet Flow Logs に統合して継続監視。
・アドレス計画と命名(専用サブネット名)は初期段階で固定し、将来拡張も見据えたサイズを確保する。
詳細→ブログ








