AWS/Azure/GCPサービス比較 ネットワーク編

クラウドコンピューティングサービスでは、同じ用語で同様の機能が提供されていても、仕様の異なる部分が少なくありません。この投稿では、Amazon Web Services (AWS)Microsoft Azure (Azure)Google Cloud Platform (GCP) のネットワーク構成と通信制御の方法について比較していきます。

用語説明

クラウドで定番の用語が頻出するので、はじめに用語の説明を記載します。既に理解されている方は、次項のネットワーク構成にお進みください。

VPC / VNet

用途ごとの単位で作成する仮想ネットワークです。AWS、GCP では VPC(Virtual Private Cloud)、AzureではVNet(Virtual Network)と呼ばれます。1つのVPC/VNetは複数の「サブネット」というネットワークで構成されます。

一般的な使い方としては、VPC/VNetは大まかな用途単位(顧客向けサービス用、イントラネット用など)で作成して、細かいネットワーク要件(インターネットと直接通信を許可するか、しないか)の違いをサブネット単位で制御する、といったケースが考えられます。

リージョン

サービスを提供している地域です。各クラウドとも、世界中にリージョンを展開しています。各クラウドのリージョン詳細については、以下をご覧ください

AZ / ゾーン

リージョンの中にある論理的な区分で、データセンターを抽象化した概念です。AWS と Azure では AZ (Availability Zone)、GCP ではゾーンといいます。クラウド事業者やリージョンによっても異なりますが、1つのリージョンに2~4つの AZ / ゾーンが存在します。1つの AZ / ゾーンは、1つもしくは複数のデータセンターから構成されています。

複数の AZ / ゾーンにサーバー等をあらかじめ冗長化しておくことで、耐障害性や可用性を確保できます。停電や災害の影響で1つの AZ / ゾーンが停止しても、別の AZ / ゾーンで自分たちのサービスを提供できます。このような冗長構成は、Multi-AZ と呼ばれることもあります。

ネットワーク構成

ここから本題です。各クラウドのネットワーク構成の違いや特徴について見ていきます。

AWS

AWS では、リージョンの中に VPC が存在して、AZ の中にサブネットが存在します。VPC とサブネットの両方に、IP アドレス範囲(CIDR ブロック)を割り当てる必要があり、サブネットの IP アドレス範囲は、VPC の IP アドレス範囲の中から切り出して割り当てます。

aws network

Azure

Azure では、リージョンの中に VNet とサブネットがあります。AWS と異なり、サブネットは AZ をまたいで作成できます。VNet とサブネットの両方に IP アドレス範囲を割り当てる必要がある点は、AWS と同様です。

azure network

GCP

GCP では、VPC がグローバルな存在で、リージョンの中にサブネットがあります。サブネットは、Azure と同様にゾーンをまたいで作成できます。VPC に IP アドレス範囲を割り当てる必要はなく、サブネットにのみ割り当てます。

gcp network

ネットワーク構成の比較

各クラウドのネットワーク構成を比較してみると、以下の3点がポイントと考えます。

  1. AWS のサブネットが AZ の中に存在する
  2. GCP の VPC がグローバルである
  3. IP アドレス範囲の追加を VPC / VNet で行うか、サブネットで行うか

AWS のサブネットがアベイラビリティゾーンの中に存在する

複数の AZ でサーバーやサービスを冗長化するには、AZ 毎にサブネットを用意する必要があります。作成に手間がかかるようなら、定番の構成をテンプレート化しておくと楽です。

また、(滅多にないことですが)新設された AZ を使う場合にもサブネットの新規作成が必要です。新しいサーバータイプやサービスが特定の AZ から提供開始されることもあるので、長期利用が計画されている VPC では IP アドレス範囲に余裕を持たせておくといいかもしれません。

GCP の VPC がグローバルな存在

複数の国や地域でのサービス提供を視野に入れている場合でも、1つの VPC で対応できるのがメリットです。例えば、ロードバランサーの下に異なるリージョンのサーバーを配置して、リクエストをグローバルに分散させられます。AWS や Azure で実現するには、他のネットワーク系サービスを組み合わせる必要があります。

IP アドレス範囲の追加を VPC / VNet で行うかサブネットで行うか

