🌐 AWS Networking

Transit Gateway
共有サービスによる分離VPCパターン

ショッピングモールのたとえで理解する、VPC間の分離と共有の仕組み

🎯 最初に結論

Transit Gateway(TGW)の「共有サービスによる分離VPC」パターンは、 複数のVPCを互いに通信させず(分離)、でも共通で使いたいサービス(共有VPC)だけには全VPCからアクセスできるようにする設計です。 これを実現するカギは「2つのルートテーブル」「AssociationとPropagationの組み合わせ」です。

🔒
VPC同士は分離
VPC A・B・Cは互いに通信不可
🤝
共有VPCには全員到達
VPC D(共有)には全VPCから通信OK
🗂️
2つのルートテーブル
分離用テーブルと共有用テーブル

🏬 ショッピングモールでたとえると?

Transit Gatewayの共有サービスパターンは、セキュリティの厳しいショッピングモールにそっくりです

🏢 たとえ話の全体像

あるショッピングモールには、3つのテナント店舗(VPC A・B・C)が入っています。
各テナントは完全にセキュリティで仕切られていて、隣の店舗には絶対に入れません。
しかし、共用施設(フードコート・トイレ・駐車場=VPC D)には、どのテナントの従業員も自由に行けます。
また、搬入口(VPN接続)から外部の配送トラックが出入りします。
このモール全体の通路を管理する「総合案内所」が、Transit Gatewayです。

🏛️
Transit Gateway
↕ たとえると...
総合案内所(中央通路)
すべてのテナントと施設をつなぐ中央ハブ。行き先に応じて案内する
🏪
分離VPC(A・B・C)
↕ たとえると...
各テナント店舗
それぞれ独立した店舗。隣の店には直接入れない
🍽️
共有サービスVPC(D)
↕ たとえると...
共用施設(フードコート等)
全テナントが共同で使える設備。DNS・認証・監視など共通サービスを配置
🚛
Site-to-Site VPN
↕ たとえると...
搬入口(外部との接続口)
外部(オンプレミス)と荷物をやりとりする出入り口
📋
分離ルートテーブル
↕ たとえると...
テナント用の館内地図
「共用施設とVPNだけ行ける」地図。他テナントへの道順が載っていない
📢
共有ルートテーブル
↕ たとえると...
管理者用の完全地図
「全テナントに行ける」地図。共用施設とVPNが持つルート

📐 全体アーキテクチャ図

Transit Gatewayを中心に、分離VPCと共有VPCがどう接続されるか

🏛️ Transit Gateway 中央ルーター(総合案内所) 🏪 VPC A 10.1.0.0/16 開発チーム 分離VPC(Isolated) 🏪 VPC B 10.2.0.0/16 テストチーム 分離VPC(Isolated) 🏪 VPC C 10.3.0.0/16 本番チーム 分離VPC(Isolated) 🍽️ VPC D(共有サービス) 10.4.0.0/16 DNS, 認証, 監視, Active Directory 共有VPC(Shared) 🚛 Site-to-Site VPN 10.99.99.0/24 オンプレミス接続 📋 分離ルートテーブル VPC A,B,C → Association 📋 共有ルートテーブル VPC D, VPN → Association 通信OK Attachment 通信ブロック 分離RT 共有RT
💡
ポイント:VPC A・B・Cは「分離ルートテーブル」に関連付けされるため、そのルートテーブルに他のVPCへの経路がなく、結果として互いに通信できません。一方、共有VPC(D)とVPNへの経路だけが存在するため、そこへはアクセスできます。

🔀 通信フロー:何が通って何がブロックされる?

このパターンでの3つの代表的な通信パターン

🏪 → 🍽️
分離VPC → 共有VPC
VPC A VPC D
✅ 通信OK

分離ルートテーブルにVPC Dへの経路(Propagation)があるため、共有サービスには到達できる

🏪 → 🏪
分離VPC → 分離VPC
VPC A VPC B
🚫 ブロック

分離ルートテーブルにVPC Bへの経路が存在しないため、TGWで破棄される

🍽️ → 🏪
共有VPC → 分離VPC
VPC D VPC C
✅ 通信OK

