
適切に構築されたAWS VPCは、セキュリティとスケーラビリティの観点から明確なネットワーク境界を提供します。基盤レイヤーが初期段階から正しく設計されている際、トラフィックやデータ量が増えても、システムは予測可能で、コンプライアンスを満たし、運用が容易になります。
VPC(Virtual Private Cloud)は、AWSがアカウントごとに提供する分離された仮想ネットワークであり、AWS環境内における「専用の領域」と言えます。
この中で、ユーザーはネットワーク設計のすべてを自由にコントロールできます:
オンプレミス環境のようにインフラを手作業で構築・維持する必要はなく、AWS VPCを使えば、運用負荷を抑えつつエンタープライズレベルのネットワーク境界を構築できます。
適切に設計されたVPCは、AWS上に配置されるすべてのワークロードの基盤です。VPCはトラフィックの流れ、インターネットへ接続できるコンポーネント、完全に隔離すべきレイヤーを決定します。
VPCを「計画的に区画されたデジタル上の街区」と考えると分かりやすく、各サブネットは役割・アクセス制御・接続方式が異なる独立ゾーンとなります。この構造こそが、安全でスケーラブルかつ堅牢なアーキテクチャを実現するための土台です。
VPCを設計するにあたり、まずは本番環境に共通するコアネットワーク要素を理解することが重要です。これらがトラフィックの流れ、インターネット接続の可否、ワークロード間の分離方法を決定します。この基礎が理解できれば、3種類のサブネットレイヤー(Public、Private、Database)の構成は自然と整理できます。
上記の各コンポーネントはそれぞれ固有の役割を持っていますが、サブネットレイヤーとして構成されて初めて意味を持ちます。
このような理由から、本番環境のVPCは通常、パブリック/プライベート/データベースの3 層構成で設計されます。
それでは、各レイヤーについて詳しく見ていきましょう。
パブリックサブネットには、インターネットからの通信を受け取る必要があるコンポーネントを配置します。
これにより、クライアントからのインバウンド通信は常に厳密に管理された入口ポイントを通過し、アプリケーション層やデータベース層へ直接到達することはありません。
プライベートサブネットには、パブリックIPを持つ必要のないアプリケーションサービスを配置します。主な構成要素は以下のとおりです。
パッケージ更新や外部 API の呼び出しなど、必要なアウトバウンド通信は、パブリックサブネットに配置された NAT Gateway を経由します。
通信は内側からのみ開始されるため、このレイヤーは不要なインターネットアクセスからアプリケーションを保護しつつ、正常な動作を維持できます。
アイソレーションレイヤーサブネットには、以下のようなデータストアを配置します。
このレイヤーにはインターネットへの直接的なルートは存在せず、セキュリティグループのルールを通じてアプリケーションレイヤーからのみアクセス可能となります。
.png&w=1920&q=75)
この厳格な分離により、外部からのトラフィックがデータベースに到達することを防ぎ、リスクを大幅に低減します。その結果、PCI DSSやGDPRなどのコンプライアンス要件への対応にも貢献します。
ベストプラクティスを適用する前に、現在のVPCがすでにアーキテクチャ上の限界を示していないかを確認することが重要です。代表的な兆候としては、CIDRアドレス空間の枯渇、アプリケーションのスケール不全、VPNや専用線接続などのハイブリッド接続の統合が困難になることが挙げられます。これらの問題が発生している場合、多くは部分的な修正ではなく、VPC全体の構造的な再設計が必要であることを示すサインです。
これらの課題に一貫して対応するため、現在の本番環境では、パブリックサブネット、プライベートアプリケーションサブネット、データベースサブネットを分離し、レイヤー間の通信を制御された一方向のトラフィックフローに限定する標準的なネットワーク構成が採用されています。
この構成は、セキュリティ境界の明確化、スケーラビリティの向上および機密性の高いワークロードに対するコンプライアンス確保を実現できるため、現在広く利用されています。
配置場所: 2つのアベイラビリティゾーンに分散した2つのサブネット(10.0.1.0/24、10.0.2.0/24)
主要コンポーネント
ルートテーブル
0.0.0.0/0 → インターネットゲートウェイ(Internet Gateway)
目的:
本レイヤーは、Webやモバイルクライアントからの外部トラフィックを受信し、TLS終端処理、悪意のあるリクエストのフィルタリング、静的コンテンツのキャッシュ配信を行います。検証済みのリクエストのみを、プライベートなアプリケーションレイヤーへ転送します。
配置場所: 2つのアベイラビリティゾーンに分散した2つのサブネット (10.0.3.0/24, 10.0.4.0/24)
主要コンポーネント:
ルートテーブル:
0.0.0.0/0 → NATゲートウェイ(NAT Gateway)
目的:
このレイヤーでは、すべてのビジネスロジックをパブリックIPを持たせずに実行します。ワークロードはNATゲートウェイ経由でアウトバウンド通信が可能ですが、インバウンドアクセスは ALBのみに制限されます。これにより、セキュリティ、スケーラビリティ、予測可能なトラフィック制御が実現されます。
配置場所: 専用の2サブネット (10.0.5.0/24, 10.0.6.0/24)
主要コンポーネント:
ルートテーブル:
10.0.0.0/16 → Local
(インターネットルートなし)
セキュリティ設定:
目的:
データベースを完全に分離し、インターネットからの直接アクセスを排除します。制御・監査可能なアプリケーションレイヤー経由の通信のみを許可することで、高いセキュリティとコンプライアンスを確保します。
.png&w=1920&q=75)
目的:
このように構造化され、予測可能な通信フローを採用することで、影響範囲(Blast Radius)を最小化し、監査性を向上させるとともに、PCI DSS、GDPR、ISO 27001などのセキュリティフレームワークへの準拠を確実にします。
Terraformを使用してVPC(いわゆるAWS VPC Terraform構成)を管理することで、ネットワーク設計をバージョン管理可能でレビューしやすいインフラとして扱うことができます。これにより、dev/stage/prod 環境間の一貫性を保ち、変更履歴の監査を可能にし、AWS コンソール上での手動操作による設定ドリフトを防止できます。
以下は、前述のアーキテクチャに基づき、VPCと3層サブネットを構築するTerraformの完全な構成例です。
1. VPCの作成
すべてのワークロードに対するネットワーク境界を定義します。
.png&w=1920&q=75)
2. パブリックサブネット + インターネットゲートウェイ + ルートテーブル
パブリックサブネットにはインターネットゲートウェイ(Internet Gateway)を接続し、アウトバウンド通信を許可するルートテーブルを設定します。
.png&w=1920&q=75)
3. プライベートアプリケーションサブネット + NATゲートウェイ
アプリケーションワークロードを外部に公開することなく、アウトバウンドのインターネットアクセスを可能にします。
.png&w=1920&q=75)
4. データベースサブネット―インターネット経路なし
データベースサブネットは、ローカルルーティングのみに限定し、完全に分離された状態を維持します。

