【VPC基礎③】パブリックサブネットとプライベートサブネットの設計パターン

  • URLをコピーしました!

前回の記事では、Internet Gateway(IGW)とNAT Gatewayの役割や通信経路について解説しました。

今回は、それらを組み合わせてパブリックサブネットとプライベートサブネットをどのように設計するのかを解説します。

AWSを学び始めたばかりの方は、

  • パブリックサブネットとプライベートサブネットは何が違うのか
  • サブネット作成時に「パブリック」を指定するのか
  • EC2にパブリックIPがあればパブリックサブネットなのか
  • NAT Gatewayはどこに配置するのか
  • Webサーバーやデータベースはどこに配置するのか

といった部分で混乱しやすいのではないでしょうか。

特に重要なのは、パブリックサブネットとプライベートサブネットの違いは、名前ではなくルーティングによって決まるという点です。

本記事では、VPC・ルートテーブル・Internet Gateway・NAT Gatewayを組み合わせながら、SAAで必要となる代表的なVPC設計パターンを解説します。

目次

📚 SAA試験対策ボックス

試験頻出度★★★★★
重要度★★★★★
関連分野VPC / サブネット / ルートテーブル / IGW / NAT Gateway / ELB / EC2 / RDS / 高可用性
重要キーワードPublic Subnet / Private Subnet / 0.0.0.0/0 / Internet Gateway / NAT Gateway / Multi-AZ

この記事で覚えること

  • パブリックサブネットとプライベートサブネットの違い
  • サブネットの種類はルーティングによって決まる
  • パブリックIPを持つだけではインターネットへ通信できない
  • NAT Gatewayを利用したプライベートサブネットからの外向き通信
  • Web・アプリケーション・DBの代表的な配置方法
  • 複数AZを利用した高可用性設計

パブリックサブネットとは?

パブリックサブネットとは、一般的にInternet Gateway(IGW)への直接ルートを持つサブネットです。

例えば、次のようなルートテーブルが関連付けられているとします。

DestinationTarget
10.0.0.0/16local
0.0.0.0/0igw-xxxxxxxx

この場合、VPC内部以外へのIPv4通信はInternet Gatewayへ送られます。

つまり、


EC2
 ↓
ルートテーブル
 ↓
Internet Gateway
 ↓
Internet

という通信経路を作ることができます。

重要

パブリックサブネットとは、単に「インターネットへ接続できるEC2が存在するサブネット」という意味ではありません。

ルートテーブルにInternet Gatewayへの直接ルートが存在することが重要です。

パブリックサブネットのEC2がインターネット通信するための条件

サブネットがパブリックサブネットだからといって、そこへ配置したすべてのEC2が自動的にインターネットへ通信できるわけではありません。

IPv4でEC2からInternet Gatewayを経由してインターネットへ直接通信する場合、代表的には次の条件を確認します。

  • VPCにInternet Gatewayがアタッチされている
  • サブネットのルートテーブルにIGWへのルートがある
  • EC2にパブリックIPv4アドレスまたはElastic IPがある
  • セキュリティグループなどで必要な通信が許可されている

例えば、EC2にパブリックIPv4アドレスが割り当てられていても、ルートテーブルにInternet Gatewayへのルートがなければ、その経路を利用してインターネットへ通信することはできません。

📘 SAA試験ポイント

「パブリックIPがある=パブリックサブネット」ではありません。

サブネットがパブリックかどうかを判断するときは、まずルートテーブルを確認しましょう。

プライベートサブネットとは?

プライベートサブネットとは、一般的にInternet Gatewayへの直接ルートを持たないサブネットです。

例えば、次のようなルートテーブルを考えてみましょう。

DestinationTarget
10.0.0.0/16local

Internet Gatewayへのデフォルトルートが存在しないため、このサブネットからIGWへ直接インターネット通信を送る経路はありません。

