このアーキテクチャは、HTTP(S) および HTTP(S) 以外のプロトコルを使用して、インターネットに接続するグローバル アプリケーション向けです。 DNS ベースのグローバル負荷分散、2 つの形式のリージョン負荷分散、グローバル仮想ネットワーク ピアリングを備え、リージョンの障害に耐えられる高可用性アーキテクチャを作成します。 トラフィック検査は、Azure Web Application Firewall (WAF) と Azure Firewall の両方で提供されます。
アーキテクチャに関連する注意事項
このドキュメントのアーキテクチャは、ハブアンドスポークの仮想ネットワーク設計に簡単に拡張できます。Azure Firewall はハブ ネットワーク内にあり、Application Gateway もハブ ネットワーク内に、またはスポーク内にあります。 Application Gateway がハブにデプロイされている場合でも、RBAC の競合を回避して Application Gateway の制限を超えないために (詳しくは、「Application Gateway の制限」をご覧ください)、指定された各アプリケーション セットに複数の Application Gateway が必要です。
Virtual WAN 環境において Application Gateway はハブにデプロイできないため、スポーク仮想ネットワークにインストールされます。
提案したアーキテクチャでは、Azure Firewall と、その前方に位置する Web Application Firewall (Application Gateway に基づく) の両方を経由する、Web コンテンツの二重検査を導入しています。 「仮想ネットワークの Azure Firewall と Application Gateway」に記載されているようにその他のオプションもありますが、提案したオプションは最も柔軟で完成度の高いものです。これは、エンド アプリケーションの HTTP ヘッダー X-Forwarded-For
にクライアントの IP アドレスを公開して、エンドツーエンドの暗号化を提供し、クライアントが WAF をバイパスしてアプリケーションにアクセスするのを防止します。
公開されるのが Web アプリケーション (HTTP(S) アプリケーション) のみで、この Web トラフィックに対する WAF と Azure Firewall の二重検査が不要な場合は、Traffic Manager よりも Azure Front Door のほうが、より適切なグローバル負荷分散ソリューションです。 Front Door は、キャッシュ、トラフィック アクセラレーション、SSL/TLS 終端、証明書管理、正常性プローブ、その他の機能も提供する、レイヤー 7 のロード バランサーです。 ただし、階層型保護アプローチに対して、Application Gateway は Azure Firewall とより良く統合できます。
HTTP(S) の受信トラフィック フロー
このアーキテクチャの Visio ファイルをダウンロードします。
Azure Traffic Manager は、DNS ベースのルーティングを使用して、2 つのリージョン間で受信トラフィックの負荷分散を行います。 Traffic Manager は、アプリケーションの DNS クエリを、Azure Application Gateway エンドポイントのパブリック IP アドレスに解決します。 Application Gateway のパブリック エンドポイントは、HTTP(S) トラフィックに対する Traffic Manager のバックエンド エンドポイントとして機能します。 Traffic Manager は、さまざまなルーティング方法の選択に基づいて DNS クエリを解決します。 ブラウザーはエンドポイントに直接接続します。HTTP(S) トラフィックは Traffic Manager に認識されません。
可用性ゾーン全体にデプロイされた Application Gateway はブラウザーから HTTP(S) トラフィックを受信し、Web Application Firewalls Premium はトラフィックを検査して Web 攻撃を検出します。 Application Gateway は、フロントエンド仮想マシンの内部ロード バランサーであるバックエンドにトラフィックを送信します。 この特定のフローの場合、Web サーバーの前方にある内部ロード バランサーは厳密には必要ありません。Application Gateway 自体によってこの負荷分散が実行される場合があるためです。 しかし、HTTP(S) 以外のアプリケーション フローとの一貫性を保つために、内部ロード バランサーが含まれています。
Application Gateway とフロントエンド内部ロード バランサー間のトラフィックは、Application Gateway サブネットに適用されたユーザー定義ルートを介して、Azure Firewall Premium にインターセプトされます。 追加のセキュリティとして、Azure Firewall Premium がトラフィックに TLS 検査を適用します。 Azure Firewall もゾーン冗長です。 Azure Firewall がトラフィック内に脅威を検出すると、そのパケットは除外されます。 それ以外の場合、検査が成功すると、Azure Firewall はトラフィックを宛先 Web 層の内部ロード バランサーに転送します。
Web 層は 3 層アプリケーションの最初のレイヤーで、ユーザー インターフェイスが含まれており、ユーザー操作の解析も行います。 Web 層ロード バランサーは 3 つの可用性ゾーンすべてにまたがり、Web 層仮想マシン 3 つそれぞれにトラフィックが分散されます。
Web 層仮想マシンは 3 つの可用性ゾーンすべてに分散され、専用の内部ロード バランサーを介してビジネス層と通信します。
ビジネス層は Web 層とデータ層の間に位置し、ユーザー操作を処理して次の手順を判断します。 ビジネス層の内部ロード バランサーは、3 つの可用性ゾーン間で、ビジネス層の仮想マシンにトラフィックを分散します。 ビジネス層のロード バランサーは、Web 層のロード バランサーと同様にゾーン冗長です。
ビジネス層の仮想マシンは可用性ゾーンに分散され、トラフィックはデータベースの可用性グループ リスナーにルーティングされます。
データ層で通常は、データベース、オブジェクト ストレージ、またはファイル共有にアプリケーション データが格納されます。 このアーキテクチャでは、3 つの可用性ゾーンに分散された仮想マシン上に SQL サーバーがあります。 これらは可用性グループ内にあり、分散ネットワーク名 (DNN) を使用して、負荷分散のために可用性グループ リスナーにトラフィックをルーティングします。
HTTP(S) 以外の受信トラフィック フロー
このアーキテクチャの Visio ファイルをダウンロードします。
Azure Traffic Manager は、DNS ベースのルーティングを使用して、2 つのリージョン間で受信トラフィックの負荷分散を行います。 Traffic Manager は、アプリケーションの DNS クエリを、Azure エンドポイントのパブリック IP アドレスに解決します。 Application Firewall のパブリック エンドポイントは、HTTP (S) 以外のトラフィックに対する Traffic Manager のバックエンド エンドポイントとして機能します。 Traffic Manager は、さまざまなルーティング方法の選択に基づいて DNS クエリを解決します。 ブラウザーはエンドポイントに直接接続します。HTTP(S) トラフィックは Traffic Manager に認識されません。
Azure Firewall Premium はゾーン冗長であり、セキュリティで保護するために受信トラフィックを検査します。 Azure Firewall がトラフィック内に脅威を検出すると、そのパケットは除外されます。 それ以外の場合、検査が成功すると、Azure Firewall は Web 層内部ロード バランサーにトラフィックを転送し、受信パケットに対して宛先ネットワーク アドレス変換 (DNAT) が実行されます。
Web 層は 3 層アプリケーションの最初のレイヤーで、ユーザー インターフェイスが含まれており、ユーザー操作の解析も行います。 Web 層ロード バランサーは 3 つの可用性ゾーンすべてにまたがり、Web 層仮想マシン 3 つそれぞれにトラフィックが分散されます。
Web 層仮想マシンは 3 つの可用性ゾーンすべてに分散され、専用の内部ロード バランサーを介してビジネス層と通信します。
ビジネス層は Web 層とデータ層の間に位置し、ユーザー操作を処理して次の手順を判断します。 ビジネス層の内部ロード バランサーは、3 つの可用性ゾーン間で、ビジネス層の仮想マシンにトラフィックを分散します。 ビジネス層のロード バランサーは、Web 層のロード バランサーと同様にゾーン冗長です。
ビジネス層の仮想マシンは可用性ゾーンに分散され、トラフィックはデータベースの可用性グループ リスナーにルーティングされます。
データ層で通常は、データベース、オブジェクト ストレージ、またはファイル共有にアプリケーション データが格納されます。 このアーキテクチャでは、3 つの可用性ゾーンに分散された仮想マシン上に SQL サーバーがあります。 これらは可用性グループ内にあり、分散ネットワーク名 (DNN) を使用して、負荷分散のために可用性グループ リスナーにトラフィックをルーティングします。
送信トラフィック フロー (すべてのプロトコル)
仮想マシンのパッチ更新プログラムまたはその他のインターネット接続の送信トラフィック フローは、ワークロード仮想マシンからユーザー定義のルートを介して Azure Firewall に送信されます。 Azure Firewall では、ワークロードが不適切なコンテンツにアクセスすることやデータ流出のシナリオを防ぐため、Web カテゴリを使用した接続ルールと、ネットワークおよびアプリケーションルールが適用されます。
Components
- Azure Firewall は、Microsoft が管理するクラウドベースの次世代のファイアウォールであり、南北 (データセンターに出入りする) および東西 (データセンター間またはデータセンター内を行き来する) 両方のトラフィック フローに対して、詳細なパケット検査を提供します。 Availability Zones 全体に分散することができ、アプリケーションの需要変化に応じた自動スケーリングを提供します。
- Azure Application Gateway は、オプションの Web Application Firewall (WAF) 機能を備えた、レイヤー 7 ロード バランサーです。 Application Gateway の v2 SKU では可用性ゾーン冗長がサポートされており、ほとんどのシナリオで推奨されています。 Application Gateway には、アプリケーションの需要変化に自動的に対応できる、構成可能な水平自動スケーリングが含まれています。
- Azure Traffic Manager は、トラフィックをグローバル Azure リージョン全体のサービスに分散するとともに、高可用性と応答性を提供する、DNS ベースのグローバル トラフィック ロード バランサーです。
- Azure Load Balancer は、第 4 層のロード バランサーです。 ゾーン冗長ロード バランサーは、ある可用性ゾーンで障害に遭遇したトラフィックを、残りのゾーンに分散してくれます。
- Azure DDoS Protection には、分散型サービス拒否 (DDoS) 攻撃から保護する強化された機能があります。
- Azure DNS は DNS ドメインのホスティング サービスです。 これは Microsoft Azure インフラストラクチャを使用した名前解決を提供します。 Azure でドメインをホストすることで、その他の Azure サービスと同じ資格情報、API、ツール、課金情報を使用して DNS レコードを管理できます。
- Azure プライベート DNS ゾーンは、Azure DNS の機能です。 Azure DNS Private Zones は、仮想ネットワーク内および仮想ネットワーク間での名前解決を提供します。 プライベート DNS ゾーンに含まれるレコードは、インターネットから解決できません。 プライベート DNS ゾーンに対する DNS 解決は、それにリンクされている仮想ネットワークからのみ機能します。
- Azure Virtual Machines はオンデマンドのスケーラブルなコンピューティング リソースであり、仮想化の柔軟性を享受できる一方で、物理的なハードウェアを維持する手間が解消されます。 オペレーティング システムの選択には、Windows と Linux が含まれます。 アプリケーションの特定のコンポーネントは、サービスとしてのプラットフォームの Azure リソース (データベースやフロントエンド層など) に置き換えることができます。しかし、Private Link と App Service VNet 統合を使用して PaaS サービスを仮想ネットワークに取り込む場合、アーキテクチャが大きく変わるわけではありません。
- Azure Virtual Machine Scale Sets は自動化および負荷分散された仮想マシン スケーリングであり、アプリケーションの管理を簡素化して可用性を向上させてくれます。
- VM 上の SQL Server により、オンプレミスのハードウェアを管理せずに全バージョンの SQL Server をクラウドで利用できます。
- Azure Virtual Network は、クラウド内のセキュリティで保護されたプライベート ネットワークです。 これにより、仮想マシンを相互に、インターネットに、クロスプレミス ネットワークに接続できます。
- ユーザー定義ルートは、仮想ネットワークの既定のルーティングをオーバーライドするメカニズムです。 このシナリオでは、受信と送信のトラフィック フローが Azure Firewall を通過するよう強制するために使用されます。
ソリューションの詳細
Traffic Manager - パフォーマンス ルーティングを使用するように Traffic Manager を構成しました。 これにより、トラフィックはユーザーの待機時間が最も短くなるように、エンドポイントにルーティングされます。 Traffic Manager は、エンドポイントの待機時間の変化に応じて、負荷分散アルゴリズムを自動的に調整します。 地域的な障害が発生した場合、Traffic Manager は自動フェールオーバーを提供します。 優先順位ルーティングと定期的な正常性チェックを使用して、トラフィックのルーティング先を決定します。
Availability Zones - アーキテクチャでは、3 つの可用性ゾーンが使用されます。 ゾーンでは、各リージョンの Application Gateway、内部ロード バランサー、仮想マシンによる高可用性アーキテクチャが作成されます。 ゾーンが停止した場合、そのリージョン内で残りの可用性ゾーンが負荷を引き継ぐため、リージョンのフェールオーバーはトリガーされません。
Application Gateway - Traffic Manager では DNS ベースのリージョン負荷分散が提供されます。それに対し、Application Gateway では Azure Front Door と同じ機能が多く提供されますが、リージョン レベルで次のような機能が提供されます。
- Web アプリケーション ファイアウォール (WAF)
- トランスポート層セキュリティ (TLS) 終端
- パスベースのルーティング
- Cookie ベースのセッション アフィニティ
Azure Firewall - Azure Firewall Premium では、汎用アプリケーション (Web と Web 以外のトラフィック) のネットワーク セキュリティが提供され、このアーキテクチャにおける 3 種類のフローが検査されます。
- Application Gateway からの HTTP(S) 受信フロー: Azure Firewall Premium TLS 検査を使用して保護されます。
- パブリック インターネットからの HTTP (S) 以外の受信フロー: Azure Firewall Premium 機能の残りの部分で検査されます。
- Azure Virtual Machines からの送信フロー: データ流出と禁止されたサイトやアプリケーションへのアクセスを防ぐために、Azure Firewall によって検査されます。
"仮想ネットワーク ピアリング" - リージョン間のピアリングは "グローバル仮想ネットワーク ピアリング" と呼ばれています。グローバル仮想ネットワーク ピアリングでは、リージョン間で低遅延、高帯域幅のデータ レプリケーションが提供されます。 このグローバル ピアリングを使用して、Azure サブスクリプション間、Microsoft Entra テナント間、デプロイ モデル間でデータを転送できます。 ハブ-スポーク環境では、ハブとスポークのネットワーク間に仮想ネットワーク ピアリングが存在します。
推奨事項
次の推奨事項は、Azure Well-Architected Framework (WAF) の重要な要素に準拠しています。 WAF の重要な要素は、クラウド ワークロードの品質を確保するのに役立つ原則を示しています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。
[信頼性]
リージョン - 高可用性のために、少なくとも 2 つの Azure リージョンを使用します。 アクティブ/パッシブ構成またはアクティブ/アクティブ構成で、複数の Azure リージョンにアプリケーションをデプロイできます。 複数のリージョンを使用すると、アプリケーションのサブシステムで障害が発生した場合のアプリケーションのダウンタイム回避にも役立ちます。
- プライマリ リージョンで障害が発生した場合、Traffic Manager はセカンダリ リージョンに自動的にフェールオーバーします。
- ニーズに最適なリージョンを選択するには、技術的、規制上の考慮事項、および可用性ゾーンのサポートに基づく必要があります。
リージョン ペア - 最も回復性が高くなるリージョン ペアを使用します。 両方のリージョン ペアでアプリケーションに必要なすべての Azure サービスがサポートされていることを確認してください (リージョンごとのサービスをご覧ください)。 リージョン ペアの 2 つの利点を次に示します。
- 計画的な Azure の更新をペアになっているリージョンに 1 つずつロールアウトすることで、ダウンタイムとアプリケーション停止のリスクを最小限に抑えます。
- 税および法律上の目的で、同じ地域に常にペアとしてデータが存在します (ブラジル南部を除く)。
"可用性ゾーン" - 使用可能な場合は複数の可用性ゾーンを導入して、Application Gateway、Azure Firewall、Azure Load Balancer、アプリケーション層をサポートします。
"Application Gateway の自動スケーリングとインスタンス" - ダウンタイムを回避するために少なくとも 2 つのインスタンスを使用して Application Gateway を構成し、自動スケーリングでアプリケーション容量の需要変化に対して動的に適応します。
詳細については、次を参照してください。
グローバル ルーティング
"グローバル ルーティング方法" - 顧客のニーズに最適なトラフィック ルーティング方法を使用します。 Traffic Manager はさまざまなサービス エンドポイントにトラフィックを確定的にルーティングするために、複数のトラフィック ルーティング方法をサポートしています。
"入れ子になった構成" - リージョン内で優先するフェールオーバーを選択するために、より細かい制御が必要な場合は、入れ子になった構成で Traffic Manager を使用します。
詳細については、次を参照してください。
グローバル トラフィック ビュー
Traffic Manager のトラフィック ビューを使用して、トラフィック パターンと待機時間のメトリックを確認します。 トラフィック ビューは、新しい Azure リージョンへのフットプリントの拡大を計画するのに役立ちます。
詳細については、「Traffic Manager の Traffic View」をご覧ください。
Application Gateway
すぐに利用できる自動化された回復性に、Application Gateway v2 SKU を使用します。
Application Gateway v2 SKU は、新しいインスタンスが障害ドメインと更新ドメインに自動的に分散されるようにします。 ゾーン冗長を選択した場合は、フォールト トレランスを実現するために、最新のインスタンスも可用性ゾーンに分散されます。
2 つ以上のインスタンスをデプロイすると、Application Gateway v1 SKU が高可用性のシナリオをサポートします。 Azure は、これらのインスタンスを更新ドメインと障害ドメインに分散させ、インスタンスで同時に障害が発生しないようにします。 v1 SKU では、同じゲートウェイの複数のインスタンスを追加して負荷を共有することによってスケーラビリティをサポートします。
Application Gateway は、Azure Firewall の CA 証明書を信頼する必要があります。
Azure Firewall
この設計では、TLS 検査を提供するために、Premium レベルの Azure Firewall が必要です。 Azure Firewall は、Application Gateway と Web 層仮想マシン (独自の証明書を生成する) の間の TLS セッションをインターセプトし、仮想ネットワークからパブリック インターネットへの送信トラフィック フローも検査します。 この設計について詳しくは、「Azure Firewall と Application Gateway を使用した Web アプリケーション用のゼロ トラスト ネットワーク」をご覧ください。
正常性プローブのレコメンデーション
Traffic Manager、Application Gateway、Load Balancer の正常性プローブに関する推奨事項をいくつか次に示します。
Traffic Manager
"エンドポイントの正常性" - アプリケーションの全体的な正常性を報告するエンドポイントを作成します。 Traffic Manager は、HTTP(S) プローブを使用して、各リージョンの可能性を監視します。 プローブは、特定の URL パスの HTTP 200 応答をチェックします。 正常性プローブ用に作成したエンドポイントを使用します。 これを行わなかった場合、プローブは、アプリケーションの重要な部分で障害が発生しているにもかかわらず、エンドポイントが正常であると報告する可能性があります。
詳細については、「正常性エンドポイントの監視パターン」を参照してください。
"フェールオーバーの遅延" - Traffic Manager にはフェールオーバーの遅延があります。 遅延の期間は、次の要因によって決まります。
- プローブ間隔: プローブがエンドポイントの正常性をチェックする頻度。
- 障害の許容数: エンドポイントに異常のマークを付けるまでプローブが許容する障害の数。
- プローブのタイムアウト: Traffic Manager がエンドポイントを異常と見なすまでの時間。
- Time-to-Live (TTL): DNS サーバーが、IP アドレスに対してキャッシュされた DNS レコードを更新する必要があります。 所要時間は DNS TTL によって異なります。 TTL の既定値は 300 秒 (5 分) ですが、この値は、Traffic Manager プロファイルを作成するときに構成できます。
詳細については、Traffic Manager の監視に関するページを参照してください。
Application Gateway と Load Balancer
Application Gateway と Load Balancer の正常性プローブ ポリシーについて理解し、VM の正常性を確実に把握します。 簡単な概要を次に示します。
Application Gateway は常に HTTP プローブを使用します。
Load Balancer は、HTTP と TCP のいずれかを評価できます。 VM で HTTP サーバーが実行されている場合は、HTTP プローブを使用します。 その他すべてには TCP を使用します。
HTTP プローブでは、指定されたパスに HTTP GET 要求が送信され、HTTP 200 応答がリッスンされます。 このパスには、ルート パス ("/")、またはアプリケーションの正常性をチェックするためのカスタム ロジックを実装した正常性監視エンドポイントを指定できます。
エンドポイントでは、匿名の HTTP 要求を許可する必要があります。 タイムアウト期間内にプローブがインスタンスに到達できなかった場合、App Gateway または Load Balancer はその VM へのトラフィックの送信を停止します。 プローブでは引き続きチェックが行われ、VM を再び使用できるようになった場合は、VM がバックエンド プールに戻されます。
詳細については、次を参照してください。
オペレーショナル エクセレンス
"リソース グループ" - リソース グループを使用すると、有効期間、所有者、その他の特性によって Azure リソースを管理できます。
"仮想ネットワーク ピアリング" - 仮想ネットワーク ピアリングを使用すると、Azure で 2 つ以上の仮想ネットワークをシームレスに接続できます。 仮想ネットワークは、接続において、見かけ上 1 つのネットワークとして機能します。 ピアリングされた仮想ネットワーク内の仮想マシン間のトラフィックには、Microsoft のバックボーンインフラストラクチャが使用されます。 仮想ネットワークのアドレス空間が重複していないことを確認してください。
"仮想ネットワークとサブネット" - サブネットの層ごとに別個のサブネットを作成します。 Application Gateway や Load Balancer などの VM とリソースを、サブネットを使用して仮想ネットワークにデプロイする必要があります。
セキュリティ
Web Application Firewall - Azure Application Gateway の WAF 機能は、SQL インジェクション (SQLi) やクロスサイト スクリプティング (CSS) など、HTTP レベルでの攻撃を検出して防止します。
"次世代のファイアウォール" - Azure Firewall Premium は、HTTP(S) またはその他のプロトコルを介してアップロードされた悪意のあるファイルなど、Web 以外の攻撃のコンテンツを検査することで、追加の防御層を提供します。
"エンドツーエンドの暗号化" - トラフィックは、Azure ネットワークを移動中、常に暗号化されています。 Application Gateway と Azure Firewall の両方で、対応するバックエンド システムに送信する前にトラフィックを暗号化します。
"分散型サービス拒否 (DDoS) 攻撃" - Azure が提供する基本的な保護よりも DDoS 保護を強化するには、Azure DDoS ネットワーク保護を使用します。
"ネットワーク セキュリティ グループ (NSG)" - NSG は、仮想ネットワーク内のネットワーク トラフィックを制限するために使用されます。 たとえば、ここに示す 3 層アーキテクチャでは、データベース層はトラフィックの受け入れをビジネス層からのみ行い、Web フロントエンドからは行いません。 ビジネス層だけがデータベース層と直接通信できます。 このルールを適用するには、データベース層がビジネス層サブネットを除くすべての受信トラフィックをブロックする必要があります。
- ビジネス層のサブネットからの受信トラフィックを許可します。
- データベース層サブネット自体からの受信トラフィックを許可します。 このルールは、データベース VM 間の通信を許可します。 データベースのレプリケーションとフェールオーバーは、このルールを必要とします。
- ルールの
VirtualNetwork
タグを使用して、仮想ネットワークからのすべての受信トラフィックを拒否し、既定の NSG ルールに含まれる許可ステートメントを上書きします。
最初のルールよりも優先順位が低い (数値が高い) ルール 3 を作成します。
サービス タグを使用して、ネットワーク セキュリティ グループまたは Azure Firewall でのネットワーク アクセスの制御を定義できます。
詳細については、「Application Gateway インフラストラクチャの構成」を参照してください。
コストの最適化
詳細については、次を参照してください。
- Load Balancer の価格
- Virtual Network の価格
- Application Gateway の価格
- ニーズを満たす適切な Azure Firewall SKU を選択する
- Traffic Manager の料金
- 料金計算ツール
パフォーマンス効率
Virtual Machine Scale Sets - Virtual Machine Scale Sets を使用して、仮想マシンのスケーラビリティを自動化します。 Virtual Machine Scale Sets は、Windows および Linux 仮想マシンのすべてのサイズで使用できます。 課金されるのは、デプロイされた仮想マシンと、消費された基盤のインフラストラクチャ リソースのみです。 従量課金はありません。 Virtual Machine Scale Sets の利点は次のとおりです。
- 複数仮想マシンの容易な作成と管理
- 高可用性とアプリケーションの回復性
- リソース需要の変化に応じた自動スケーリング
詳しくは、Virtual Machine Scale Sets に関するページをご覧ください。
次のステップ
同じテクノロジを使用したその他の参照アーキテクチャについては、以降をご覧ください。