目次
疑問の背景
AWSのコンソールを触ってネットワークを設定しているときに、サブネットの設定のところで以下のような質問はありません。
「このサブネットはパブリックにしますか?プライベートにしますか?」
これは実は自分たちで設定をいじって、それらに応じて
- これはプライベートサブネット
- こっちはパブリックサブネット
という概念を当てているにすぎません。
この設定の違いで何が違うんだっけ?という疑問が生じたので、今回整理しようと思いました。
結論
パブリックサブネット → インターネットと直接的につながっている
プライベートサブネット → インターネットと直接的につながっていない
この違いだけです。
「え?これだけ?」という方のために、もう少し詳細をお伝えすると...
外向きの通信がインターネットゲートウェイを向いたルートテーブルが設置されているサブネットが「パブリックサブネット」、それ以外が「プライベートサブネット」となります。
※「直接的に」という表現をしているのは、たとえパブリックサブネットでもInternet Gatewayを通らないといけないためです。後続の記述で理解できるかと思います。
詳細な解説
サブネットを作る際に、ルートテーブルをアタッチします。
そのルートテーブルの設定で以下のように、0.0.0.0/0 の宛先がInternet Gatewayを向いているとします。
この状況を具体的な日本語にすると、
「このサブネット内のリソースが、インターネット上の任意の場所(0.0.0.0/0)へ通信する際は、Internet Gatewayを経由してルーティングする」
ということです。
逆に、インターネットへ直接出られずNAT Gatewayなどを経由して外に出るようなサブネットが「プライベートサブネット」と呼ばれます。
よくある誤解
Q: セキュリティグループでパブリックかプライベートかって決まるんじゃないの?
A: No! セキュリティグループはインスタンスレベルでのトラフィック制御であり、サブネットレベルの話ではそもそもありません。
セキュリティグループは、パブリック/プライベートどちらのサブネットにあるリソースに対しても適用でき、インバウンド/アウトバウンドの通信を許可・拒否します。
一方、サブネットの種類(パブリック/プライベート)は、あくまでルートテーブルの設定によって決まります。
まとめ:
- パブリック/プライベートの区別 = ルートテーブルにIGWへの経路があるか
- セキュリティグループ = 個別リソースの通信制御(サブネットの種類とは無関係)
