AWS VPC
AWS VPC
目次

Amazon VPC徹底解説:GCP VPC・Azure VNetとの実務比較で“壊れないネットワーク設計”を身につける

はじめに(要点サマリー)

  • 本記事はAmazon VPC(Virtual Private Cloud)を中心に、GCP VPCAzure Virtual Network(VNet)用語対応・設計思想・安全なインターネット到達・ハイブリッド接続・観測性・コストの観点で比較する実務者向けの長編ガイドです。
  • 先に結論:“最初の一週間で決めるべきこと”は、①アドレス計画(IPv4/IPv6)、②ルーティング(ハブ&スポーク)、③境界(Egress/Ingress)、④IDベースの許可(SG/IAM)、⑤**監査(Flow Logs/Traffic Mirroring/CloudTrail)**の5点。ここが固まると、アプリは“ただ乗せるだけ”で安定します。
  • AWSはNAT Gateway・PrivateLink・Interface/Gatewayエンドポイント・Network Firewall・Transit Gatewayなど部品の選択肢が広く、自由度が高いのが長所。GCPは**“一つのグローバルVPC”の考え方が明快で、Cloud NAT・Private Service Connectがシンプル。AzureはVNet/サブネット/NSG/Route Tableの一体感とPrivate Endpoint/Firewall/Virtual WAN**の企業統合が得意です。
  • すぐ使えるCIDR設計テンプレ最小セキュア構成ルート表の雛形セキュリティグループ/NSGの対訳ハブ&スポークの3パターン図解(文章化)、インシデントRunbookTerraformの概念サンプルを収録。
  • 読者像:情報システム部門のネットワーク/クラウド移行担当、SRE/プラットフォームエンジニア、アプリ開発者、セキュリティ/ガバナンス担当。オンプレからの段階移行、マルチアカウント/マルチクラウドの“つながる設計”を一気に整理したい方向けです。

1. VPCの基本思想と3クラウド対応の言い換え

VPCは「自分専用の仮想ネットワーク」をクラウド内に作る機能です。**CIDR(アドレス範囲)**を決め、サブネットを切り、ルート表で経路を制御し、**セキュリティグループ(SG)/ネットワークACL(NACL)**で到達性を絞ります。

  • AWS:リージョン内にVPCを作り、AZごとにサブネットを配置し、IGW/NAT GW/Endpoints/TGWなどで内外と接続。
  • GCPVPCはグローバルサブネットはリージョン単位Cloud Router/Cloud NAT/PSC/VPN/Interconnectで接続。
  • AzureVNetはリージョン単位サブネットはVNet内NAT Gateway/Private Endpoint/Firewall/ExpressRoute/VPNで接続。

覚え方

  • セキュリティの主役は“ID(SG/NSG/権限)”経路は“ルート表”境界は“NAT/Firewall/Endpoint”
  • 物理の“内外”という感覚ではなく、**“どのIDがどの宛先へ、どの経路・暗号・監査で行けるか”**を言語化します。

2. アドレス計画(CIDR)と命名規則:最初に決めて、二度と変えない

2.1 CIDR基本戦略

  • 重複させない:将来のハイブリッド接続/マルチクラウド/組織統合を見据え、RFC1918の使い方を計画的に
  • 成長余地/16(65,536IP)をVPCに割り、/19〜/24単位でサブネット切り出しが王道(数値は目安)。
  • 役割分離App/DB/Shared/Ingress/Egress/管理など用途ごとにサブネットを固定化。