5. ECSバックエンド用Security Group
信頼されたALBからの通信のみを許可し、不要なインバウンドアクセスを制限します。

6. RDS用Security Group ― ECS のみ許可
データベースレイヤーへのアクセスをアプリケーションレイヤーのみに限定します。

7. ECS Fargate サービスへのアタッチ
正しいセキュリティ境界を持つプライベートサブネット内でアプリケーションを実行します。

多くのVPCの問題は、実際の運用環境で繰り返し見られる、いくつかの基本的な設定ミスに起因しています。
初期の接続が容易に感じられるため、RDSインスタンスをパブリックサブネットに配置しているVPCは意外と多く存在します。しかし、この構成はデータベースを不要なリスクにさらし、ほとんどのセキュリティ要件やコンプライアンス要件に違反します。データベースは必ずインターネット経路を持たない分離サブネットに配置し、アクセスは アプリケーションレイヤーのセキュリティグループのみに制限すべきです。
EC2やECSタスクにパブリックIPを付与すると、手軽にアクセスやトラブルシューティングができるように感じられます。しかし、この方法はセキュリティ境界を不明確にし、攻撃対象領域(アタックサーフェス)を大きく広げてしまいます。アプリケーションワークロードはプライベートサブネットに配置し、アウトバウンド通信は NAT Gateway 経由とし、運用アクセスは SSM やプライベートな踏み台ホストを利用するのが適切です。
VPCの分離性を破壊してしまう最も起こりやすい原因の一つは、同一のルートテーブルをパブリック、プライベート、データベースの各サブネットに関連付けてしまうことです。
本来インターネット向けに送信されるべきトラフィックが、意図せず内部へ伝播してしまい、
ルーティングループの発生やレイヤー間の不正な接続漏れを引き起こす可能性があります。
適切な設計では、ルートテーブルを明確に分離します。
このように構成することで、各レイヤー間の通信境界が保たれ、安全で予測可能なネットワーク構成を実現できます。
将来的な拡張を見込まずにCIDRを小さく設定すると、サービスやサブネットの追加時にIPアドレスが枯渇してしまいます。後からVPCを拡張するのは非常に困難で、多くの場合、移行作業や複雑なピアリング構成が必要になります。最初から十分に大きなCIDR範囲を確保しておくことで、インフラの中断を伴わずにスケール可能なアーキテクチャを維持できます。
整理され、適切に構成されたVPCは、本格的なAWSワークロードに必要なセキュリティ、スケーラビリティ、運用の明確さを提供します。3層サブネットモデルを採用し、予測可能なデータフローを強制することで、システムの成長に伴っても、環境はコンプライアンスを維持しつつ、管理しやすい状態を保てます。
これらの原則を自社インフラへ適用する方法を検討されている場合、HaposoftのAWSチームがアーキテクチャレビューを行い、最適な改善案をご提案します。
専門的なサポートをご希望の際は、ぜひお気軽にお問い合わせください。
