AWS認定ソリューションアーキテクト – アソシエイト(SAA-C03)の試験では、VPC(Virtual Private Cloud)内のネットワーク設計に関する問題が非常に多く出題されます。
特に、「セキュリティを高めるためにデータベースをプライベートサブネットに置いたけれど、外部のサードパーティAPIから定期的にデータを取得(インターネット接続)したい。どう構築するのが安全?」 というシナリオは定番中の定番です。
この記事では、AWSの基礎である「パブリック/プライベートサブネット」のおさらいから、解決策の主役である「NAT ゲートウェイ」の仕組み、そして試験対策で引っかかりやすい「誤り選択肢」の解説まで、初心者向けに分かりやすく解説します!
💻 よくある設計課題(シナリオ)
あなたはある動画配信システムを構築しています。データベース(MySQL)は機密性が高いため、外部から直接攻撃されないように「プライベートサブネット」に配置しました。
しかし、このデータベースからインターネット上にある外部のサードパーティAPIへ、定期的にデータの更新リクエストを送信(アウトバウンド通信)しなければならなくなりました。
**「セキュリティを守るために外部から隔離したいが、自分からはインターネットへ接続させたい」**という場合、AWSではどのような構成にするのが最適でしょうか?
そもそも「パブリック」と「プライベート」の違いは?
AWSでネットワーク(VPC)を作る際、その中をさらに細かく区切ったネットワークの単位を サブネット(Subnet) と呼びます。サブネットには以下の2種類があります。
| サブネットの種類 | インターネットとの双方向通信 | 主な配置リソース |
|---|---|---|
| パブリックサブネット | 宛先にインターネットゲートウェイ(IGW)が設定されており、直接インターネットと通信可能。 | Webサーバー、ロードバランサー(ALB) |
| プライベートサブネット | インターネットへのルートがなく、外部からの直接アクセスを完全に遮断。 | データベース(RDS/MySQL)、アプリケーション実行サーバー |
データベース(MySQLなど)は企業の最も重要なデータが保管されている場所であるため、外部から直接ハッキングされないよう、プライベートサブネットに配置してインターネットから隠す のがセキュリティの基本(黄金律)です。
データベースからインターネットに繋ぎたい!という課題
しかし、運用していると以下のような要件が出てきます。
💡 「データベース内のデータを更新するために、インターネット上にあるサードパーティのAPIと定期的に通信して最新データを持ってきたい」
プライベートサブネットに置かれたデータベースは、外からのアクセスを拒否するだけでなく、自分から外(インターネット)へ出ていくルートも持っていません。
この「機密性を守るためにインターネットから隔離したいけれど、自分からはインターネットへ出ていきたい」という矛盾した要望を安全に解決するのが、NAT ゲートウェイ です。
NAT ゲートウェイの仕組み
NAT(Network Address Translation:ネットワークアドレス変換)ゲートウェイ は、プライベートサブネットにあるインスタンスがパブリックIPアドレスを持たずに、インターネットに接続できるようにするための仲介役となるサービスです。
NAT ゲートウェイは、パブリックサブネットに配置 します。
通信の流れ(図解)
プライベートサブネット内のデータベースが外部APIへ接続する際の通信フローは以下のようになります。
sequenceDiagram
autonumber
participant DB as MySQL (プライベート)
participant NAT as NAT ゲートウェイ (パブリック)
participant IGW as インターネットゲートウェイ
participant API as 外部API (インターネット上)
DB->>NAT: 1. 外部APIに接続したい! (プライベートIPのまま送信)
Note over NAT: 2. 送信元IPアドレスを<br/>NATゲートウェイの「パブリックIP」に変換
NAT->>IGW: 3. インターネット経由でリクエスト転送
IGW->>API: 4. 外部APIへ到達
API-->>IGW: 5. レスポンス(データを返す)
IGW-->>NAT: 6. NATゲートウェイが受信
Note over NAT: 7. 宛先IPアドレスを<br/>元のMySQLの「プライベートIP」に戻す
NAT-->>DB: 8. MySQLにデータが届く
NAT ゲートウェイが安全な理由
NAT ゲートウェイは**「内側から外側への通信(アウトバウンド)」** のみを通し、「外側から内側への通信(インバウンド)」 はすべて遮断します。
インターネット上の悪意ある第三者が直接データベースに接続しようとしても、NAT ゲートウェイが入り口を塞いでいるため、プライベートサブネット内のデータベースの機密性は完全に守られます。
試験対策!間違えやすい選択肢の解説
VPC設計の問題では、NAT ゲートウェイ以外の「もっともらしい選択肢」がいくつか提示されます。なぜそれらが不適切なのかを整理しておきましょう。
a. Amazon VPC Lattice を経由して接続する
- 不適切である理由:
Amazon VPC Latticeは、複数のVPCやアカウント間にあるマイクロサービスどうしの通信を、シンプルかつ安全に相互接続するためのサービスです。 インターネット上のサードパーティAPIへ「インターネット経由」でアウトバウンド接続する用途には適しておらず、一般的な手段ではありません。
b. プライベートサブネットのインスタンスにパブリック IP を割り当てる
- 不適切である理由:
プライベートサブネットのルートテーブルには、インターネットと直接通信するための「インターネットゲートウェイ(IGW)」へのルート(
0.0.0.0/0->igw-xxxxxx)がありません。そのため、インスタンスにパブリックIPを割り当てたとしても、インターネットとは一切通信できません。 また、データベースサーバーに直接パブリックIPを付与することは、セキュリティポリシー(インターネットから直接アタックされるリスク)に完全に反するため非推奨です。
d. Elastic Beanstalk 環境に再配置し、VPC エンドポイントを利用する
- 不適切である理由:
AWS Elastic Beanstalkは、Webアプリケーションの実行環境(EC2やALBなど)を自動でセットアップ・管理してくれる開発者向けサービスであり、データベースサーバー単体を管理・配置するための環境ではありません。 また、VPC エンドポイントは、S3やDynamoDB、Systems Managerといった 「AWSのサービス」にVPC内部からインターネットを経由せずにプライベートアクセスするため の仕組みです。サードパーティが提供するインターネット上の一般的なHTTP APIとの通信には利用できません。
まとめ:プライベート接続設計のテンプレート
AWS SAA試験および実際のインフラ設計で「プライベートなリソースの外部接続」が出たら、以下のパターンを一瞬で思い浮かべられるようにしましょう。
- データベースなどの機密データ はプライベートサブネットに置く。
- NAT ゲートウェイ をパブリックサブネットに配置する。
- プライベートサブネットのルートテーブルで、すべてのインターネット宛て通信(
0.0.0.0/0)を NAT ゲートウェイにルーティング する。
🎯 AWS SAA 合格に向けたおすすめの教材
AWS SAA(ソリューションアーキテクト – アソシエイト)の勉強をさらに進めたい方向けの、おすすめの優良教材です。
1. 【書籍】AWS教科書 AWS認定ソリューションアーキテクトアソシエイト テキスト&問題集 第2版
試験範囲の網羅率が非常に高く、各サービスの仕組みが詳細な図解付きで体系的に学べる一冊です。今回解説したVPC周りのルートテーブルやNATの動作についても丁寧に書かれています。
2. 【Udemy】【SAA-C03版】これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座
ベストセラーとなっている動画教材です。ハンズオン(実際にAWS画面を操作するパート)が豊富で、実際にVPCやNATゲートウェイ、MySQLを作って接続する検証ができるため、本で学ぶよりも圧倒的にネットワークの仕組みが腹落ちします。