AWS と Azure では、VPC / VNet に IP アドレス範囲を追加してネットワークを拡張します。GCP では、サブネットの新規作成で簡単に IP アドレス範囲を追加できます。GCP の VPC は、複数のサブネットをまとめて管理する存在として、ネットワークの拡張や設計変更に柔軟性があると言えます。

なお、他のネットワークと VPN 接続等をしている場合、IP アドレス範囲の追加によって相手先のルートテーブルを見直す必要がある点は、どのクラウドサービスでも共通です。

比較

AWS、Azure、GCP それぞれのネットワーク構成をまとめたものが次の図になります。

network configuration diagram

通信の制御

続いて、各クラウドの VPC / VNet における通信制御方法の違いについて、見ていきます。

AWS

AWS の通信制御には、セキュリティグループネットワーク ACL という2つの方法が用意されています。セキュリティグループは仮想マシンに割り当てるルールで、ネットワーク ACL は、サブネットに割り当てるルールです。セキュリティグループは、送信元や宛先に IP アドレスや CIDR ブロックのみならず別のセキュリティグループやプレフィックスリスト ID も設定できます1

aws access control

セキュリティグループとネットワーク ACL について、注意点が2つあります。

  1. セキュリティグループは許可ルールのみ設定できる
  2. ネットワーク ACL はステートレスセキュリティグループはステートフル

セキュリティグループは許可ルールのみ設定できる

拒否ルールは設定できません。特定の IP アドレスからの通信をサーバー単位で拒否したい場合は、許可ルールを組み合わせることで拒否を実現するか、ネットワーク ACL でサブネット単位ルールを設定します。

ネットワーク ACL はステートレス、セキュリティグループはステートフル

ネットワーク ACL では、戻りの通信も ACL のルールに従うので、明示的に許可を設定する必要があります。セキュリティグループでは、戻りの通信が設定に関係なく許可されます。

厳格なトラフィック制御のためにネットワークACLを採用するか、ルールの複雑化を防ぐためネットワーク ACLを使わずセキュリティグループのみで制御するか、通信要件と運用管理の双方を考慮して方針を決めておくと良いでしょう。

Azure

Azure の通信制御には、ネットワークセキュリティグループ(NSG) があります。NSG は、仮想マシンとサブネットの両方に割り当て可能で、ステートフルなルールです。許可と拒否のルールを設定できるため、AWS に比べて分かりやすいです。送信元や宛先には、IP アドレス、CIDR ブロック、サービスタグ、アプリケーションセキュリティグループを設定できます2

azure access control

GCP

GCP の通信制御には、ファイアウォールがあります。ファイアウォールは、VPC、仮想マシン単位で設定できます。送信元や宛先には、IP アドレス範囲、ネットワークタグ、サービスアカウントのうち、IP アドレス範囲と他2つを組み合わせてルールを書きます。ステートフルなルールで、許可と拒否の両方のルールを設定できます3

gcp access control

通信制御の比較

各クラウドの通信制御を比較してみると、以下のような違いがあります。

  1. AWS には、許可のみ設定できるセキュリティグループと、ステートレスなネットワーク ACL という2種類のルールがある。
  2. Azure と GCP には、タグが付与されているリソースに対して制御できるルールがある。
  3. GCP は、VPC 単位で制御できる。

以下の図で、各クラウドサービスの通信制御機能を設定する単位ごとにまとめてみます。

access control diagram

まとめ

AWS、Azure、GCPのネットワークについて比較してみました。ネットワーク構成と通信制御の比較を表にまとめると以下のようになります。

AWS Azure GCP
VPC に IPアドレス範囲の設定 必要 必要 不要
VPC の単位 リージョン リージョン グローバル
サブネットの単位 AZ リージョン リージョン
サブネットの通信制御 ネットワークACL NSG ファイアウォール
インスタンスの通信制御 セキュリティグループ NSG ファイアウォール

クラウドでインスタンス、コンテナ、関数のいずれを使う場合でも VPC / VNet 上で動かすので、ネットワークは重要な存在です。デフォルトの VPC / VNet 上なら簡単に使えるサービスでも、インターネットとの通信を制限したプライベートサブネット上ではサービス側のネットワーク要件を満たすために追加的な対応が必要なこともあります。クラウドサービスによって細かい仕様は異なるので、ネットワーク設計の段階から意識しておきたいところです。

参考

ALPHA SYSTEMS INC.

株式会社アルファシステムズは、ITサービス事業を展開しています。このブログで、技術的な取り組みを紹介しています。