この記事では、オンプレミス ネットワークまたは Azure 仮想ネットワーク内から App Service Web アプリまたは関数アプリへのセキュリティの強化されたプライベート接続を設定する方法について説明します。 また、パブリック インターネットを使用せずに、Azure Private Link 経由でアプリとその他の Azure PaaS サービス間の強化セキュリティ接続を設定する方法についても説明します。
この記事では、Azure アプリ Service は、Basic、Standard、Premium レベルなど、他の App Service のお客様と共有インフラストラクチャがある価格レベルを指します。 App Service Environment は、専用のサポート インフラストラクチャを使用して仮想ネットワークに直接デプロイし、Isolated 価格レベルを使用します。この記事では取り上げません。
Architecture
このアーキテクチャの Visio ファイルをダウンロードします。
データフロー
Azure App Service のリージョン仮想ネットワーク統合を使用して、Web アプリは、Azure 仮想ネットワーク内の委任されたサブネットである "VNet 統合サブネット" を介して Azure サービスに接続します。
- "VNet 統合サブネット" と "プライベート エンドポイント サブネット" ネットワークは、異なるサブスクリプションの別々の仮想ネットワークです。 どちらのネットワークも、ハブ アンド スポーク ネットワーク構成の一部として、"ハブ仮想ネットワーク" とピアリングされています。 リージョン仮想ネットワーク統合の場合、ピアリングされた仮想ネットワークは同じ Azure リージョンにある必要があります。
Azure Private Link では、"プライベート エンドポイント仮想ネットワーク" 内に、PaaS サービス、Web アプリ、Azure SQL データベース、Azure ストレージ アカウント、および Azure キー コンテナー用のプライベート エンドポイントがセットアップされます。
この例では、この仮想ネットワークはプライベート エンドポイントのデプロイ専用です。 この仮想ネットワークには、仮想マシン (VM) などの他のリソースはデプロイされません。 サブネットのサイズを選択する際に、プライベート エンドポイントを追加する将来のニーズが考慮されました。
オンプレミス ネットワークと Azure 仮想ネットワークは、サイト間 (S2S) VPN または Azure ExpressRoute プライベート ピアリングを介して接続できます。 オンプレミス ネットワークのユーザーは、アプリにプライベートでアクセスします。プライベート ネットワークのみを介することで、セキュリティが強化されます。
この例では、オンプレミス ネットワークと Azure 仮想ネットワークは、ExpressRoute プライベート ピアリングを介して接続されます。
ドメイン ネーム システム (DNS) ソリューションが既に導入されているオンプレミス ネットワークの場合、オンプレミスの DNS ソリューションは、Azure にデプロイされている DNS Private Resolver サービスの受信エンドポイントに要求を転送する条件付きフォワーダーを介して、Azure プライベート DNS レコード (たとえば、azurewebsites.net) に DNS トラフィックを転送するように構成されます。 DNS Private Resolver は Azure DNS に対してクエリを実行し、Azure プライベート DNS 仮想ネットワーク リンクに関する情報を受け取ります。 その後、仮想ネットワークにリンクされたプライベート DNS ゾーンによって解決が行われます。
プライベート DNS ゾーンは、"プライベート エンドポイント仮想ネットワーク" と同じサブスクリプションにもデプロイされます。
この例では、オンプレミス ネットワークの IP アドレス 192.168.0.254 の DNS フォワーダー マシンが、ホスト名 azurewebsites.net に対するすべての DNS 解決要求を、Azure のアドレス 10.0.0.132 の DNS Private Resolver サービスの受信エンドポイントに転送します。 その後、要求は、仮想ネットワークにリンクされている Azure プライベート DNS ゾーンを介して、IP アドレス 168.63.129.16 を持つ Azure 提供の DNS サービスによって解決されます。
DNS 転送ルールセットを使用して Azure からオンプレミス、他のクラウド プロバイダー、または外部 DNS サーバーへの名前解決を条件付きで転送するには、送信エンドポイントが必要です。
このシナリオでは、DNS 転送ルールセットを構成する必要はありません。
このアプリ サービス構成がある必要があります。
キー 値 WEBSITE_DNS_SERVER 168.63.129.16 仮想ネットワークは、すべての Azure プライベート DNS ゾーンにリンクされています。
- プライベート エンドポイントがある仮想ネットワークは、プライベート DNS ゾーンに自動的にリンクされます。 他の仮想ネットワークは、個別にリンクする必要があります。
Web アプリは、Azure Firewall を介して、"プライベート エンドポイント仮想ネットワーク" 内の PaaS サービスのプライベート エンドポイントと通信します。
Azure Firewall では、アプリケーション ルールが、"VNet 統合サブネット" と PaaS リソースのプライベート エンドポイント間の通信を許可するように構成されます。 ターゲット完全修飾ドメイン名 (FQDN) は、次のとおりです。
*.azurewebsites.net
*.database.windows.net
*.core.windows.net
*.vaultcore.azure.net
Azure SQL、Azure ストレージ アカウント、および Azure Key Vault に対するファイアウォールおよび仮想ネットワークの構成では、"VNet 統合サブネット" からのトラフィックのみが許可されます。 この構成では、他の仮想ネットワークまたはパブリック インターネットとの通信は許可されていません。
Components
- Azure App Service は、Web アプリケーションと関数アプリをホストし、自動スケーリングと高可用性を可能にします。インフラストラクチャの管理は不要です。
- Azure SQL Database は、リレーショナル データ、空間データ、JSON、および XML をサポートする汎用リレーショナル データベース マネージド サービスです。
- Azure ストレージ アカウントは、世界中のどこからでも HTTP または HTTPS 経由でアクセスできる Azure Storage データ用の一意の名前空間を提供します。 これには、すべての Azure Storage データ オブジェクト (BLOB、ファイル共有、キュー、テーブル、およびディスク) が含まれます。
- Azure Key Vault は、API キー、パスワード、証明書、暗号化キー、またはクラウド アプリとサービスによって使用されるその他のシークレットを安全に格納し、それらにアクセスするためのサービスです。
- Azure Virtual Network は、Azure 内のプライベート ネットワークの基本的な構成ブロックです。 仮想ネットワークを使用すると、VM などの Azure リソースでは、相互に、またインターネットやオンプレミス ネットワークと安全に通信できます。
- Azure Private Link は、Azure Storage や SQL Database などの Azure PaaS サービスや、顧客またはパートナーのサービスへの接続のために、仮想ネットワークにプライベート エンドポイントを提供します。
- Azure ExpressRoute のプライベート ピアリングは、オンプレミスのネットワークをプライベート接続を介して Microsoft クラウドに拡張します。 また、Azure ExpressRoute を使用する代わりに、オンプレミスと Azure ネットワークにサイト間 VPN を確立することもできます。
- Azure Firewall は、Azure Virtual Network リソースを保護するのに役立つ、クラウドベースのマネージド ネットワーク セキュリティ サービスです。
- プライベート DNS ゾーンは、仮想ネットワーク内のドメイン名を管理および解決するために、信頼性が高くセキュリティで保護された DNS サービスを提供します。
- DNS Private Resolver を使用すると、VM ベースの DNS サーバーをデプロイせずに、オンプレミス環境から Azure DNS プライベート ゾーンにクエリを実行できます。その逆も可能です。
代替
プライベート接続の場合、別の方法として、App Service Environment を使用し、分離された環境で Web アプリケーションをホストすることができます。 App Service Environment では、App Service のお客様間で共有 ホストインフラストラクチャ を回避できます。 データベースの場合は、仮想ネットワークに Azure SQL Managed Instance をネイティブにデプロイできるため、仮想ネットワーク統合やプライベート エンドポイントは必要ありません。 これらのサービスは、シングルテナントの分離デプロイなどの機能を提供するため、通常はコストが高くなります。
App Service Environment があっても SQL Managed Instance を使用していない場合は、Azure SQL データベースへのプライベート接続に引き続きプライベート エンドポイントを使用できます。 既に SQL Managed Instance を使用しているが、App Service を使用している場合でも、リージョン VNet 統合を使用して SQL Managed Instance のプライベート アドレスに接続できます。
Key Vault や Storage などの他の Azure サービスについては、Web Apps からの高いセキュリティでプライベートな接続のために、プライベート エンドポイントを使用する以外の方法はありません。
考えられるユース ケース
- オンプレミス ネットワークまたは Azure 仮想ネットワーク内からプライベート エンドポイントを介してセキュリティを強化して、App Service Web アプリまたは関数アプリにプライベートにアクセスします。
- Web アプリまたは関数アプリから、以下の Azure サービスとしてのプラットフォーム (PaaS) オファリングに接続する。
- 別の Web アプリ
- SQL Database
- Azure Storage
- Key Vault
- インバウンド接続用に Azure プライベート エンドポイントをサポートしている他の任意のサービス
考慮事項
以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。
セキュリティ
セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。
Web アプリにプライベート エンドポイントを使用することで、次のことが可能になります。
- プライベート エンドポイントを構成することにより Web アプリをセキュリティで保護し、公開されないようにする。
- VPN または ExpressRoute プライベート ピアリングを使用して仮想ネットワークに接続するオンプレミス ネットワークから Web Apps に、強化されたセキュリティで接続する。 Web アプリへのインバウンド接続は、オンプレミス ネットワークから、または Azure 仮想ネットワーク内からのみ許可されます。
- 仮想ネットワークからのデータ流出を避ける。
Application Gateway や Azure Front Door のようなサービスをアプリのフロントに配置することにより (オプションで、Web Application Firewall を使用)、Web アプリへのインバウンド接続のセキュリティをさらに向上させることができます。 Web アプリに対してプライベート エンドポイントを有効にすると、Web アプリのアクセス制限構成は評価されません。
このシナリオでは、App Service Web アプリから、データベース、Storage、または Key Vault のような下流依存関係へのアウトバウンド接続のセキュリティも向上します。
アプリケーション ルーティングを構成して、仮想ネットワークにすべてのトラフィックまたはプライベート トラフィック (RFC1918 トラフィックとも呼ばれます) のみをルーティングできます。 この動作を構成するには、[Route All](すべてのルート) 設定を使用します。 [Route All](すべてのルート) が無効になっている場合、Web アプリはプライベート トラフィックのみを仮想ネットワークにルーティングします。 パブリック アドレスへのトラフィックをブロックするには、仮想ネットワークへの [Route All](すべてのルート) 設定を有効にします。 また、ネットワーク セキュリティ グループを使用して、仮想ネットワークまたはインターネット内のリソースへのアウトバウンド トラフィックをブロックできます。 [Route All](すべてのルート) が有効になっていない場合、NSG は RFC1918 トラフィックにのみ適用されます。
この例では、Web アプリは仮想ネットワーク内にないサービスと通信する必要がないため、[Route All](すべてのルート) は有効です。
このシナリオでのセキュリティに関する重要な考慮事項は、PaaS リソース用のファイアウォールの構成です。
SQL Database ファイアウォール オプション
プライベート接続を使用しない場合は、指定された IP アドレス範囲からの受信トラフィックのみを許可するファイアウォール規則を追加できます。 もう 1 つの方法は、サーバーへのアクセスを Azure サービスに許可することです。 この方法では、ファイアウォールをロックダウンして、Azure 内からのトラフィックのみを許可します。 ただし、このトラフィックには、すべての Azure リージョンとその他の顧客が含まれます。
また、より制限の厳しいファイアウォール規則を追加して、使用しているアプリの送信 IP アドレスのみデータベースにアクセスできるようにすることもできます。 ただし、これらの IP アドレスは複数の App Services と共有され、同じ デプロイ スタンプで他の顧客からのトラフィックを許可します同じ送信 IP アドレスを使用します。
仮想ネットワーク経由でプライベート接続を使用すると、他のユーザーがデータベースにアクセスできないようにするために役立つ、これらのファイアウォール オプションが提供されます。
- VNet 統合によって委任されたリージョン サブネット (この例では "VNet 統合サブネット") からのトラフィックのみを許可する仮想ネットワーク規則を作成します。 委任されたサブネットには Microsoft.Sql 用に構成されたサービス エンドポイントが必ずあるため、データベースはそのサブネットからのトラフィックを識別できます。
- パブリック ネットワーク アクセスを拒否するように、ファイアウォールを構成します。 そのようにすると、他のすべてのファイアウォール規則がオフになり、プライベート エンドポイントを介してのみデータベースにアクセスできるようになります。
パブリック ネットワーク アクセスを拒否するオプションは、最も安全な構成です。 ただし、このオプションを使用する場合、データベース アクセスは、プライベート エンドポイントをホストする仮想ネットワーク経由でしかできなくなります。 データベースに接続するには、Web アプリ以外のすべてのものが、仮想ネットワークに直接接続されている必要があります。
たとえば、ローカル マシン上の SQL Server Management Studio (SSMS) からのデプロイまたは緊急の手動接続は、VPN または仮想ネットワークへの ExpressRoute 接続を経由する場合を除き、データベースに接続できません。 また、仮想ネットワーク内の VM にリモート接続して、そこから SSMS を使用することもできます。 例外的な状況では、パブリック ネットワーク アクセスを一時的に許可し、他の構成オプションを使用してリスクを軽減することができます。
ストレージ アカウントとキー コンテナーのファイアウォール オプション
ストレージ アカウントとキー コンテナーには、インターネットからアクセスできるパブリック エンドポイントがあります。 ストレージ アカウント用およびキー コンテナー用にプライベート エンドポイントを作成することもできます。 そうすることで、これらのサービスに仮想ネットワークのプライベート IP アドレスが割り当てられ、プライベート リンクを介した仮想ネットワークと各サービス間のすべてのトラフィックをセキュリティで保護するために役立ちます。
プライベート エンドポイントを作成すると、VNet 統合サブネットは、プライベート リンクを介してプライベートに、強化されたセキュリティで、サービスにアクセスできます。 しかし、ストレージ アカウントとキー コンテナーは、引き続き、他の Azure 仮想ネットワークからアクセスできます。 他のすべての仮想ネットワークからのアクセスをブロックするには、この委任されたサブネット用のサービス エンドポイントを作成します。
可用性
Azure SQL Database、Azure Storage、および Azure Key Vault の Private Linkのサポートは、すべてのパブリック リージョンで利用できます。 他のリージョンでの可用性を確認するには、「 Azure Private Link の可用性を参照してください。
Private Link を使用すると、コンポーネントと可用性に関する他の考慮事項がアーキテクチャに導入されます。 Private Link サービスには、高可用性 SLA があります。 ソリューション全体の複合 SLA を計算するときは、この SLO を考慮する必要があります。
スケーラビリティ
ハブ アンド スポーク ネットワーク アーキテクチャで、PaaS サービス用の Azure Private Link を Azure プライベート DNS ゾーンと統合する方法については、「Private Link と DNS の大規模な統合」を参照してください。
グローバル ピアリング
仮想ネットワーク経由で接続できる任意の Azure リージョン内のすべてのサービスは、PaaS サービスのプライベート エンドポイントにアクセスできます。たとえば、ハブアンドスポーク トポロジの仮想ネットワーク ピアリング経由でアクセスできます。 ただし、App Service のリージョン VNet 統合の場合、ピアリングされた仮想ネットワークは同じ Azure リージョンに配置する必要があります。
グローバル ピアリングのサポートがないということは、App Service から別の Azure リージョン内のデータベースまたは他のプライベート エンドポイントへのリージョン間接続にこのソリューションを使用できないことを意味します。 たとえば、部分的なフェールオーバーをサポートするマルチリージョン デプロイではこのソリューションは機能しません。このようなデプロイでは、Web アプリは一方のリージョンではアクティブのままになりますが、他方のリージョンにあるフェールオーバーされたデータベースに接続する必要があります (逆の場合もあります)。 ただし、このような状況では、他のソリューションが存在します。
Web Apps を別のリージョンの仮想ネットワークに接続する必要がある場合は、ゲートウェイが必要な VNet 統合を設定できます。 ゲートウェイが必要な VNet 統合には、Azure ExpressRoute に接続された仮想ネットワークと共には使用できないという制限があります。
ログ記録と監視
Azure Private Link は Azure Monitor と統合されています。これにより、データがフローしているかどうかを確認できます。
また、Azure Network Watcher の接続トラブルシューティング サービスを使用して、仮想ネットワーク内の VM からプライベート エンドポイント リソースの FQDN への接続をトレースすることもできます。
コスト最適化
コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。
Basic、Standard、Premium v2、Premium v3、Isolated v2 App Service、Azure Functions Premium プランでサポートされている価格レベルでは、App Service リージョン VNet 統合の追加コストは発生しません。
プライベート エンドポイントは、Basic、Standard、Premium v2、Premium v3、Isolated v2 App Service プランでホストされている Windows Web アプリと Linux Web アプリ (コンテナー化されているかどうかにかかわらず) のほか、Premium プランにデプロイされた関数アプリでも利用できます。
PaaS サービスのプライベート エンドポイントを有効にする Azure Private Link サービスには、時間料金に基づく関連コストと帯域幅に基づく割増金があります。 詳細については、Private Link の価格のページを参照してください。 クライアント仮想ネットワークからハブ仮想ネットワーク内の Azure Firewall への接続には、料金が発生します。 ハブ仮想ネットワーク内の Azure Firewall からピアリングされた仮想ネットワーク内のプライベート エンドポイントへの接続には、料金がかかりません。
Azure Private DNS ゾーンのコストは、Azure でホストされている DNS ゾーンの数と、受信される DNS クエリの数に基づきます。
このシナリオの実行コストを調べるには、Azure 料金計算ツールの見積もりを使用します。 この記事で説明されているすべてのサービスは、小規模なアプリケーションに妥当な既定値を使用して事前に構成されています。 ユース ケースについて価格の変化を確認するには、予想される使用量に合わせて該当する変数を変更します。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は次のとおりです。
プリンシパル作成者:
- Ankit Singhal | クラウド ソリューション アーキテクト
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。
次のステップ
- プライベート エンドポイントを使用して Azure Functions と Azure 仮想ネットワークを統合する方法に関するステップ バイ ステップ ガイダンスを参照してください。
- さまざまなネットワーク トポロジでプライベート エンドポイント宛てのトラフィックを検査するように Azure Firewall アプリケーション規則を構成する手順を参照してください。
- App Service のインバウンドおよびアウトバウンドのシナリオと、どのような場合にどの機能を使用するかの詳細については、App Service のネットワーク機能の概要に関するページを参照してください。
- Azure Web Apps のプライベート エンドポイントの詳細については、「Azure Web アプリでプライベート エンドポイントを使用する」を参照してください。
- App Service Web アプリと Azure Virtual Network の統合の詳細については、「 Azure 仮想ネットワークを使用してアプリを統合する」を参照してください。
- 一部の PaaS サービスの FQDN は、自動的にパブリック IP アドレスに解決される場合があります。 プライベート エンドポイントに接続するための DNS 構成のオーバーライドについては、「Azure プライベート エンドポイントの DNS 構成」を参照してください。