🌐 AWS Networking Advanced

Cloud WAN / TGW での
ルート分離設計の極意

マルチアカウント・マルチリージョン環境でトラフィックを安全に分離する方法を、ホテルのフロア管理に例えて徹底図解

結論ファースト:ルート分離設計で覚えるべき3つ

ルート分離とは「本番と開発のネットワークが互いに通信できないように壁を作る」こと。Transit Gateway(TGW)と Cloud WAN はアプローチが異なるが、目的は同じ。

🔵 TGW = ルートテーブルで分離 単一リージョン内で「どのVPCがどのルートテーブルに属すか」を制御。シンプルだが、リージョンごとに設定が必要。
🟠 Cloud WAN = セグメントで分離 グローバルに「セグメント」という論理的ネットワーク境界をポリシーで定義。マルチリージョンを一元管理できる。
🔵 TGWの選択基準 単一リージョン、コスト優先、既存TGWがある環境。アカウント数が少なく、手動管理の手間が許容できるケース。
🟠 Cloud WANの選択基準 マルチリージョン、ポリシー一元管理、大規模組織。将来の拡張性やSD-WAN連携が求められるケース。
🏨

たとえ話:「高層ホテルのフロア管理」

ルート分離設計は、高層ホテルの各フロアをカードキーで管理する仕組みと同じです

🏨 AWS ネットワーク・ホテル(Transit Gateway / Cloud WAN)
4F 管理階
(Management)
🔑 管理VPC 📊 監視VPC 🔐 セキュリティVPC
🔒
3F 本番階
(Production)
🖥️ 本番App VPC 🗄️ 本番DB VPC
🔒
2F 開発階
(Development)
💻 開発VPC 🧪 ステージングVPC
🔒
1F 共用階
(Shared)
🌐 DNS/NTP VPC 📡 Egress VPC 🔗 Direct Connect
🔓
🚪 ロビー(インターネット / オンプレミス接続)

🏨 ホテルの要素

  • ホテル全体 → TGW / Cloud WAN
  • 各フロア → ルートテーブル / セグメント
  • 各客室 → VPC(アタッチメント)
  • カードキー → ルート(経路情報)
  • フロア間エレベーター → ルート伝播設定
  • 共用階アクセス権 → Shared Service 設定

🔑 フロア分離のルール

  • 3F(本番)のカードキーでは2F(開発)に入れない
  • 2F(開発)のカードキーでは3F(本番)に入れない
  • 1F(共用)はどのカードキーでも入れる
  • 4F(管理)は管理者カードキーだけで入れる
  • フロアごとにカードリーダーを設定 = ルート伝播制御
  • フロア追加 = 新しいルートテーブル/セグメント作成

🚧 ルート分離とは何か? Before → After

ルート分離がない状態と、ルート分離を適用した状態の違いを可視化します。ルートテーブルを分けることで、VPC間の通信経路を制御し、意図しないトラフィックの流入を防ぎます。

❌ Before:分離なし(全VPCが通信可能)

本番 VPC-A 開発 VPC-B 共用 VPC-C
↕ ↕ ↕
単一ルートテーブル
⚠️ 全VPCが同一テーブル → 開発から本番に通信可能
リスク:開発環境の設定ミスが本番DBに影響

✅ After:ルート分離済み

本番 VPC-A
本番 RT
開発 VPC-B
開発 RT
共用 VPC-C
共用 RT
本番 開発 | 本番 共用 | 開発 共用
結果:本番↔開発は遮断、共用サービスは両方から利用可能
Transit Gateway

🔵 TGW:ルートテーブルによる分離

Transit Gateway では「ルートテーブル」を複数作成し、各VPCアタッチメントを適切なルートテーブルに関連付け(Association)することで通信経路を分離します。ルート伝播(Propagation)でどのルートテーブルに経路を広告するかを制御します。

TGW ルートテーブル分離アーキテクチャ
🔵 Transit Gateway
Association(関連付け)↓ + Propagation(ルート伝播)↓

🔴 本番ルートテーブル

✅ 本番 VPC → 伝播あり
✅ 共用 VPC → 伝播あり
🚫 開発 VPC → 伝播なし

🔵 開発ルートテーブル

✅ 開発 VPC → 伝播あり
✅ 共用 VPC → 伝播あり
🚫 本番 VPC → 伝播なし

🟢 共用ルートテーブル

