目次
- Azure Virtual Networkとは?クラウドネットワークの基本概念
- VNetの基本的な特徴
- オンプレミスネットワークとの違い
- VNetのアドレス空間とサブネット設計の実践
- アドレス空間の計画
- サブネット分割の設計パターン
- NSG(ネットワークセキュリティグループ)によるアクセス制御
- NSGルールの構成要素
- 実践的なNSGルール設計
- サービスタグの活用
- VPN Gatewayによるオンプレミス接続
- VPN接続の種類
- VPN Gateway構築の手順
- VNetピアリングと接続パターン
- ピアリングの種類
- ハブ&スポーク構成
- プライベートエンドポイントとサービスエンドポイント
- サービスエンドポイント
- プライベートエンドポイント
- Azure Bastionによるセキュアな管理アクセス
- Bastionの構成手順
- VNet設計のベストプラクティスとチェックリスト
- アドレス設計のポイント
- セキュリティのポイント
- 運用のポイント
- 本番環境チェックリスト
クラウド環境でシステムを構築する際、最初に設計すべきはネットワークです。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の設計は、クラウドインフラの土台です。本記事で紹介した設計パターンとベストプラクティスを基に、自社の要件に合わせたネットワーク構成を構築してください。適切な設計は、セキュリティの向上だけでなく、運用負荷の軽減とコスト最適化にも直結します。
先行モニター企業 募集中|先着5社・2026年11月末まで 生成AIの利用費、「誰が・何のために・いくら」まで見えていますか?
株式会社カイダンと共同開発したAI利用ガバナンスSaaS「ManageAI」は、OpenAI・Azure OpenAI・Claude・AWS Bedrock・Google Vertex AIの費用と利用状況を、部署・利用者・プロジェクト別に可視化します。導入は読み取り専用キーの登録だけ。初期費用0円・月額5万円(税別)で先行モニター企業を募集しています。
ニュースリリースを読む関連記事
Related / 9 articles
Notes & Insights
- プログラミング
DDoS攻撃の仕組みと対策入門|レイヤー別の防御とCDN・クラウドの活用
DDoS攻撃をボリューム型・プロトコル型・アプリ層に分けて仕組みを解説し、自前サーバーで防げない理由、CloudflareやAWS Shieldの標準防御、オリジンIPの隠し方、レートリミットとBot対策、攻撃を受けたときの初動、費用が跳ね上がるDenial of Walletへの備えまでわかります。
- プログラミング
WAFとは?仕組み・導入パターン・誤検知対策|Webアプリを攻撃から守る実践ガイド
WAFがファイアウォールやIDSと何が違うのか、シグネチャとマネージドルールの仕組み、Cloudflare WAF・AWS WAF・ModSecurityの比較、フォーム送信がブロックされる誤検知の調査と例外設定、ログ監視、WAFが代替できないことまで実践的に解説します。
- プログラミング
セキュリティヘッダー入門|CSP・HSTS・X-Frame-Optionsの設定と効果を実践解説
CSP・HSTS・X-Frame-Options・X-Content-Type-Optionsなど主要セキュリティヘッダーが防ぐ攻撃と、CSPのReport-Onlyからの段階導入、nonce/hash、HSTS preloadの不可逆リスク、Nginx・Next.js・Astroでの設定例、確認方法を解説します。
- プログラミング
クラウドの通信費(Egress)入門|データ転送量課金の仕組みと転送コストを抑える設計
クラウドの「受信無料・送信有料」の原則、AZ間・リージョン間・インターネット向けの単価差、NATゲートウェイ処理料の罠、CDNで転送量を減らす方法、バックアップやログ転送の見落とし、請求書で転送料を特定する手順を解説。想定外の請求を防げます。
- プログラミング
秘密情報をGitに入れない仕組み|.gitignore・git-secrets・履歴から漏れた鍵の削除
APIキーや.envをGitにコミットしてしまう典型経路と、.gitignore・.env.exampleの運用、pre-commitでのgitleaks検知、GitHub secret scanningの活用、漏れた鍵の無効化と履歴書き換え(git filter-repo)の手順を解説。仕組みで再発を防げます。
- プログラミング
開発・ステージング・本番環境の分離設計|環境差分をなくす構成とアクセス制御
開発・ステージング・本番それぞれの目的と、構成をコードで揃える方法、環境別の設定注入、本番データを使わないテストデータ戦略、ステージングの保護(Basic認証・IP制限・noindex)、コストを抑える運用までを解説。環境差分による本番障害を防げます。
- プログラミング
ngrok・Cloudflare Tunnelでローカルを公開|Webhook開発とデモ環境の作り方
NAT内のローカル環境にStripeやLINEのWebhookを届けるトンネリングの仕組みを解説。ngrok・Cloudflare Tunnel・localtunnelの比較、固定ドメインと認証、リクエスト検査、公開時のセキュリティ、自宅サーバー公開への応用までわかります。
- プログラミング
ローカル開発環境のHTTPS化|mkcert・hostsファイル・自己署名証明書の正しい使い方
ローカル開発をHTTPS前提にすべき理由(Secure Cookie・Service Worker・OAuth)と、mkcertでローカルCAを作りhostsで独自ドメインを割り当ててVite・Next.js・Dockerで使う手順を解説。証明書警告を無視する癖の危険も理解できます。
- プログラミング
localhost・0.0.0.0・127.0.0.1の違い|ポートとUnixソケットを理解して「つながらない」を解決
localhost・127.0.0.1・0.0.0.0の意味の違い、Dockerで外から接続できない原因、host.docker.internal、ポート競合の調べ方、Unixソケットの利点と権限、1024未満ポートの制約を解説。「つながらない」を仕組みから解決できます。
先行モニター企業 募集中
生成AIのコストを「部署別」に、請求書より先に。
先着5社限定・2026年11月末まで。初期費用0円・月額5万円(税別)で、正式版と同等の機能に加え、開発者と伴走者による導入支援を追加費用なしで提供します。プロンプト原文は一切取得しません。
株式会社カイダン × Harmonic Society株式会社の共同事業|読み取り専用キーの登録だけで導入できます