クラウド環境でシステムを構築する際、最初に設計すべきはネットワークです。Azure Virtual Network(VNet)はAzure上のすべてのリソースが通信する基盤であり、設計を誤ると後から修正するコストが膨大になります。
この記事では、Azure Virtual Networkの基本概念からサブネット設計、NSG(ネットワークセキュリティグループ)によるアクセス制御、VPN接続やピアリングまで、本番環境を想定した実践的な構成手順を解説します。
Azure Virtual Networkとは?クラウドネットワークの基本概念
Azure Virtual Network(VNet)は、Azure上に作成するプライベートなネットワーク空間です。オンプレミスのLAN環境をクラウド上に再現するものと考えるとわかりやすいでしょう。
VNetを利用することで、Azure上の仮想マシン(VM)、データベース、Webアプリケーションなどのリソースが安全に相互通信できます。また、インターネットへの接続やオンプレミス環境とのハイブリッド接続も制御可能です。
VNetの基本的な特徴
Azure VNetには以下の特徴があります。
- 論理的な分離:各VNetは独立しており、他のテナントやサブスクリプションからは完全に隔離される
- アドレス空間の自由設計:RFC 1918に準拠したプライベートIPアドレス範囲を自由に指定できる
- サブネット分割:VNet内をさらに細かいサブネットに分割し、用途ごとにリソースを配置できる
- DNS統合:Azure提供のDNSまたはカスタムDNSサーバーを利用できる
- トラフィック制御:NSGやルートテーブルで通信を細かく制御できる
VNetはリージョン単位で作成します。複数リージョンにまたがるシステムでは、リージョンごとにVNetを作成し、ピアリングで接続する構成が一般的です。
オンプレミスネットワークとの違い
オンプレミスのネットワークとVNetの大きな違いは、物理的な機器が不要な点です。ルーター、スイッチ、ファイアウォールといったハードウェアはすべてソフトウェアで定義されます。
この「Software Defined Networking(SDN)」の仕組みにより、ネットワーク構成の変更が数分で完了します。オンプレミスでは機器の調達から設定まで数週間かかる作業が、Azure Portalやコマンドラインから即座に実行できます。
VNetのアドレス空間とサブネット設計の実践
VNet設計でもっとも重要なのが、アドレス空間(CIDR)の決定とサブネットの分割です。ここで適切な設計を行わないと、後からの変更が困難になります。
アドレス空間の計画
VNetのアドレス空間には、以下のプライベートIPアドレス範囲を使用します。
- 10.0.0.0/8:大規模ネットワーク向け(約1,677万アドレス)
- 172.16.0.0/12:中規模ネットワーク向け(約104万アドレス)
- 192.168.0.0/16:小規模ネットワーク向け(約6万5千アドレス)
実務では10.0.0.0/16のように、/16のプレフィックスで始めるのが一般的です。これにより約65,000個のIPアドレスが確保でき、将来のサブネット追加にも柔軟に対応できます。
複数のVNetを構築する予定がある場合は、アドレス空間が重複しないように事前に計画しましょう。VNetピアリングではアドレスの重複が許可されないため、重複があると接続できません。
サブネット分割の設計パターン
典型的なWebアプリケーション環境のサブネット設計例を紹介します。
VNet:10.0.0.0/16の場合
- Webサブネット(10.0.1.0/24):フロントエンドのWebサーバーやApp Serviceを配置
- アプリケーションサブネット(10.0.2.0/24):バックエンドのAPIサーバーやFunctionsを配置
- データベースサブネット(10.0.3.0/24):Azure SQL DatabaseやCosmos DBのプライベートエンドポイントを配置
- 管理サブネット(10.0.4.0/24):踏み台サーバー(Bastion)や管理用VMを配置
- GatewaySubnet(10.0.255.0/27):VPNゲートウェイ専用(名前は固定)
各サブネットには/24(254個のIPアドレス)を割り当てるのが基本です。Azureは各サブネットの先頭4つと末尾1つのIPアドレスを予約するため、/24で利用可能なアドレスは251個になります。
この設計はAzure App Serviceの構成やAzure SQL Databaseの運用と組み合わせることで、セキュアなアプリケーション基盤を構築できます。
NSG(ネットワークセキュリティグループ)によるアクセス制御
NSGはAzure VNetにおけるファイアウォールの役割を果たします。サブネットまたはネットワークインターフェース(NIC)に関連付けて、受信・送信トラフィックをルールベースで制御します。
NSGルールの構成要素
NSGの各ルールは以下の要素で構成されます。
- 優先度:100~4096の数値。数値が小さいほど優先される
- ソース:送信元のIPアドレス、サービスタグ、またはアプリケーションセキュリティグループ
- ソースポート範囲:送信元のポート番号
- 宛先:送信先のIPアドレス、サービスタグ、またはアプリケーションセキュリティグループ
- 宛先ポート範囲:送信先のポート番号
- プロトコル:TCP、UDP、ICMP、またはAny
- アクション:AllowまたはDeny
実践的なNSGルール設計
Webサブネット用のNSG設定例を見てみましょう。
受信ルール:
- 優先度100:HTTPS(443)をインターネットから許可
- 優先度110:HTTP(80)をインターネットから許可(リダイレクト用)
- 優先度200:SSH(22)を管理サブネットからのみ許可
- 優先度4096:その他のすべての受信トラフィックを拒否(デフォルト)
データベースサブネット用のNSG設定例:
- 優先度100:SQL Server(1433)をアプリケーションサブネットからのみ許可
- 優先度200:管理ポート(3389/22)を管理サブネットからのみ許可
- 優先度4096:その他のすべての受信トラフィックを拒否
重要なのは最小権限の原則です。必要な通信のみを明示的に許可し、それ以外はすべて拒否する設計にしましょう。この考え方はゼロトラストセキュリティの基本原則とも共通しています。
サービスタグの活用
NSGルールでは「サービスタグ」を使うと、AzureサービスのIPアドレス範囲を自動的に参照できます。IPアドレスを手動で管理する必要がなくなり、Azureが範囲を更新した際にも自動追従します。
よく使うサービスタグは以下のとおりです。
- Internet:インターネット全体
- VirtualNetwork:VNet内のすべてのアドレス空間
- AzureLoadBalancer:Azureロードバランサー
- Storage:Azure Storageのエンドポイント
- Sql:Azure SQL Databaseのエンドポイント
- AzureMonitor:Azure Monitorのエンドポイント
VPN Gatewayによるオンプレミス接続
Azure VPN Gatewayを使うと、オンプレミスのネットワークとAzure VNetをインターネット経由で暗号化された安全なトンネルで接続できます。
VPN接続の種類
Azureでは主に以下の2種類のVPN接続をサポートしています。
サイト対サイト(S2S)VPN:
オンプレミスのVPN機器(ルーターやファイアウォール)とAzure VPN Gatewayを常時接続する方式です。企業のオフィスネットワークとAzureを接続する場合に使用します。IPsecトンネルによる暗号化で、最大1.25 Gbpsのスループットを実現できます。
ポイント対サイト(P2S)VPN:
個々のクライアントPC(リモートワーカーなど)からAzure VNetに接続する方式です。OpenVPNプロトコルやIKEv2を使用し、Azure Active Directoryと統合した認証も可能です。
VPN Gateway構築の手順
サイト対サイトVPN接続の構築手順は以下のとおりです。
ステップ1:GatewaySubnetの作成
VNet内に「GatewaySubnet」という名前のサブネットを作成します。この名前は固定で変更できません。推奨サイズは/27以上です。
ステップ2:VPN Gatewayの作成
GatewaySubnet上にVPN Gatewayリソースを作成します。SKUは接続要件に応じて選択します。VpnGw1(最大650 Mbps)が中小規模の構成では一般的です。作成には30~45分程度かかります。
ステップ3:ローカルネットワークゲートウェイの作成
オンプレミス側のVPN機器のパブリックIPアドレスとローカルネットワークのアドレス空間を登録します。
ステップ4:接続の作成
VPN GatewayとローカルネットワークゲートウェイをIPsec接続で結びます。共有キー(PSK)を設定し、オンプレミス側のVPN機器にも同じキーを設定します。
構築後は、Azure Portalの「接続」リソースからステータスが「接続済み」と表示されることを確認しましょう。
VNetピアリングと接続パターン
VNetピアリングは、2つのVNet間をAzureバックボーンネットワーク経由で直接接続する機能です。インターネットを経由しないため、低遅延かつ高帯域幅の通信が可能です。
ピアリングの種類
- リージョン内ピアリング:同一リージョン内のVNet間を接続。データ転送コストは無料
- グローバルピアリング:異なるリージョンのVNet間を接続。データ転送にはリージョン間のデータ転送料金が発生
ハブ&スポーク構成
複数のVNetを管理する場合の推奨構成が「ハブ&スポーク」モデルです。
ハブVNetには共通リソースを配置します。
- VPN GatewayまたはExpressRouteゲートウェイ
- Azure Firewall
- Azure Bastion(踏み台)
- 共通の管理サーバー
スポークVNetには個別のワークロードを配置します。
- 本番環境のアプリケーション
- 開発・テスト環境
- 部門別のシステム
各スポークVNetはハブVNetとのみピアリングし、スポーク間の通信はハブVNetのAzure Firewallを経由させます。これにより、通信の一元管理とセキュリティの確保が両立できます。
この構成はAzure Well-Architected Frameworkの設計原則でも推奨されている、信頼性とセキュリティを両立するパターンです。
プライベートエンドポイントとサービスエンドポイント
Azure PaaSサービス(Storage、SQL Databaseなど)はデフォルトでパブリックエンドポイントを持ちます。セキュリティを強化するために、VNet内からのアクセスに限定する方法が2つあります。
サービスエンドポイント
サービスエンドポイントは、サブネットからAzure PaaSサービスへの通信経路をAzureバックボーンネットワーク内に閉じる機能です。設定が簡単で追加コストも不要です。
ただし、通信先のPaaSサービス側にもアクセス制御(ファイアウォールルール)を設定する必要があります。また、オンプレミスからの通信はサービスエンドポイント経由では到達できません。
プライベートエンドポイント
プライベートエンドポイントは、PaaSサービスにVNet内のプライベートIPアドレスを割り当てる機能です。サービスエンドポイントよりも高いセキュリティを実現します。
主な利点は以下のとおりです。
- PaaSサービスがVNet内のリソースとして扱える
- オンプレミスからVPN/ExpressRoute経由でアクセスできる
- NSGによるアクセス制御が適用できる
- パブリックエンドポイントを完全に無効化できる
Azure Blob StorageやAzure SQL Databaseを本番環境で運用する場合は、プライベートエンドポイントの利用を強く推奨します。
Azure Bastionによるセキュアな管理アクセス
VNet内の仮想マシンに管理アクセスする際、パブリックIPアドレスを直接付与するのはセキュリティリスクがあります。Azure Bastionを使えば、Azure Portal経由でRDP/SSH接続ができ、VMにパブリックIPを割り当てる必要がありません。
Bastionの構成手順
1. AzureBastionSubnetの作成
VNet内に「AzureBastionSubnet」という名前のサブネット(/26以上)を作成します。この名前も固定です。
2. Bastionホストの作成
Azure Portalから「Bastion」リソースを作成し、作成したサブネットに関連付けます。パブリックIPアドレスが自動的に割り当てられます。
3. VMへの接続
Azure Portalの仮想マシンページから「接続」→「Bastion」を選択し、ユーザー名とパスワード(またはSSHキー)を入力するだけで、ブラウザ上でリモートデスクトップやSSHセッションが開きます。
Bastionを導入することで、管理ポート(3389、22)をインターネットに公開する必要がなくなり、ブルートフォース攻撃などのリスクを大幅に低減できます。
VNet設計のベストプラクティスとチェックリスト
最後に、Azure VNet設計で押さえるべきベストプラクティスをまとめます。
アドレス設計のポイント
- 将来の拡張を見据えて、十分な大きさのアドレス空間(/16推奨)を確保する
- 複数VNet間でアドレス空間が重複しないようIPアドレス管理台帳を作成する
- オンプレミスネットワークのアドレス空間とも重複しないように計画する
- 各サブネットは/24を基本とし、用途に応じて調整する
セキュリティのポイント
- すべてのサブネットにNSGを関連付ける(例外はGatewaySubnet)
- NSGルールは最小権限の原則に従い、必要な通信のみ許可する
- PaaSサービスにはプライベートエンドポイントを使用する
- VMへの管理アクセスにはAzure Bastionを利用する
- NSGフローログを有効にして通信を監視する
運用のポイント
- ネットワーク構成はTerraformなどのインフラストラクチャ・アズ・コードで管理する
- Azure Monitorでネットワークのメトリクスとログを監視する
- Azure Network Watcherを使ってトラブルシューティングを行う
- 定期的にNSGルールをレビューし、不要なルールを削除する
- Azureコスト管理でネットワーク関連のコストを把握する
本番環境チェックリスト
VNetを本番環境にデプロイする前に、以下の項目を確認しましょう。
- アドレス空間の重複がないか確認したか
- 各サブネットにNSGが関連付けられているか
- 不要なパブリックIPアドレスが割り当てられていないか
- PaaSサービスへのプライベートエンドポイントが構成されているか
- DNSの設定は正しいか
- VPN/ExpressRouteの冗長構成が確保されているか
- NSGフローログが有効になっているか
- ネットワーク構成がコードで管理されているか
Azure Virtual Networkの設計は、クラウドインフラの土台です。本記事で紹介した設計パターンとベストプラクティスを基に、自社の要件に合わせたネットワーク構成を構築してください。適切な設計は、セキュリティの向上だけでなく、運用負荷の軽減とコスト最適化にも直結します。
関連記事
AWS CloudFrontでサイト高速化|CDN設定からキャッシュ戦略まで実践解説
AWS CloudWatchで監視・アラート設定|運用担当者のための実践ガイド
AWS CodePipelineでCI/CD構築|コード変更から本番デプロイまでの自動化
AWS Cost Explorerでコスト可視化|ムダを見つけて月額費用を削減する実践術
AWS ECS/Fargateでコンテナ運用|Docker→本番デプロイの実践ガイド
AWS IAMのベストプラクティス|最小権限の原則を実務で実装する方法
AWS RDSの実務ガイド|データベース構築・バックアップ・パフォーマンスチューニング
AWS S3の実務活用ガイド|バケット設計・アクセス制御・コスト最適化の実践