✅ 本番 VPC → 伝播あり
✅ 開発 VPC → 伝播あり
✅ 共用 VPC → 伝播あり
↓ アタッチメント
本番App VPC 本番DB VPC
開発 VPC STG VPC
DNS VPC Egress VPC
🏨 ホテルで例えると: 各フロア(ルートテーブル)にカードリーダー(Association)を設置し、「このフロアのカードキーで入れる部屋リスト」(Propagation)を個別に設定する方式。フロアごとにリーダーの設定を手動で行う必要がある。
Cloud WAN

🟠 Cloud WAN:セグメントによる分離

Cloud WAN では「セグメント」という論理的ネットワーク分離単位を使います。Network Policy でセグメント間の接続ルールを一括定義し、すべてのリージョンに自動適用されます。Segment Actions の allow / deny でセグメント間の通信可否をコントロールします。

Cloud WAN セグメント分離アーキテクチャ
🟠 Cloud WAN Global Network
↓ Core Network Policy(グローバル定義)

🔴 prod セグメント

本番環境用

🔵 dev セグメント

開発環境用

🟢 shared セグメント

共用サービス用
↓ 各リージョンに自動適用

🌏 ap-northeast-1(東京)

本番VPC 開発VPC 共用VPC

🌍 us-east-1(バージニア)

本番VPC 開発VPC 共用VPC
🏨 ホテルで例えると: 本社(Global Network)が「全支店のフロアルール」を一括で定義する方式。東京支店でも大阪支店でも同じカードキールールが自動適用される。新しい支店(リージョン)がオープンしても、ルールは自動で適用される。

📊 TGW vs Cloud WAN:ルート分離の詳細比較

どちらも「分離」は実現できますが、管理スコープ・コスト・柔軟性が大きく異なります。

比較項目 🔵 Transit Gateway 🟠 Cloud WAN
分離の単位 ルートテーブル(RT) セグメント(Segment)
管理スコープ ⚠️ リージョン単位(TGWごとに設定) グローバル(ポリシーで全リージョン一括)
設定方法 Association + Propagation を個別設定 Network Policy(JSON/YAML)で宣言的に定義
共用サービス接続 Propagation で共用RTに伝播 segment-actions の share で定義
マルチリージョン ⚠️ TGW Peering を追加構成 標準機能としてビルトイン
ルート数上限 RTあたり 10,000 ルート セグメントあたり 10,000 ルート
コスト感 低〜中(データ処理料+アタッチメント料) ⚠️ 中〜高(Core Network Edge 料金が加算)
SD-WAN連携 標準では未対応 Connect Attachment で対応
運用負荷 リージョン×環境数 分の設定管理 ポリシー1つで全環境を管理
ホテルで例えると 各支店が独自にカードキーを管理 本社が全支店のカードキーを一括管理

🎨 代表的なルート分離パターン 4選

実際の設計で頻出するルート分離パターンを図解します。要件に応じて組み合わせて使います。

1

環境分離パターン(本番 / 開発)

最も基本的なパターン。本番と開発を完全分離し、共用サービス(DNS・Egress)のみ両方からアクセス可能にする。

┌─ prod RT ──────────────┐ │ 本番VPC-A 本番VPC-B │ │ 共用VPC(伝播あり) │ │ 開発VPC(伝播なし)🚫 │ └────────────────────────┘ ┌─ dev RT ───────────────┐ │ 開発VPC-A 開発VPC-B │ │ 共用VPC(伝播あり) │ │ 本番VPC(伝播なし)🚫 │ └────────────────────────┘
💡 用途:ほぼ全てのマルチアカウント設計の基礎
2

Spoke-Hub パターン(Shared Service Hub)

共用VPCをハブとして、各環境VPC(スポーク)がハブ経由でのみ通信する。スポーク同士は直接通信不可。

┌──────────┐ │ 共用 Hub │ │ (DNS,NW) │ └────┬─────┘ ┌─────┼─────┐ ↓ ↓ ↓ ┌────┐ ┌────┐ ┌────┐ │本番│ │開発│ │STG │ └────┘ └────┘ └────┘ (互いに通信不可 🚫)
💡 用途:中央集約型NWサービス(Inspection VPC、NAT等)
3

BU(事業部)分離パターン

事業部ごとにセグメント/RTを分離。各事業部は独立運用しつつ、共用プラットフォームだけ共有。