データベースなど、インターネットから直接アクセスさせる必要がないリソースを配置する場合に利用されます。

プライベートサブネットでもインターネットへ通信できる

ここはAWS初心者が特に間違えやすいポイントです。

プライベートサブネットだから、インターネットへ一切通信できないわけではありません。

例えば、プライベートサブネットに配置したEC2でも、

  • OSのアップデート
  • パッケージのダウンロード
  • 外部APIへのアクセス

などでインターネットへのアウトバウンド通信が必要になる場合があります。

このような場合に利用できるのが、前回の記事で解説したPublic NAT Gatewayです。


Private EC2
     ↓
Private Route Table
     ↓
NAT Gateway
     ↓
Internet Gateway
     ↓
Internet

プライベートサブネット側のルートテーブルでは、例えば次のように設定します。

DestinationTarget
10.0.0.0/16local
0.0.0.0/0nat-xxxxxxxx

これによって、プライベートサブネットのEC2から開始したインターネット向け通信をNAT Gateway経由で送ることができます。

パブリックサブネットとプライベートサブネットの基本構成

ここまでの内容を1つの構成にまとめると、次のようになります。

この構成で重要なのは、パブリックサブネットとプライベートサブネットでデフォルトルートのターゲットが異なることです。

サブネット0.0.0.0/0のターゲット
パブリックサブネットInternet Gateway
プライベートサブネットNAT Gateway
※外向きインターネット通信が必要な場合

最重要ポイント

パブリック/プライベートを理解するときは「EC2を見る」のではなく「ルートテーブルを見る」と覚えておきましょう。

NAT Gatewayはどこに配置する?

Public NAT Gatewayを利用してインターネットへ通信する場合、NAT Gateway自身がInternet Gatewayへ到達できる必要があります。

そのため、Public NAT GatewayはInternet Gatewayへのルートを持つパブリックサブネットに作成します。


Private Subnet
    │
    │ 0.0.0.0/0
    ▼
NAT Gateway
(Public Subnet)
    │
    │ 0.0.0.0/0
    ▼
Internet Gateway
    │
    ▼
Internet

📘 SAA試験ポイント

Public NAT Gatewayはパブリックサブネットに配置することを覚えておきましょう。

一方、NAT Gatewayを利用するEC2などはプライベートサブネットに配置できます。

WebサーバーとDBサーバーを分離する基本設計

AWSでは、すべてのリソースをパブリックサブネットへ配置するのではなく、インターネットから直接アクセスする必要があるかどうかによって配置を分けます。

単純な構成例として、

  • インターネットから直接アクセスを受けるWebサーバー → パブリックサブネット
  • 外部へ直接公開する必要がないDBサーバー → プライベートサブネット

という分離が考えられます。


Internet
   │
   ▼
Internet Gateway
   │
   ▼
Web Server
(Public Subnet)
   │
   ▼
DB Server
(Private Subnet)

データベースをインターネットへ直接公開する必要は通常ありません。

そのため、DBをプライベートサブネットへ配置し、必要なアプリケーションからのみアクセスできるように設計します。

セキュリティ設計の基本

「インターネットから直接アクセスする必要がないリソースは、むやみに外部へ公開しない」ことが重要です。

実際のAWSではロードバランサーを利用する構成が多い

先ほどは理解しやすくするため、Webサーバーをパブリックサブネットへ配置する例を紹介しました。

しかし、実際のAWSアーキテクチャでは、EC2を直接インターネットへ公開せず、Application Load Balancer(ALB)などをインターネットとの入口にする構成がよく利用されます。

例えば、次のような構成です。


Internet
   │
   ▼
Internet Gateway
   │
   ▼
Application Load Balancer
(Public Subnets)
   │
   ▼
Application EC2
(Private Subnets)
   │
   ▼
Database
(Private DB Subnets)

この構成では、インターネットからのアクセスをALBで受け、バックエンドのEC2へ転送します。