共有ルートテーブルに全VPCの経路がPropagateされているため到達可能

🏬
モールにたとえると:テナントAの従業員がテナントBに行こうとしても、案内所の地図(分離ルートテーブル)にテナントBの場所が書かれていないので「行き先不明」で案内できない。でもフードコート(共有VPC)は地図に載っているから行ける!

🔑 このパターンのカギ:AssociationとPropagation

ルートテーブルの「関連付け」と「経路伝播」の2つの仕組みが分離と共有を実現する

📌 Association(関連付け)

アタッチメント(VPCやVPN)が「どのルートテーブルを見て行き先を決めるか」を設定すること。 1つのアタッチメントは1つのルートテーブルにだけAssociateできる。

🏬 モールでたとえると?

テナントに配られる「館内地図」のこと。テナントAに渡す地図は1種類だけ。その地図に載っている場所にしか行けない。

📢 Propagation(経路伝播)

アタッチメントのCIDR(住所)を「どのルートテーブルに登録するか」を設定すること。 1つのアタッチメントは複数のルートテーブルにPropagateできる。

🏬 モールでたとえると?

テナントの「住所」を、どの地図に掲載するか。共用施設(VPC D)は両方の地図に住所を載せるので、誰からも見つけてもらえる。

超重要な区別:
Association = 「自分が見る地図を選ぶ」(どのルートテーブルで行き先判定するか)
Propagation = 「自分の住所をどの地図に載せるか」(他のアタッチメントから自分への経路を作る)

📊 設定マトリクス:誰がどこにAssociate / Propagateする?

分離と共有を実現する具体的な設定の全体像

📋 Association(関連付け)マトリクス — 各アタッチメントが見るルートテーブル
アタッチメント 分離ルートテーブル 共有ルートテーブル
VPC A(開発) ✔ Associate
VPC B(テスト) ✔ Associate
VPC C(本番) ✔ Associate
VPC D(共有) ✔ Associate
Site-to-Site VPN ✔ Associate
📢 Propagation(経路伝播)マトリクス — 各アタッチメントの経路がどこに載るか
アタッチメント 分離ルートテーブルに伝播 共有ルートテーブルに伝播
VPC A(開発) ✔ Propagate
VPC B(テスト) ✔ Propagate
VPC C(本番) ✔ Propagate
VPC D(共有) ✔ Propagate ✔ Propagate
Site-to-Site VPN ✔ Propagate
🔍
設定の読み方:VPC A〜Cは「分離ルートテーブルをAssociate(自分はこの地図を見る)」し、「共有ルートテーブルにPropagate(自分の住所を管理者地図に載せる)」する。だから分離VPC同士は互いの住所を知らないが、共有VPCとVPNからは全VPCにアクセスできる。

🗺️ 2つのルートテーブルの中身

Propagationの結果、各ルートテーブルに実際にどんな経路が入るか

📋 分離ルートテーブル(VPC A,B,C が Associate)

分離VPCが参照するルートテーブル。共有VPCとVPNだけの経路が入り、他の分離VPCへの経路は入らない。

宛先 CIDR ターゲット タイプ
10.4.0.0/16 VPC D Attachment propagated
10.99.99.0/24 VPN Attachment propagated
🏬
テナント用の地図には「フードコート」と「搬入口」しか載っていない。だから隣のテナントには行けない!
📋 共有ルートテーブル(VPC D, VPN が Associate)

共有VPCとVPNが参照するルートテーブル。全VPCの経路が入り、どこへでもアクセスできる。

宛先 CIDR ターゲット タイプ
10.1.0.0/16 VPC A Attachment propagated
10.2.0.0/16 VPC B Attachment propagated
10.3.0.0/16 VPC C Attachment propagated
🏬
管理者用の完全地図には全テナントの場所が載っている。だからフードコート(VPC D)からはどのテナントにも行ける!

🔧 構築の流れ(4ステップ)

この構成を実際に作る際の手順

1

Transit Gatewayを作成

リージョンにTGWを1つ作成。デフォルトのルートテーブル自動作成はオフにして、手動で2つのルートテーブルを作るのがおすすめ。

2

4つのVPCとVPNをAttach

