AWS「パブリックサブネット」と「プライベートサブネット」の理解
目次
はじめに
AWS(Amazon Web Services)においてシステムを構築する際には、ネットワークの設計が必要不可欠です。ネットワークの設計において大切な要素の一つとして、「サブネット」があります。サブネット(サブネットワークの略)は、インターネットや大きなネットワークの中で、小さなネットワークの区画を作る考え方です。AWSにおいては、「VPC」という仮想的なネットワークを作成した後に、VPCを分割するために「サブネット」を設定します。これによりネットワークを管理しやすくするだけでなく、サブネットごとに役割を割り振ることでセキュリティを強化することもできます。
AWSにおけるサブネットには、「パブリックサブネット」と「プライベートサブネット」の2種類がありますが、本記事では、それらの違いについてわかりやすく解説していきます。
まず簡単に違いを説明
両者の簡単に違いを説明すると、以下のようになります。
パブリックサブネット
「Public(=公衆の)」とあるように、通信がインターネットに直接出入りすることができるサブネットです。オフィスビルの「受付ロビー」にたとえることができます。ロビーは外部から人々が自由に出入りでき、オフィスビルの中と外を繋ぐ役割を果たします。
プライベートサブネット
「Private(=私的な)」とあるように、基本的に通信がインターネットと直接出入りできないサブネットです。これはオフィスビルの「従業員専用のエリア」に似ています。このエリアには、会社の従業員のみがアクセスでき、外部の人は通常アクセスできません。なお、AWSにおいては特定の設定を追加することで間接的にインターネットに通信させることができます。
AWSネットワークを安心、安全に設計するスタイルズのAWSセキュリティサービスはこちら→
もう少し突っ込んで説明すると
より詳細な説明を行う前に、まずは「ルートテーブル」「デフォルトルート」について説明します。
ルートテーブル
サブネット間の通信経路を定義するための設定です。どのIPアドレスへの通信に対して、どういった経路を用いて接続を試行するかを定義する事ができます。たとえると「街の交通案内図」のようなものです。交通案内図には、さまざまな目的地へ行くための経路が記されており、どの道を通れば特定の場所に最も効率的に到達できるかが示されています。
デフォルトルート
ルートテーブルの中で、特定の宛先へのルートが存在しない場合に使われるルートです。たとえば、街の交通案内図にある特定の目的地への道が分からない場合、とりあえず大きな交差点に行くような場合と似ています。このようにルートテーブルに特定の宛先へのパスがない場合、デフォルトルートが使用されます。
パブリックサブネットの詳細な解説
ルートテーブルにおいて、デフォルトルートへの通信がインターネットゲートウェイへ接続されているサブネットの総称です。つまり、通信の宛先が分からない場合はインターネットへ通信が流れるサブネット、ということになります。
プライベートサブネットの詳細な解説
プライベートサブネットはデフォルトゲートウェイがインターネットゲートウェイに接続されていないサブネットの総称になります。つまり、宛先は必ずほかのサブネットになるネットワークのことを指しています。なお、インターネットへの通信ができないと、システム運用上不都合が生じる場合があります。例えば以下のような場合です。
- インターネットからセキュリティ上重要な更新プログラムを取得する
- インターネットからシステム開発に必要なライブラリを取得する
このような場合に、NATゲートウェイと呼ばれるサービスを利用することで、プライベートサブネット上のEC2などからでも間接的にインターネットと通信ができるようにすることができます。
インターネットゲートウェイとNATゲートウェイの違い
インターネットゲートウェイとNATゲートウェイには、下記のような違いがあります。
インターネットゲートウェイ
インターネットゲートウェイは、VPCとインターネットとの間の双方向の通信を可能にします。オフィスビルでたとえると、メインエントランスのように内部と外部の自由な出入りを許可します。インターネットゲートウェイはVPCにアタッチされます。
NATゲートウェイ
NATゲートウェイは、プライベートサブネット内のリソースがインターネットにアクセスするための方法を提供し、外部からの直接アクセスは防ぎます。オフィスビルのセキュリティゲートのように、内部からのアクセスは許可しますが、外部からの直接的な侵入は防ぎます。NATゲートウェイはサブネットにアタッチします。
インターネットゲートウェイをもっと詳しく
インターネットゲートウェイがどのように動作しているかについて、詳しく記載します。
インターネット上のサーバーと1対1の通信をできるようにする
現実世界において通信を行う際にメールアドレスや特定の電話番号が必要なように、インターネット上のサーバーや機器と通信を行うためには、グローバルIPアドレスが必要です。インターネットゲートウェイは、VPC内のEC2インスタンスがインターネット上の機器と通信ができるように、1対1でプライベートIPアドレス(VPC内で一意)とグローバルIPアドレス(世界で一意)を変換させる機能を持っています。これにより、デフォルトルートがインターネットを指している通信は、VPC外部と通信するときはグローバルIPアドレスが付与されているように通信されます。
NAT ゲートウェイをもっと詳しく
インターネット上のサーバーと1対多の通信をできるようにする
NATゲートウェイは、名前の通り『NAT』(Network Address Translation)の機能を提供しています。NATとは、プライベートIPアドレスを使用するプライベートサブネット内のインスタンスからのトラフィックを受け取り、そのトラフィックを自身のパブリックIPアドレスを使用してインターネットに転送することです。これにより、プライベートサブネット内のインスタンスは、パブリックIPアドレスを持たなくてもインターネットにアクセスできます。サブネット内のすべてのインスタンスが、NATゲートウェイのグローバルIPアドレスに変換されインターネットと通信するため、1つのNATゲートウェイに対して複数のインスタンスが対応することとなり、1対多の関係の通信を行うことになります。
双方向性のない通信
NATゲートウェイを通じての通信は一方向です。つまり、プライベートサブネットのインスタンスはインターネットにアクセスできますが、インターネットからはこれらのインスタンスに直接アクセスすることはできません。これにより、プライベートサブネット内のリソースが外部から直接アクセスされるリスクを低減し、プライベートサブネットのセキュリティを維持する役割を持っています。
お金がかかる
インターネットゲートウェイは無料でVPCにアタッチすることができますが、NATゲートウェイはコストがかかるリソースです。使用量に基づいて課金されるため、利用する場面は考慮する必要があります。
AWSネットワークを安心、安全に設計するスタイルズのAWSセキュリティサービスはこちら→
まとめ
パブリックサブネットとプライベートサブネットは、ルートテーブルにおいてインターネットへの通信経路が確保されているか否かの違いがあります。インターネットへの通信経路には、インターネットゲートウェイとNATゲートウェイの存在が関係しています。それぞれVPC内のリソースがインターネットと通信するための主要な手段ですが、インターネットゲートウェイはパブリックサブネットにアタッチされ、インターネットとの1対1の通信ができるような機能を提供します。一方でNATゲートウェイは、プライベートサブネット内のリソースがインターネットリソースを安全に利用できるようにするためのAWSサービスの一つです。似たような機能を持っていますが、利用場面や課金体系がそれぞれ異なっているため、違いを十分に理解したうえで利用しましょう。