EC2を直接インターネットへ公開する必要がないため、よりセキュアな構成を作りやすくなります。

📘 SAA試験ポイント

「インターネット向けWebアプリケーションだから、EC2は必ずパブリックサブネット」とは限りません。

SAAでは、Internet-facing ALBをパブリックサブネットに配置し、バックエンドEC2をプライベートサブネットに配置する構成を理解しておくことが重要です。

2つのAZを使った高可用性構成

本番環境では、1つのAZだけにすべてのリソースを配置すると、そのAZで障害が発生した場合にサービス全体へ影響する可能性があります。

そのため、高可用性が必要なシステムでは、複数のAZへリソースを分散します。

例えば、AZ-aとAZ-cを利用する場合、次のような構成が考えられます。

この構成では、

  • パブリックサブネットを各AZに作成
  • プライベートサブネットを各AZに作成
  • ALBを複数AZへ展開
  • EC2を複数AZへ分散
  • データベースも高可用性構成にする

ことで、1つのAZに障害が発生しても別のAZでサービスを継続できるように設計します。

ゾーナルNAT Gatewayを利用する場合の高可用性

従来から広く利用されているゾーナルNAT Gatewayを使用する場合、複数AZ構成ではAZごとにNAT Gatewayを配置し、それぞれ同じAZのNAT Gatewayを利用する構成が基本です。

例えば、


AZ-a

Private Subnet-A
      ↓
NAT Gateway-A
      ↓
IGW


AZ-c

Private Subnet-C
      ↓
NAT Gateway-C
      ↓
IGW

とします。

これにより、一方のAZに障害が発生しても、もう一方のAZのアウトバウンド通信への影響を抑えることができます。

補足

AWSではRegional NAT Gatewayも提供されています。

ただし、SAAの基礎学習ではまずゾーナルNAT Gatewayを利用する場合の「AZごとにNAT Gatewayを配置する」設計を理解しておくと、VPCの高可用性設計を整理しやすくなります。

3層アーキテクチャで考えてみよう

SAAでは、WebシステムをWeb層・Application層・Database層に分けて考えると理解しやすくなります。

代表的な設計例は次のとおりです。

レイヤー配置例インターネットから直接アクセス
Web入口Public SubnetのALB
ApplicationPrivate SubnetのEC2×
DatabasePrivate DB SubnetのRDS×

通信の流れは次のようになります。


User
 ↓
Internet
 ↓
Internet Gateway
 ↓
ALB
(Public)
 ↓
EC2
(Private)
 ↓
RDS
(Private)

このように、インターネットへ公開する範囲を必要最小限にすることで、セキュリティを高めることができます。

RDSとDBサブネットグループ

RDSを利用する場合には、DBサブネットグループという仕組みも覚えておきましょう。

DBサブネットグループは、RDSを配置するために利用するサブネットの集合です。

一般的な本番構成では、異なるAZにあるプライベートサブネットをDBサブネットグループへ登録します。


DB Subnet Group

├── Private DB Subnet-A(AZ-a)
│
└── Private DB Subnet-C(AZ-c)

これによって、Multi-AZなどの高可用性構成を利用できるネットワーク基盤を用意します。

📘 SAA試験ポイント

RDSをインターネットから直接アクセスさせる必要がない場合は、プライベートなDBサブネットへ配置する設計を基本として考えましょう。

パブリックサブネットとプライベートサブネットの違い

比較項目パブリックサブネットプライベートサブネット
IGWへの直接ルートありなし
代表的なデフォルトルート0.0.0.0/0 → IGW0.0.0.0/0 → NAT Gateway
またはインターネット向けルートなし
インターネットからの直接接続他の条件も満たせば可能IGW経由の直接接続は不可
インターネットへの外向き通信IGW経由で可能NAT Gatewayなどを利用して可能
代表的な配置リソースInternet-facing ALB / Public NAT Gateway / Bastion HostなどApplication EC2 / Databaseなど

