単なるWebサイトではなく、高セキュリティなネットワーク設計(VNet、NSG、Private Endpoint)、Webアプリケーション(App Service)、そしてバックエンドでの処理(Azure Batch)を組み合わせた、企業の基幹業務や大規模サービス向けの堅牢なシステム構成を構築します。
目次
構成

- VNet
- Subnet
- NSG
- Application Gateway
- App Service
- App Service Plan
- Azure SQL Database
- Azure Batch
- VPN Gateway
- ストレージアカウント
- Azure DNS
- Applicatin Insights
アクセスフロー
- User → Application Gateway → App Service → Azure SQL Database
- Azure Batch → Azure SQL Database
- 外部ネットワーク → VPN Gateway
前提
- サブネットは以下のものを作成する。(仮想ネットワークのセグメントは、20.0.0.0/16)
| 名称 | アドレス範囲 | 用途 |
| snet-agw | 20.0.0.0/24 | Application GW用 |
| snet-appsvc | 20.0.1.0/24 | App Service用 |
| snet-db | 20.0.2.0/24 | SQL Database用 |
| snet-batch | 20.0.3.0/24 | Azure Batch プール |
| GatewaySubnet | 20.0.4.0/27 | VPN Gateway用 ※名称は固定 ※「/27」以上がMicrosoft推奨値 |
- 各サブネットにNSGを設置する。
- App Serviceで利用する言語は指定なしとするが、本題とは異なる部分であるため簡単なもの(なるべく時間を割かないもの)とする。
- Azure SQL DatabaseやVPN Gatewayなど利用料が高額になる可能性があるサービスは、必要最低限の構成(スペック)とする。
- ハンズオン時間は1〜3時間を想定する。
- Azure サブスクリプションやハンズオンを行うためのロールは既に手元にあることを前提とする。
- リージョンは「Japan East」を前提とする。
- リソースグループは作成済みであることを前提とする。
ハンズオン
ネットワーク & NSG 作成(15〜20分)
- 仮想ネットワーク(VNet)及びサブネット作成
- NSG作成及びサブネットへの関連付け(サブネット毎に1つ)
NSGのルール
- nsg-agw
- Inbound:80/443をInternet から許可
- Outbound:VNet宛てを許可
- 関連付けサブネット:snet-agw
- nsg-appsvc
- Inbound:VNet内から80/443を許可
- Outbound:Anyを許可
- 関連付けサブネット:snet-appsvc
- nsg-db
- Inbound:VNet内(App Service/Batchサブネット)からのSQLポート(1433)を許可
- 実際にはPrivate EndpointのNICに対する通信になる
- Outbound:デフォルト
- 関連付けサブネット:snet-db
- Inbound:VNet内(App Service/Batchサブネット)からのSQLポート(1433)を許可
- nsg-batch
- Inbound:デフォルト
- Outbound:VNetとAzure Batch管理用の必要最小限(本ハンズオンではデフォルト許可でOK)
- 関連付けサブネット:snet-batch
PaaSがInternetへのアウトバウンドが必要な理由
App ServiceなどのPaaSは、Azureの管理プレーンや依存サービスへ「インターネット経由の通信」を行うためです。
- 内部的な管理通信(アプリの実行、デプロイ、ログ収集など)にAzureのパブリックエンドポイントを利用する部分があります。
- DNS解決や証明書更新などの基盤機能にInternetが必要となります。
- 多くのAzure PaaSサービスは、アウトバウンドのインターネット通信が制限されると動きません。
またVNet統合をしていても、App Serviceのアウトバウンド通信には「VNet経由」と「インターネット経由」両方が存在します。
GatewayサブネットへのNSG適用
現在のMicrosoft learnで明確に禁止をされているわけではないですが、過去に明確に禁止と記載がされていたことや、Azure内部で使う通信が存在するため、NSGは設定しない方が無難です。
ストレージアカウント作成(5〜10分)
Azure Batchのジョブやログの保管先として利用します。
Azure SQL Database作成(20〜25分)
SQL サーバ & DB 作成
ここでいうSQLサーバは論理サーバであり「ただの入れ物」に過ぎないため注意が必要です。
またSQL Databaseへのアクセスはプライベートエンドポイント経由とするとセキュリティレベルがあがります。
プライベートエンドポイントとは?
インターネットを経由せず “VNet 内のプライベート IP” でアクセスできるようにする仕組みのこと。
プライベートエンドポイント作成時に「Private DNS ゾーン統合」は有効としましょう。
Private DNS ゾーンとは?
VNet内だけで有効なDNSゾーンであり、プライベートエンドポイントアクセス時に自動で名前解決が機能します。
※サービス名(例:xxxx.database.windows.net)で接続すると内部のプライベートIPが返ってくる
Azure SQL Databaseについて詳細を知りたい方は以下のブログ記事にまとめてます。
App ServiceとApp Service Plan(20〜25 分)
App Serviceのインフラ基盤であるApp Service PlanとWebアプリ本体であるApp Serviceを作成します。
App ServiceとApp Service Planについては以下の記事にまとめてます。
App Serviceからデータベース(Azure SQL Database)へ接続するための情報として、接続文字列(鍵情報)を設定する必要があります。
接続文字列はApp Serviceの『構成→環境変数→接続文字列』で設定します。接続文字列を設定するメリットは以下の通りです。
接続文字列を設定するメリット
- アプリケーションのコードに直接パスワードなどを書く必要がなくなる
- 接続情報を環境変数として安全にアプリケーションへ提供することができる
- スロットごとに接続先を切り替えることができる
ソースコードが流出したとしても実際の情報はAzure環境内に存在すること、またスロット(別環境)毎に接続先を切り替えられるため検証・本番環境の行き来や作業が容易となります。
またApp ServiceでVNet統合を有効化すると、さらにセキュリティを高められます。
VNet統合とは?
App ServiceがVNetの内部リソース(例:SQL、ストレージ、仮想マシン)にプライベートIPアドレス経由でアクセスできるようにする仕組みです。
VNet統合により、App ServiceからVNet内(Private Endpoint内のAzure SQL Database)にアクセスできるようになります。
おまけ
試してみたい方はApplication Insightsを有効化し、アプリケーションの動き(リクエスト数・エラー・応答時間・例外・依存サービスの動作)を自動で記録し可視化できるようにしましょう。
Azure Batch(20〜25 分)
Azure Batchの構成要素は以下3つとなります。
| 構成要素 | 概要 |
| Batchアカウント | Batchアカウントは、Azure Batchサービスを利用するための管理上の最上位エンティティ(入れ物)です。 役割: 算出リソース(プール)や実行する作業(ジョブ)を管理する窓口です。 特徴: 1つのサブスクリプション内に複数作成でき、クォータ(使用制限)や課金の単位となります。また、アプリケーションパッケージやストレージアカウントとの紐付けもここで行います。 |
| プール | プールは、実際にアプリケーションを実行するためのコンピューティングノード(仮想マシン)の集合体です。 役割: 「計算リソース」そのものです。 特徴: OSの種類(Windows/Linux)、ノードのサイズ(CPU/メモリ)、ノード数などを設定します。オートスケール機能により、負荷に応じてノード数を自動増減させることが可能です。 |
| ジョブ & タスク | 実行したい「作業の内容」を定義するレイヤーです。 <ジョブ (Job)> 役割: タスクをまとめるグループ(実行単位)です。 特徴: どのプールで実行するかを指定します。ジョブ自体が計算を行うわけではなく、共通のスケジュールや優先度を管理します。 <タスク (Task)> 役割: ジョブに含まれる最小の実行単位(具体的な処理)です。 特徴: 各タスクはプールのノードに割り当てられ、コマンドライン(スクリプトやプログラム)を実行します。 標準タスク: 通常の計算処理。 開始タスク: ノードがプールに参加した際、最初に一度だけ実行されるセットアップ処理。 |
Application Gateway(20〜25 分)
Application Gatewayはただ通信を通すだけでなく、「中身を見て、適切な場所へ案内する」 役割を持っています。
構成
- フロントエンド:ユーザが一番最初にアクセスする場所。インターネット上の住所(IPアドレス)にあたる。
- バックエンドプール :バックエンドターゲットを登録するリスト
- ルーティング規則:リスナーが確認した内容を元に、どこへ案内するかを決めるルール
- リスナー :フロントエンドに来たアクセスの調整
- どのドメイン宛の通信か?
- 暗号化された通信か?(HTTPS)
- バックエンドターゲット:ウェブページを表示するサーバのこと。仮想マシン(VM)やApp Serviceなどがここに含まれます。ルーティング規則によって案内された注文を実際に処理し、結果をお客様に返します。
- リスナー :フロントエンドに来たアクセスの調整
Application Gatewayについては以下のブログにまとめてます。
Azure DNS(10〜15分)
- プライベートDNSゾーン
- 特定のネットワークの中にいる人だけが使える、秘密の電話帳
- 部外者(インターネット側)からは、この電話帳の中身を見ることはできません
- パブリックDNSゾーン
- インターネット上の誰からでも検索できる電話帳
- 世界中のどこからでもアクセスしてほしいWebサイトは、ここに登録します
VPN Gateway(30〜40 分)
VPN Gatewayについては以下のブログにまとめてます。