2.2 命名規則(例)

  • VPC{org}-{env}-{region}-vpc(例:acme-prod-apne1-vpc
  • Subnets{vpc}-{az}-{purpose}(例:acme-prod-apne1a-app
  • RouteTable/NACL/SG{env}-{layer}-{purpose}で**“用途”が目に入る名前**を。

2.3 サンプルCIDR配分(文章図)

  • VPC10.64.0.0/16
    • Public(Ingress/Egress)10.64.0.0/20(a/c/eの3AZへ均等分割)
    • App(プライベート)10.64.16.0/19
    • Data(プライベート)10.64.48.0/20
    • Shared/管理10.64.64.0/20
      将来のオンプレ/他クラウドとの重複を避けるため、組織で“予約帳”を運用します。

3. ルーティングと境界:ハブ&スポークを迷わず選ぶ

3.1 3つの標準パターン

  1. 最小構成(小規模/単一VPC)
    • Publicサブネット:IGWでインターネット到達、ALBやNLBを配置。
    • Privateサブネット:NAT GWで外向き通信、インバウンドはALB/NLB経由のみ。
  2. ハブ&スポーク(中〜大規模)
    • ネットワーク専用VPC(ハブ)NAT GW/Firewall/監査を集約。
    • 業務VPC(スポーク)Transit Gateway(AWS)/VPC Peeringでハブに接続。
  3. マルチクラウド/ハイブリッド
    • ハブにVPN/専用線(DX/Interconnect/ExpressRoute)を集約し、ルート集約監査を一本化。

3.2 経路表(Route Table)の雛形(例:スポークVPC/Private)

Destination      Target
10.64.0.0/16     local
0.0.0.0/0        tgw-xxxxxxxx   # ハブ(NAT/Firewall)へ委譲
::/0             tgw-xxxxxxxx   # IPv6時
10.20.0.0/16     tgw-xxxxxxxx   # オンプレ/他クラウドへのルート

考え方スポークの外向きはハブへハブでEgress制御。インターネットへ直出しさせないことで、監査と制御点が一箇所になります。

3.3 3クラウド対比(境界)

  • Egress(NAT):AWS NAT Gateway/GCP Cloud NAT/Azure NAT Gateway
  • Privateサービス到達:AWS Interface/Gateway Endpoint・PrivateLink/GCP Private Service Connect/Azure Private Endpoint
  • 中央集約:AWS Transit Gateway/GCP VPC Network Peering+Cloud Router/Azure Virtual WAN/Hub
  • L7の公開ALB/Cloud Load Balancing/Application Gatewayを使い、VM/関数を直接公開しないのが基本線。

4. セキュリティモデル:SG/NACL/Firewallの役割分担

4.1 セキュリティグループ(SG)

  • インスタンス/ENIに紐づく“状態あり(stateful)”フィルタ
  • ルールはホワイトリストで、**ID(SG→SG参照)**での許可が要。
  • アプリの論理境界(Web→App→DBの段階)をSGで表現すると、運用が簡潔になります。

4.2 ネットワークACL(NACL)

  • サブネット境界の“ステートレス”フィルタ
  • 明示的Deny/Allowを順番で評価。特殊用途(例:一時的な遮断・外部連携の最小化)で使います。
  • 日常の許可はSG中心、NACLは追加の保険という位置づけが楽です。

4.3 ネットワークファイアウォール/IDPS

  • AWS Network Firewall / Azure Firewall / Cloud Armor/Cloud IDSなどをハブに置き、東西/南北トラフィックL3〜L7制御脅威対策を集中させます。
  • Gateway Load Balancer(AWS)はファイアウォールアプライアンスのインライン化に便利。

4.4 3クラウド対比(言い換え)

  • SG ↔ NSG(Azure)/GCP firewall rules
  • NACL ↔ Azureに近似なし(NSGで代替)/GCP firewallはVPCレベル
  • Network Firewall ↔ Azure Firewall/GCP Cloud Firewall/IDS

5. インターネット公開は“CDN&L7 LB経由”が基本

  • S3/静的配信CloudFront(GCPはCloud CDN、AzureはFront Door/Azure CDN)でTLS・WAF・キャッシュを前段に。
  • API/アプリALB(GCP:HTTP(S) LB、Azure:App Gateway)でTLS終端・ルーティングWAFはLB/CDN側で。
  • NLB/GLB:L4用途(gRPC/超高スループット/固定IP)。AWS GWLBセキュリティアプライアンスを挟みやすい。
  • “直接パブリックIPで実機公開”は避ける:メンテ/ガバナンス/観測が分散し、事故時の切り分けが難しくなります。

6. Private接続の極意:Endpoints/PrivateLinkの使いどころ

  • Gateway Endpoint(S3/DynamoDB)NATを通さずにS3/DynamoDBへ到達。データ流出リスク/転送料の抑制に有効。
  • Interface Endpoint(Powered by PrivateLink)各種AWSサービス/自社サービスプライベートIPで呼び出し。Zero Trustの実装に効きます。
  • GCPPrivate Service ConnectAzurePrivate Endpointが相当。**“SaaS含む外部サービスを私設到達”**にする流れは3クラウド共通です。

7. ハイブリッド接続:VPN/専用線/名前解決

  • Site-to-Site VPN:短期・可用性要件が緩い用途。冗長トンネルで安定性を確保。
  • 専用線(AWS Direct Connect / Google Interconnect / Azure ExpressRoute)帯域・遅延・SLAが必要な基幹向け。
  • 名前解決Private Hosted Zone(Route 53)/Cloud DNS/Private DNSで**“どの名前をどこへ”**を明確に。
  • Split-horizon DNS同一FQDNの内外切替を扱う場合は、キャッシュ/TTL境界の監査を忘れずに。

8. IPv6・Egress・ゼロトラスト:2025年の実務ガイド

  • IPv6アドレス枯渇回避だけでなく、一方向NATを減らすことでトラブルシュートを簡潔に。ただしEgress制御はより大切に。
  • Egress制御宛先FQDN/タグでの許可(PrivateLink/Endpoint/WAF)を組み合わせ、“どこへ出てよいか”を宣言
  • ゼロトラストIDベース許可(SG/NSG/Firewall)+mTLS/OIDCで**“誰がどこへ”**を毎回検証。**踏み台レス(SSM/IAP/Bastion JIT)**を前提に。

9. 観測性:Flow Logsと“見える化の4点セット”

  • VPC Flow Logs送信元/宛先/ポート/許可/拒否を収集。異常なEgress/ポートスキャンを検知。
  • Traffic Mirroring:パケットレベルの深掘り。インシデント時の原因究明に有効。
  • CloudWatch/Cloud Logging/Azure Monitorダッシュボード接続数・拒否数・帯域・遅延を可視化。
  • CloudTrail/Audit Logs/Activity Log誰がネットワーク設定を変えたかを追える状態に。
    ログ保管は別アカウント/別プロジェクトに集約すると、改ざん耐性が上がります。

10. コスト最適化:Egress/NAT/監査を“賢く”

  • NAT Gatewayの数と経路:スポーク側に置かず、ハブに集約して経路最短×数最小を狙う。
  • Endpointsの活用:S3/DynamoDBはGateway EndpointNAT課金/転送料を削減。
  • ログの粒度と保持Flow Logs/Traffic必要な粒度/保持期間に。集計→要約保管で費用を平準化。
  • CDNキャッシュ:外向き帯域/オリジン負荷を軽減し、Egress費を抑える。
  • 構成の“型化”IaC(Terraform/CloudFormation/Bicep/DM)再現可能な最小構成に固定すると、無駄な部品が増えません。

11. 3クラウド対比(要点表現の言い換え)

  • 仮想ネットワーク:VPC(AWS)/VPC(GCP:グローバル)/VNet(Azure)
  • セキュリティグループ:SG(AWS)/Firewall rule(GCP)/NSG(Azure)
  • Privateサービス接続:Interface/Gateway Endpoint・PrivateLink/Private Service Connect/Private Endpoint
  • NAT/Egress:NAT Gateway/Cloud NAT/NAT Gateway
  • 中央接続:Transit Gateway/VPC Peering+Cloud Router/Virtual WAN(Hub & Spoke)
  • ファイアウォール:Network Firewall/Cloud Firewall/IDS/Azure Firewall
  • ログ:VPC Flow Logs/VPC Flow Logs(GCP)/NSG Flow Logs/NSG Diagnostics

12. 最小セキュア構成(文章図解)

  1. スポークVPC(App/Data)Privateサブネットのみ
  2. ALB/NLBハブVPCのPublicサブネットに配置。
  3. App→外部TGW→ハブNAT GW経由。
  4. S3/DynamoDBGateway Endpoint、他のAWSサービス/社内SaaSはInterface Endpoint/PrivateLink
  5. SGALB→App、App→DB2段で最小許可。
  6. Flow Logsオン+CloudTrail集約Network Firewallはハブに。

13. サンプル設定

13.1 セキュリティグループ(最小・ALB経由のみ)

# アプリSG:ALBのSGからの80/443のみ許可、DBへは別SGで
APP_SG=$(aws ec2 create-security-group --group-name app-sg --description "app" --vpc-id vpc-xxx --query GroupId --output text)
ALB_SG=$(aws ec2 create-security-group --group-name alb-sg --description "alb" --vpc-id vpc-xxx --query GroupId --output text)

aws ec2 authorize-security-group-ingress --group-id $APP_SG --protocol tcp --port 80  --source-group $ALB_SG
aws ec2 authorize-security-group-ingress --group-id $APP_SG --protocol tcp --port 443 --source-group $ALB_SG

13.2 ルート表(スポークPrivate→ハブ)

aws ec2 create-route --route-table-id rtb-xxxx --destination-cidr-block 0.0.0.0/0 --transit-gateway-id tgw-xxxx
aws ec2 create-route --route-table-id rtb-xxxx --destination-ipv6-cidr-block ::/0 --transit-gateway-id tgw-xxxx

13.3 Flow Logs(CloudWatch Logs宛て)

aws ec2 create-flow-logs \
  --resource-type VPC --resource-ids vpc-xxxx \
  --traffic-type ALL \
  --log-destination-type cloud-watch-logs \
  --deliver-logs-permission-arn arn:aws:iam::123456789012:role/vpc-flow-logs-role \
  --log-group-name /vpc/flow/prod

14. Terraform概念サンプル(ハブ&スポークの要点)

# VPC(スポーク)
resource "aws_vpc" "spoke" {
  cidr_block           = "10.64.0.0/16"
  enable_dns_hostnames = true
  enable_dns_support   = true
  tags = { Name = "acme-prod-apne1-spoke" }
}

# Private Subnet(例)
resource "aws_subnet" "spoke_app_a" {
  vpc_id                  = aws_vpc.spoke.id
  cidr_block              = "10.64.16.0/20"
  availability_zone       = "ap-northeast-1a"
  map_public_ip_on_launch = false
  tags = { Name = "app-a" }
}

# Transit Gateway Attachment(ハブ接続)
resource "aws_ec2_transit_gateway_vpc_attachment" "spoke_attach" {
  subnet_ids         = [aws_subnet.spoke_app_a.id]
  transit_gateway_id = aws_ec2_transit_gateway.hub.id
  vpc_id             = aws_vpc.spoke.id
}

15. よくある落とし穴と回避策

  • CIDR重複:後戻りが難しい失敗。**設計初日に“全社予約表”**を作り、申請フローを整えます。
  • パブリック直公開:VM/DBを直接晒すと運用が複雑化。ALB/CloudFront/PrivateLinkを前提に。
  • NAT乱立:各VPCにNATを置きすぎてコスト増。ハブに集約し、Endpointsを活用。
  • SGとNACLの混同SG中心で設計し、NACLは補助。**“IDで許可”**を徹底。
  • ログ未整備:トラブル時に見えないFlow Logs/CloudTrail標準装備に。
  • 名前解決の無計画Private DNS/Hosted Zone各環境の命名規約を最初に定義。

16. ケーススタディ(3パターン)

16.1 企業ポータル(インターネット公開+社内API連携)

  • 構成:ハブVPC(ALB/Firewall/NAT)+スポークVPC(App/Data)。外部はCloudFront→ALB、内部はPrivateLinkで社内APIへ。
  • ポイントEgress集約で監査簡潔、WAFはCDN/L7に集約。Flow Logsは別アカウントに保管。
  • GCP/AzureCloud CDN→HTTP(S) LBFront Door→App GatewayPSC/Private Endpointが同発想。

16.2 SaaS基盤(マルチテナント+ゼロトラスト)

  • 構成:テナント毎にスポークVPCを分離、中央IdP+mTLSInterface Endpointで内部SaaSに到達。
  • ポイントSGのID参照テナント間の到達ゼロを担保。監査ログを一箇所に。
  • GCP/AzureVPC Peering+Firewall rulesVNet Peering+NSGPrivate Service Connect/Endpointを活用。

16.3 ハイブリッド(工場/拠点×クラウド)

  • 構成:オンプレはデュアルVPN→将来専用線へ。ルート集約はハブ工場からのクラウド行きは必要最小経路のみ
  • ポイントSplit-horizon DNS帯域監視ローカルブレイクアウトの基準を文書化。
  • GCP/AzureCloud Router+HA VPNVirtual WAN+VPN Gatewayで対称構成。

17. 設計チェックリスト(初週で固める10項目)

  1. CIDR/命名規則:全社共有の予約帳と申請フロー。
  2. ハブ&スポーク方針:どのVPCがハブか、Egress/Firewall/監査の集約先は。
  3. サブネット役割:Public/Private/管理の分離、AZ分散。
  4. 経路:0.0.0.0/0はハブ/TGWへ。オンプレ/他クラウドのプレフィックス管理。
  5. SG/NACLSG中心。NACLは補助。SG→SG参照を標準に。
  6. Endpoints:S3/DynamoDBのGateway、他はInterface/PrivateLink。
  7. DNS:Private Hosted Zone/Private DNSの分割、命名規約、TTL。
  8. 観測:Flow Logs/CloudTrail/Traffic Mirroringの運用。保管先は別アカウント。
  9. ゼロトラスト:踏み台レス(SSM/IAP/Bastion JIT)、mTLS/OIDC、最小到達性。
  10. コスト:NAT/Endpoints/ログ保持の見直しサイクル。

18. 運用Runbook(ネットワーク障害の初動)

  1. 検知:アプリ経路のp95遅延/特定宛先到達不可/拒否増加をアラートで把握。
  2. 切り分けDNS→SG→ルート表→NAT/Firewall→相手先の順でトレース。Flow Logsで拒否/許可を確認。
  3. 一時緩和:**代替経路(予備NAT/別AZ)**を有効化、LBのヘルスチェック閾値を調整。
  4. 原因特定:直近のIaC差分/CloudTrailで変更箇所を特定。Traffic Mirroringで深掘り。
  5. 恒久策ルート収束の設計見直し、DNS TTL最適化、SGのID参照の徹底。
  6. ふりかえりダッシュボード/Runbook更新、変更審査に“経路影響レビュー”を追加。

19. 想定読者と到達ゴール(具体的に)

  • 情報システム部門(オンプレ統合/拠点多数)
    CIDR予約帳・ハブ&スポーク・Private Endpointの三点で、全社ネットワークの衝突/抜け道を排除。監査ログ集約審査対応が軽くなります。
  • SRE/プラットフォームエンジニア
    最小セキュア構成の“型”(ALB前段/SG中心/Endpoints)をIaC化し、新規プロダクトを同じ型で即日展開できます。
  • アプリ開発者
    “L7はLB、到達はSG、外へはハブ”の原則で、ネットワーク設計を意識せずとも安全なデプロイが可能に。
  • セキュリティ/ガバナンス担当
    踏み台レス・最小到達性・ゼロトラストを標準化し、人に依存しない監査変更追跡が整います。
  • スタートアップCTO/技術リード
    小さく始めつつ、ハブ集約とCIDR余裕成長に合わせた拡張ができます。NAT/ログのコスト管理も仕組み化できます。

20. Q&A(よくある質問)

  • Q:SGとNACL、どちらを主に使うべきですか?
    A:SG中心で設計します。IDベースで許可でき、状態管理(stateful)も自動です。NACLは補助的な境界に留めます。
  • Q:NAT Gatewayはどこに置くのが良い?
    A:ハブに集約してEgressを一本化します。Endpointsの併用でNAT経由を最小化します。
  • Q:IPv6を使うべき?
    A:はい。アドレス余裕・NAT削減のメリットが大きいです。Egress制御と監査を同時に強化してください。
  • Q:Transit GatewayとVPC Peeringの使い分けは?
    A:スケールと運用一元化が必要ならTGW点と点の単純接続ならPeering。将来の拡張が見えているなら最初からハブ設計が無難です。

21. 付録A:CIDR予約帳テンプレ(抜粋)

  • 環境dev / stg / prod
  • VPC10.64.0.0/16(prod)/10.65.0.0/16(stg)/10.66.0.0/16(dev)
  • サブネット用途public-ingress / private-app / private-data / shared-admin
  • 予約ルール/16単位は重複不可/19以上の空き確保申請はチケットで記録

22. 付録B:ネーミング&タグ標準(例)

  • Tagsenv=prodowner=platformdata-classification=internalegress=hubzone=apne1
  • SG名prod-app-web-in(ALB→App)、prod-app-db-in(App→DB)
  • RouteTable名prod-spoke-private-rt(0/0→tgw)

23. 付録C:今日できる3ステップ

  1. VPCのCIDR/サブネット役割/命名規則をドキュメント化し、**“予約帳”**を整備。
  2. Flow Logs/CloudTrail全VPCで有効化し、別アカウントに集約
  3. **Endpoints(S3/DynamoDB)**を追加して、NAT経由のEgressとリスクを即日削減

まとめ:IDで許可し、経路は集約し、監査で“見える”にする

Amazon VPCの設計は、CIDR計画→ハブ&スポーク→SG中心→Endpoints→観測という順に“型化”すると、安全・拡張・コストのバランスが取れます。
GCP VPCでもAzure VNetでも、Private接続の徹底Egressの一本化ログ集約の原則は同じ。アプリはL7に集約し、到達はIDで許可。この筋道さえ外さなければ、チームの規模やクラウドが変わっても壊れないネットワークが育ちます。
次回はAmazon CloudFrontを取り上げ、Cloud CDN(GCP)/Azure Front Doorとの違いを踏まえながら、WAF/オリジン設計/キャッシュ/コストまで“フロントの最適解”を丁寧に深掘りします。どうぞお楽しみに。

投稿者 greeden

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)