プライベートサブネットからAWSサービスへ接続する方法

プライベートサブネットのEC2がS3などのAWSサービスへアクセスするとき、必ずNAT Gatewayを利用しなければならないわけではありません。

AWSにはVPCエンドポイントという仕組みがあります。

VPCエンドポイントを利用すると、対応するAWSサービスへInternet GatewayやNAT Gatewayを経由せずに接続できる場合があります。

例えばS3やDynamoDBでは、Gateway VPC Endpointを利用できます。


Private EC2
     ↓
VPC Endpoint
     ↓
Amazon S3

この場合、


Private EC2
 ↓
NAT Gateway
 ↓
IGW
 ↓
S3

というインターネット経由の経路を利用する必要がありません。

📘 SAA試験ポイント

「プライベートサブネットからS3へ安全に接続したい」「NAT Gatewayのコストを削減したい」といった要件では、VPCエンドポイントが選択肢になることがあります。

セキュリティグループとサブネットの関係

サブネットがパブリックだからといって、インターネットからすべての通信が許可されるわけではありません。

反対に、プライベートサブネットだからセキュリティグループが不要になるわけでもありません。

AWSでは、

  • ルートテーブル → 通信経路を決める
  • セキュリティグループ → リソースへの通信を制御する
  • ネットワークACL → サブネット境界で通信を制御する

というように、それぞれ役割が異なります。

重要

ルートがあることと、通信が許可されていることは別です。

この違いはVPC関連のSAA問題を解くうえで非常に重要です。

🔥 SAAでよくある設計パターン

パターン① インターネットからWebアプリへアクセスさせたい


Internet
 ↓
IGW
 ↓
Internet-facing ALB
(Public Subnet)
 ↓
EC2
(Private Subnet)

ポイント:ALBをインターネットとの入口にし、EC2を直接公開しない。

パターン② Private EC2からインターネットへアクセスしたい


Private EC2
 ↓
NAT Gateway
 ↓
IGW
 ↓
Internet

ポイント:Public NAT Gatewayをパブリックサブネットへ配置する。

パターン③ Private EC2からS3へアクセスしたい


Private EC2
 ↓
Gateway VPC Endpoint
 ↓
Amazon S3

ポイント:要件によってはNAT Gatewayを経由させる必要がない。

パターン④ 高可用なWebシステムを作りたい


        Internet
            ↓
            ALB
       ↙          ↘
     AZ-a         AZ-c
      ↓             ↓
     EC2           EC2
      ↓             ↓
          RDS
       Multi-AZ

ポイント:複数AZへリソースを分散する。

⚠ 初心者が間違えやすいポイント

① パブリックIPがあればパブリックサブネット

誤りです。

パブリックサブネットを判断するときは、Internet Gatewayへのルートを確認します。

② プライベートサブネットはインターネット通信できない

必ずしもそうではありません。

NAT Gatewayなどを利用することで、外部から直接公開せずに外向き通信を行うことができます。

③ NAT Gatewayはプライベートサブネットに配置する

Public NAT Gatewayをインターネット接続に利用する場合は誤りです。

Public NAT GatewayはInternet Gatewayへ到達できるパブリックサブネットへ配置します。

④ Webサーバーは必ずパブリックサブネットに配置する

誤りです。

ALBをパブリックサブネットへ配置し、バックエンドEC2をプライベートサブネットへ配置する構成も一般的です。

⑤ ルートテーブルで通信を許可・拒否する

誤りです。

ルートテーブルは通信経路を決定します。

通信の許可・拒否には、セキュリティグループやネットワークACLなどが関係します。

SAA問題では通信経路を矢印で考える

VPC関連の問題では、文章だけで考えると混乱しやすいため、通信経路を頭の中で矢印にすると判断しやすくなります。

例えば、