┌─ BU-A seg ─┐ ┌─ BU-B seg ─┐ │ VPC-A1 │ │ VPC-B1 │ │ VPC-A2 │ │ VPC-B2 │ └──────┬─────┘ └──────┬─────┘ │ 🚫 相互遮断 │ ↓ ↓ ┌──── shared seg ─────┐ │ セキュリティ / 監視 │ └─────────────────────┘
💡 用途:M&A後の統合、コンプライアンス要件の厳しい組織
4

Inspection 挿入パターン

セグメント間通信にFirewall/IDS(Inspection VPC)を強制挟み込み。ルートテーブルのBlackholeとスタティックルートで制御。

┌─ prod seg ──┐ ┌─ dev seg ──┐ │ 本番VPC │ │ 開発VPC │ └──────┬──────┘ └──────┬─────┘ ↓ ↓ ┌─────── inspection seg ──────┐ │ 🔥 AWS Network Firewall │ │ (トラフィック検査・フィルタ) │ └─────────────────────────────┘ ↕ 検査後のみ通信許可
💡 用途:金融・医療などの高セキュリティ要件

🔧 ルート分離を実装する5ステップ

TGW / Cloud WAN のどちらでも、基本的な流れは同じです。

1

分離境界の設計

環境別(本番/開発)、事業部別(BU-A/BU-B)、コンプライアンス別(PCI/非PCI)など、何を基準に分離するかを決定。

🏨 ホテルで例えると:フロアの区切り方(用途別?VIP別?)を決める
2

ルートテーブル/セグメントの作成

TGWなら専用ルートテーブルを作成、Cloud WANならNetwork PolicyにSegment定義を追加。

🏨 ホテルで例えると:各フロアにカードリーダーを設置する
3

VPCアタッチメントの関連付け

各VPCを適切なルートテーブル/セグメントに紐付け。TGWではAssociation、Cloud WANではsegment-nameを指定。

🏨 ホテルで例えると:客室を正しいフロアに配置する
4

ルート伝播/共有ルールの設定

共用サービスへの経路を必要なテーブルに伝播(Propagation)するか、segment-actionsのshareで共有設定。不要な経路は伝播しない。

🏨 ホテルで例えると:「1F共用階にはどのカードでも入れる」設定を追加
5

検証とBlackholeルート設定

意図した通信のみ可能かテスト。万全を期すなら、明示的にBlackholeルート(破棄ルート)を追加して、分離漏れを防ぐ。

🏨 ホテルで例えると:全カードキーで出入りテスト → 非常階段に鍵をかける

💻 設定コード例

TGW(CloudFormation)と Cloud WAN(Network Policy JSON)の実装例を比較します。

TGW(CloudFormation)
Cloud WAN(Policy JSON)
# --- TGW ルートテーブル分離 (CloudFormation) --- Resources: # 本番用ルートテーブル ProdRouteTable: Type: AWS::EC2::TransitGatewayRouteTable Properties: TransitGatewayId: !Ref TransitGateway Tags: - Key: Name Value: prod-route-table # 開発用ルートテーブル DevRouteTable: Type: AWS::EC2::TransitGatewayRouteTable Properties: TransitGatewayId: !Ref TransitGateway Tags: - Key: Name Value: dev-route-table # 本番VPC → 本番RTに関連付け(Association) ProdAssociation: Type: AWS::EC2::TransitGatewayRouteTableAssociation Properties: TransitGatewayAttachmentId: !Ref ProdVpcAttachment TransitGatewayRouteTableId: !Ref ProdRouteTable # 共用VPCのルートを本番RTに伝播(Propagation) SharedToProdPropagation: Type: AWS::EC2::TransitGatewayRouteTablePropagation Properties: TransitGatewayAttachmentId: !Ref SharedVpcAttachment TransitGatewayRouteTableId: !Ref ProdRouteTable # ⚠️ 開発VPCは本番RTに伝播しない(設定しないことで遮断) # Blackholeルートで明示的に遮断する場合↓ BlockDevFromProd: Type: AWS::EC2::TransitGatewayRoute Properties: TransitGatewayRouteTableId: !Ref ProdRouteTable DestinationCidrBlock: 10.1.0.0/16 # 開発VPCのCIDR Blackhole: true
// --- Cloud WAN Network Policy (JSON) --- { "version": "2021.12", "core-network-configuration": { "asn-ranges": ["64512-65534"], "edge-locations": [ { "location": "ap-northeast-1" }, { "location": "us-east-1" } ] }, // セグメント定義(フロア分け) "segments": [ { "name": "prod", "require-attachment-acceptance": true, "isolate-attachments": false }, { "name": "dev", "require-attachment-acceptance": false, "isolate-attachments": false }, { "name": "shared", "require-attachment-acceptance": false, "isolate-attachments": false } ], // セグメント間の共有ルール(カードキー設定) "segment-actions": [ { "action": "share", "mode": "attachment-route", "segment": "shared", "share-with": ["prod", "dev"] } ], // ⚠️ prod ↔ dev の直接share未定義 = 通信遮断 "attachment-policies": [ { "rule-number": 100, "conditions": [ { "type": "tag-value", "key": "Environment", "value": "prod" } ], "action": { "association-method": "constant", "segment": "prod" } } ] }

