Amazon VPC のネットワーク設計 - サブネット構成と NAT Gateway の最適化

パブリック/プライベートサブネットの分離設計、セキュリティグループの層別管理、Gateway VPC エンドポイントによる NAT Gateway コスト削減を紹介します。

VPC の概要

VPC は AWS 上に論理的に分離された仮想ネットワークを構築するサービスです。CIDR ブロックで IP アドレス範囲を定義し、サブネット、ルートテーブル、セキュリティグループ、ネットワーク ACL でネットワークを制御します。パブリックサブネットとプライベートサブネットの分離で、インターネットに公開するリソースと内部リソースのセキュリティ境界を確立します。

サブネット設計と NAT Gateway

パブリックサブネットはインターネットゲートウェイへのルートを持ち、ALB や NAT Gateway を配置します。プライベートサブネットはインターネットへの直接ルートを持たず、EC2RDSLambda を配置します。NAT Gateway はプライベートサブネットからのアウトバウンド通信 (パッケージ更新、API 呼び出し) を提供しますが、時間課金とデータ処理課金が発生します。S3 や DynamoDB へのアクセスは VPC エンドポイント (ゲートウェイ型、無料) を使用し、NAT Gateway を経由しないことでコストを削減します。VPC Flow Logs は ENI レベルのトラフィックを CloudWatch Logs や S3 に記録し、不正アクセスの検出や通信障害の調査に使用します。

セキュリティグループと NACL の設計

セキュリティグループはステートフルなインスタンスレベルのファイアウォールで、許可ルールのみを定義します。アプリケーション層 (ALB)、ビジネスロジック層 (EC2/ECS)、データ層 (RDS) ごとにセキュリティグループを分離し、層間の通信をセキュリティグループ ID で参照する設計が推奨されます。ネットワーク ACL はステートレスなサブネットレベルのファイアウォールで、許可と拒否の両方を定義できます。特定の IP レンジからのアクセスを明示的にブロックする場合や、サブネット単位での粗い制御に使用します。 VPC Flow Logs を有効にして、セキュリティグループと NACL で拒否されたトラフィックを分析し、ルールの過不足を定期的に見直します。 ネットワーク設計の知見を広げたい場合はAmazon の専門書も活用できます。

NAT Gateway のコスト最適化

NAT Gateway はデータ処理料金 (1 GB あたり約 0.062 ドル) と時間課金 (約 0.062 ドル/時) が発生し、大量のアウトバウンド通信がある環境ではコストが急増します。S3 と DynamoDB への通信は Gateway VPC エンドポイント (無料) を設定して NAT Gateway を経由させないことが最も効果的な削減策です。ECR、CloudWatch Logs、STS など頻繁にアクセスする AWS サービスにはインターフェース VPC エンドポイントを設定し、NAT Gateway のデータ処理量を削減します。マルチ AZ 構成で各 AZ に NAT Gateway を配置する場合、AZ 間のデータ転送料金は発生しませんが、NAT Gateway の時間課金が AZ 数分になります。Cost Explorer で NAT Gateway のコストを月次追跡し、VPC エンドポイントの追加による削減効果を定量的に評価します。

CIDR 設計とアドレス計画

VPC の設計で最初に重要なのが、アドレス範囲 (CIDR) の計画です。将来の拡張や、他の VPC・オンプレミスとの接続を見据えて、十分な広さを確保しつつ、重複しないアドレス空間を割り当てます。CIDR が重複すると、ピアリングや VPN で接続したときに正しくルーティングできなくなります。組織全体でアドレスの割り当てを管理し、各 VPC やサブネットに計画的に範囲を配分することが、後々の接続性の問題を防ぎます。最初に窮屈な設計にすると拡張時に作り直しが必要になるため、余裕を持った計画が、長く使えるネットワークの土台になります。

可用性とマルチ AZ 設計

本番のネットワークは、単一の障害点を作らない設計が基本です。サブネットは複数のアベイラビリティゾーンにまたがって用意し、各ゾーンに同じ役割の構成を配置します。これにより、片方のゾーンに障害が起きても、別のゾーンでサービスを継続できます。アウトバウンド通信を担う NAT も、各ゾーンに冗長に配置することで、ゾーン障害時の通信断を防げます。ロードバランサーやインスタンスをゾーンに分散させ、ゾーンを意識した構成にすることで、高い可用性を確保できます。冗長化はコストとのバランスもあるため、要件に応じて適切な水準を設計します。

接続性の選択肢

VPC は、他のネットワークと接続することで活用の幅が広がります。少数の VPC を 1 対 1 でつなぐならピアリングが手軽ですが、数が増えると管理が煩雑になります。多数の VPC やオンプレミスを集約するなら、ハブとして機能する Transit Gateway が適します。特定のサービスだけに安全に接続したい場合は、PrivateLink を使えばネットワーク全体を見せずに済みます。オンプレミスとの接続には VPN や専用線を使います。接続する相手の数や、求めるセキュリティ・性能に応じて、これらの手段を適切に選び、組み合わせることが重要です。

監視とトラブルシューティング

ネットワークの問題は切り分けが難しいため、可視化の仕組みを整えておきます。通信のログを記録すれば、どの通信が許可・拒否されたかを確認でき、接続できない原因の調査に役立ちます。経路の到達性を分析するツールを使えば、設定ミスでパケットが届かない箇所を特定できます。通信制御は、ステートフルなセキュリティグループと、サブネット単位で効くネットワーク ACL の二層で構成されるため、どちらでブロックされているかを切り分けます。設定と実際の通信を突き合わせて検証する手段を用意しておくことが、安定したネットワーク運用を支えます。

まとめ

VPC はサブネット分離、セキュリティグループ、ネットワーク ACL でネットワークセキュリティを多層的に確保するサービスです。アプリケーション層、ビジネスロジック層、データ層ごとにセキュリティグループを分離し、VPC Flow Logs でトラフィックを分析します。Gateway VPC エンドポイントで S3/DynamoDB への無料プライベート接続を確立し、NAT Gateway のデータ処理コストを最適化します。