「プライベートサブネットのEC2からインターネットへアクセスさせたい」

という要件なら、


EC2
 ↓
?
 ↓
Internet

と考えます。

EC2を直接公開したくないため、


EC2
 ↓
NAT Gateway
 ↓
IGW
 ↓
Internet

という構成が候補になります。

一方、

「インターネットからWebアプリケーションへアクセスさせたいが、EC2を直接公開したくない」

なら、


Internet
 ↓
IGW
 ↓
ALB
 ↓
EC2

と考えます。

📘 VPC問題の考え方

  1. 通信を開始するのは誰か
  2. 通信先はどこか
  3. インターネットから直接アクセスさせる必要があるか
  4. ルートテーブルのターゲットは何か
  5. IGW・NAT Gateway・VPC Endpointのどれが必要か
  6. 複数AZによる高可用性が必要か
  7. セキュリティグループなどで通信が許可されているか

AWS公式試験ガイドとの関連

パブリックサブネットとプライベートサブネットの設計は、SAAで求められるセキュアで可用性の高いアーキテクチャを理解するための重要な基礎です。

特に、

  • 外部公開するリソースを必要最小限にする
  • 複数AZへリソースを分散する
  • 必要なアウトバウンド通信だけを確保する
  • 適切なルーティング方法を選択する
  • AWSサービスへのプライベート接続を検討する

といった要件から適切な構成を判断できるようにしておきましょう。

🔥 SAA試験頻出ポイント

  • パブリックサブネットはIGWへの直接ルートを持つ
  • プライベートサブネットはIGWへの直接ルートを持たない
  • パブリックIPの有無だけでサブネットの種類を判断しない
  • Public NAT Gatewayはパブリックサブネットへ配置する
  • プライベートサブネットからNAT Gateway経由で外向き通信ができる
  • NAT Gatewayを経由してインターネット側からPrivate EC2へ新規接続することはできない
  • Internet-facing ALBをパブリックサブネット、EC2をプライベートサブネットへ配置する構成は重要
  • 高可用性では複数AZへサブネットとリソースを分散する
  • ゾーナルNAT GatewayではAZごとの配置を検討する
  • S3やDynamoDBではGateway VPC Endpointを利用できる
  • ルートテーブルとセキュリティグループは役割が異なる

VPC基礎①〜③をまとめて整理

要素役割
VPCAWS上の仮想ネットワーク
CIDRネットワークのIPアドレス範囲
サブネットVPCを分割したネットワーク
ルートテーブル通信の転送先を決める
Internet GatewayVPCとインターネットを接続する
NAT GatewayNATによって外向き通信などを実現する
パブリックサブネットIGWへの直接ルートを持つサブネット
プライベートサブネットIGWへの直接ルートを持たないサブネット

まとめ

パブリックサブネットとプライベートサブネットを理解するときに最も重要なのは、ルートテーブルを見ることです。

パブリックサブネット

0.0.0.0/0 → Internet Gateway

プライベートサブネット

0.0.0.0/0 → NAT Gateway

または、インターネット向けデフォルトルートを持たない構成です。

実際のWebシステムでは、


Internet
 ↓
Internet Gateway
 ↓
ALB
(Public Subnet)
 ↓
EC2
(Private Subnet)
 ↓
RDS
(Private DB Subnet)

というように、インターネットへ公開する範囲を必要最小限にする構成がよく利用されます。

さらに高可用性が求められる場合は、これらのリソースを複数AZへ分散します。

SAAでは単純にサービス名を暗記するのではなく、

「誰が、どこから、どこへ通信するのか」

を考えながら、サブネット・ルートテーブル・IGW・NAT Gatewayなどを組み合わせられるようにしておきましょう。

VPC・サブネットを実際に設計する場合は、「AWS VPC・サブネット設計ツール」も利用できます。
AZ数や必要IP数から、AWS環境に適したサブネットCIDRを自動で設計できます。
目次