⚠️ よくあるアンチパターンと対策

ルート分離設計で陥りやすい落とし穴と、正しい対処法を対比します。

❌ 単一ルートテーブルに全VPCを詰め込む

「設定が楽だから」とデフォルトRTに全VPCをアタッチ。環境間の通信が全て許可される。

⚡ 影響:開発環境のテストトラフィックが本番DBに到達するリスク

✅ 環境ごとにルートテーブルを分ける

最低でも「本番」「開発」「共用」の3つのRTを作成。共用サービスだけ両環境にPropagation。

🛡️ 効果:本番と開発が完全に論理分離。セキュリティ境界が明確化

❌ Blackholeルートを入れずに「伝播しない=安全」と思い込む

Propagationを設定しなくてもスタティックルートの追加漏れや将来の変更でルートが追加される可能性。

⚡ 影響:運用中にルートが意図せず追加され、分離が崩壊するリスク

✅ Blackholeルートで明示的に遮断する

分離したいCIDRに対してBlackholeルートを明示的に設定。「伝播しない」ではなく「破棄する」で防御。

🛡️ 効果:Defense-in-Depth(多層防御)。万が一の伝播ミスも最終防壁で遮断

✨ ルート分離 ベストプラクティス 6選

📋 1. 命名規則を統一する

ルートテーブル名/セグメント名を「{env}-{purpose}-rt」形式で統一。タグも合わせて管理。

🚫 2. Blackhole ルートで多層防御

Propagation未設定に加え、分離対象のCIDRにBlackholeを設定して明示的に遮断する。

🔍 3. VPC Flow Logs + Route Analyzer で検証

分離が正しく機能しているかを定期的に検証。Cloud WANにはRoute Analyzerが標準搭載。

📐 4. IaCで構成をコード管理

CloudFormation / Terraform でルートテーブル・セグメント構成を管理し、変更履歴を追跡可能に。

🏷️ 5. タグベースの自動振り分け

Cloud WANのattachment-policiesでタグ条件を定義し、VPCアタッチメントを自動でセグメントに振り分け。

📊 6. CIDRの重複を絶対に避ける

異なるセグメント間でCIDRが重複するとルーティングが破綻。IPAM(IP Address Manager)で一元管理。

🤔 どちらを選ぶ? 判断フローチャート

自分の環境に合ったルート分離サービスを選択しましょう。

❓ マルチリージョン構成が必要?
YES
🟠 Cloud WAN を推奨
ポリシー一元管理のメリット大
NO
❓ VPC数が20以上 or 将来的な拡大予定?
YES
🟠 Cloud WAN
拡張性で有利
NO
🔵 TGW
コスト効率で有利
💡 補足:TGW → Cloud WAN への移行パスもある。まずTGWで始めて、必要に応じてCloud WANに移行する段階的アプローチも有効。

🎓 ルート分離設計の極意:3つの鍵

🏨

フロアで分ける

環境・事業部・コンプライアンスなど、明確な境界でルートテーブル / セグメントを分離する

🔑

鍵を正しく配る

共用サービスへのアクセスだけを選択的に許可し、不要な経路は伝播させない+Blackholeで封鎖

📋

ルールを一元管理

IaC + タグベース自動振り分けで人的ミスを排除し、定期的にRoute Analyzer で検証する

ルート分離は「通信させない」設計。ホテルのフロア管理のように、
正しい人に正しい鍵を渡す仕組みを作れば、安全なネットワークが実現できます 🌐

Created by SSuzuki1063

AWS SAP Learning Resources