VPC A〜D+VPNをTGWにアタッチ。各VPCのサブネットルートテーブルに 0.0.0.0/0 → TGW のルートを追加。

3

2つのルートテーブルを設定

「分離RT」と「共有RT」を作成。VPC A〜Cは分離RTにAssociate、VPC DとVPNは共有RTにAssociate。

4

Propagationを設定

VPC D → 両方のRTにPropagate。VPC A〜C → 共有RTにのみPropagate。VPN → 分離RTにPropagate。これで完成!

💼 実際のユースケース

このパターンが効果的な4つのシナリオ

🏥

マルチ環境(開発/テスト/本番)

開発・テスト・本番の環境を分離しつつ、共通のActive DirectoryやDNSサーバーには全環境からアクセス。環境間の事故(本番に開発のトラフィックが混入)を防止。

🏢

マルチテナント(部門別分離)

営業部門・開発部門・経理部門のVPCを分離。共有VPCには社内ポータル・メールサーバー・監視ツールを配置。部門間のデータ漏洩リスクを低減。

🌐

規制準拠(コンプライアンス)

PCI-DSS対象のカード決済VPCとHIPAA対象の医療データVPCを厳格に分離。共有VPCにはログ集約・セキュリティ監視を配置し、一元管理。

🤝

マルチアカウント(AWS Organizations)

AWS RAM(Resource Access Manager)でTGWをクロスアカウント共有。各チームのアカウントVPCを分離しつつ、共有サービスアカウントのVPCに集約。

⚖️ TGWの3つの主要パターン比較

今回のパターンが他の構成とどう違うか

Transit Gateway ルーティングパターン比較
項目 集中型ルーター 分離VPC 共有サービス付き分離VPC ⭐
VPC間通信 全VPC間OK 全VPC間NG 分離VPC間NG / 共有VPCとはOK
ルートテーブル数 1つ(デフォルト) 2つ 2つ
共有サービス 不要(全通信可能) なし あり(VPC D)
セキュリティ 低(全開放) 高(完全分離) 高(分離+共有の両立)
適用シーン 小規模/開発用 完全独立環境 エンタープライズの標準構成

❓ よくある質問

🤔 なぜVPCピアリングではなくTransit Gatewayを使うの?

VPCピアリングは1対1の接続なので、VPCが増えるたびに接続数が爆発的に増えます(N×(N-1)/2)。Transit Gatewayなら中央のハブに各VPCを接続するだけ。さらに、ルートテーブルによる分離/共有の制御はピアリングではできません。

代表的なのは、DNS(Route 53 Resolver)、Active Directory、監視ツール(CloudWatch Agent集約先)、VPCエンドポイント(S3やDynamoDBなど)、NATゲートウェイ(集約型インターネットアクセス)、セキュリティアプライアンスなどです。

その場合は、追加のルートテーブルを作成して特定のVPCだけをグループ化するか、共有VPCにファイアウォールやプロキシを配置して、共有VPC経由で制御された通信を許可する方法があります。TGWのルートテーブルは複数作成できるので柔軟に対応可能です。

TGWは「アタッチメント1つあたりの時間課金」と「TGWを経由したデータ転送量(GB単位)」の2つで課金されます。VPCの数やルートテーブルの数自体には追加料金はかかりません。最新の料金は AWS Transit Gateway 料金ページをご確認ください。

1つのアタッチメントからのトラフィックに対して、ルーティング判定は1つのルートテーブルで一意に行う必要があるためです。もし2つのルートテーブルで判定すると、矛盾する経路がある場合にどちらを使うか決められなくなります。一方、Propagationは「住所の登録」なので複数に登録しても矛盾しません。

🎓 まとめ

Transit Gatewayの「共有サービスによる分離VPC」パターンは、
2つのルートテーブルAssociation / Propagationの設定だけで
「分離」と「共有」を同時に実現するシンプルかつ強力な構成です。

分離RT(テナント地図)
共有RT(管理者地図)
🏬 分離と共有の両立

ショッピングモールのように、テナント同士は分離しつつ共用施設だけはみんなで使う。
この直感的なイメージを持っておけば、TGWのルーティング設計も怖くありません!

Created by SSuzuki1063

AWS SAP Learning Resources