VPCとは
VPCは「Virtual Private Cloud」の略です。その名の通り、AWSクラウド内に論理的に分離された、お客様専用の「仮想ネットワーク」を構築できるサービスです。
AWSアカウントを作成すると、デフォルトでVPCが作成されていますが、より柔軟なネットワーク設計やセキュリティ強化のためには、このVPCを理解し、適切にカスタマイズする必要がある。
目次
- サブネット
- ルートテーブル
- インターネットゲートウェイ (IGW)
- NATゲートウェイ
- セキュリティグループ
- ネットワークACL (NACL)
- VPCピアリング
- VPCエンドポイント
サブネット:VPCをさらに分割する「区画」
VPCの中に、さらに小さなネットワークの区画を作成するのが「サブネット」です。サブネットは必ず1つのアベイラビリティゾーン(AZ)内に存在します。
サブネットには、大きく分けて2種類あります。
- パブリックサブネット:インターネットから直接アクセス可能なリソース(Webサーバーなど)を配置するためのサブネットです。インターネットゲートウェイを経由して外部と通信します。
- プライベートサブネット:インターネットから直接アクセスできないリソース(データベースサーバーなど)を配置するためのサブネットです。より高いセキュリティが求められる場合に利用します。
ルートテーブル:ネットワークの「交通整理役」
「ルートテーブル」は、ネットワークトラフィックをどこにルーティング(転送)するかを決定するルール(ルート)の集合体です。サブネット内のインスタンスから送信される通信が、どこに向かうべきかを指示する交通整理役のようなものです。
例えば、「インターネットへの通信はインターネットゲートウェイへ」「社内ネットワークへの通信はVPN接続へ」といったルールを設定できます。
インターネットゲートウェイ (IGW):インターネットへの「出入り口」
「インターネットゲートウェイ (IGW)」は、VPCとインターネット間の通信を可能にするためのVPCコンポーネントです。VPCにアタッチすることで、VPC内のリソースがインターネットと双方向で通信できるようになります。
パブリックサブネットに配置されたWebサーバーなどがインターネットからのアクセスを受け付けたり、外部のAPIにアクセスしたりする際に、このIGWが必要になります。
NATゲートウェイ:プライベートサブネットからインターネットへの「安全な出口」
「NATゲートウェイ」は、プライベートサブネット内のインスタンスが、インターネットからの直接アクセスを許可することなく、インターネットへのアウトバウンド(外向き)通信を行うためのマネージドサービスです。
例えば、プライベートサブネット内のデータベースサーバーが、OSのアップデートのためにインターネット上のリポジトリにアクセスする必要があるが、外部からのアクセスは受け付けたくない、といった場合に利用します。NATゲートウェイは高可用性でスケーラブルなため、一般的な用途で推奨されます。
NATインスタンスとの違い
以前はNATインスタンスというEC2インスタンスを立てる方法もありましたが、運用管理の手間やスケーラビリティの面から、現在ではNATゲートウェイの利用が推奨されています。
セキュリティグループ:インスタンスレベルの「防火壁」
「セキュリティグループ」は、EC2インスタンスなどのインスタンスレベルでインバウンド(内向き)およびアウトバウンド(外向き)のトラフィックを制御するステートフルな仮想ファイアウォールです。
「ステートフル」とは、一度許可されたアウトバウンド通信に対する戻りのインバウンド通信は自動的に許可される、という意味です。例えば、Webサーバーが外部にリクエストを送信した場合、その応答は自動的に許可されます。
ネットワークACL (NACL):サブネットレベルの「関所」
「ネットワークACL (NACL)」は、サブネットレベルでインバウンドおよびアウトバウンドのトラフィックを制御するステートレスな仮想ファイアウォールです。
「ステートレス」とは、インバウンドとアウトバウンドの通信をそれぞれ個別にルールで明示的に許可する必要がある、という意味です。セキュリティグループよりも大まかなルールを設定する際に利用され、セキュリティグループと組み合わせて多層防御を実現します。NACLはセキュリティグループよりも先に評価されます。
VPCピアリング:異なるVPC間の「直通トンネル」
「VPCピアリング」は、2つのVPC間でプライベートな通信経路を確立するための機能です。異なるVPC内のインスタンス同士が、プライベートIPアドレスを使って直接通信できるようになります。
例えば、開発環境と本番環境を別のVPCで運用しているが、一時的に開発環境から本番環境のデータベースにアクセスしたい、といった場合に利用します。同じアカウント内のVPCだけでなく、異なるアカウントや異なるリージョン間のVPCピアリングも可能です。
VPCエンドポイント:AWSサービスへの「プライベートな玄関」
「VPCエンドポイント」は、VPCからS3やDynamoDBといったパブリックなAWSサービスに対して、インターネットゲートウェイやNATゲートウェイを介さずに、プライベートに接続するための機能です。
これにより、AWSサービスへのアクセスがインターネットを経由しないため、セキュリティが向上し、ネットワークトラフィックの管理も容易になります。データがインターネットに公開されないため、コンプライアンス要件を満たしやすくなります。
まとめ:VPCはAWSの「インフラ設計図」
VPCは、AWSクラウド上に自分だけのネットワーク空間を作り、その中でリソースを安全かつ効率的に配置するための「インフラ設計図」のようなものです。サブネットで区画を分け、ルートテーブルで通信経路を指示し、セキュリティグループやNACLでアクセスを制御するなど、様々な要素を組み合わせて理想のネットワーク環境を構築できます。