Azure Web アプリでプライベート エンドポイントを使用する

重要

プライベート エンドポイントは、次の App Service プランでホストされている Windows および Linux の Web アプリ (コンテナー化されているかどうかにかかわらず) で使用できます:IsolatedPremiumV2PremiumV3Functions Premium (Elastic Premium プランとも呼ばれます)。

Azure Web アプリにプライベート エンドポイントを使用すると、プライベート ネットワーク内のクライアントが Private Link 経由で安全にアプリにアクセスできるようになります。 プライベート エンドポイントは、Azure VNet アドレス空間からの IP アドレスを使用します。 プライベート ネットワーク上のクライアントと Web アプリ間のネットワーク トラフィックは、VNet および Microsoft バックボーン ネットワーク上の Private Link を経由することで、パブリック インターネットにさらされないようにします。

Web アプリにプライベート エンドポイントを使用することで、次のことが可能になります。

  • プライベート エンドポイントを構成することにより Web アプリをセキュリティで保護し、公開されないようにする。
  • VPN または ExpressRoute のプライベート ピアリングを使用して VNet に接続するオンプレミス ネットワークから Web アプリに安全に接続する。
  • VNet からデータが一切流出しないようにしてください。

単に、VNet と Web アプリ間のセキュリティで保護された接続が必要な場合、サービス エンドポイントが最も簡単なソリューションです。 さらに、Azure ゲートウェイ、リージョンでピアリングされた VNet、またはグローバルにピアリングされた VNet を介してオンプレミスから Web アプリに接続する必要がある場合は、プライベート エンドポイントがソリューションになります。

詳細については、 サービス エンドポイントに関するページを参照してください。

概念の概要

プライベート エンドポイントは、仮想ネットワーク (VNet) 内のサブネットにある Azure Web アプリ用の特別なネットワーク インターフェイス (NIC) です。 Web アプリのプライベート エンドポイントを作成すると、プライベート ネットワーク上のクライアントと Web アプリ間の安全な接続が提供されます。 プライベート エンドポイントには、VNet の IP アドレス範囲から IP アドレスが割り当てられます。 プライベート エンドポイントと Web アプリ間の接続には、セキュリティで保護された Private Link が使用されます。 プライベート エンドポイントは、Web アプリへの受信フローにのみ使用されます。 送信フローではこのプライベート エンドポイントは使用されませんが、VNet 統合機能を使用して、別のサブネット内のネットワークに送信フローを挿入できます。

プライベート エンドポイントを接続するサブネットには他のリソースを含めることができます。専用の空のサブネットは必要ありません。 また、プライベート エンドポイントを Web アプリとは別のリージョンにデプロイすることもできます。

注意

VNet 統合機能では、プライベート エンドポイントと同じサブネットを使用することはできません。これは、VNet 統合機能の制限です。

セキュリティの観点から:

  • Web アプリに対してプライベート エンドポイントを有効にすると、すべてのパブリック アクセスは無効になります。
  • 他のリージョン内の VNet を含め、他の VNet およびサブネットで複数のプライベート エンドポイントを有効にすることができます。
  • プライベート エンドポイントの NIC の IP アドレスは動的である必要がありますが、そのプライベート エンドポイントを削除するまでは変わりません。
  • プライベート エンドポイントの NIC に NSG を関連付けることはできません。
  • プライベート エンドポイントをホストするサブネットには NSG を関連付けることができますが、プライベート エンドポイントに対するネットワーク ポリシーの適用を無効にする必要があります。「プライベート エンドポイントのネットワーク ポリシーを無効にする」を参照してください。 このため、プライベート エンドポイントへのアクセスを NSG でフィルタに掛けることはできません。
  • Web アプリに対してプライベート エンドポイントを有効にすると、Web アプリのアクセス制限構成は評価されません。
  • 宛先が "インターネット" または "Azure サービス" になっているすべての NSG ルールを削除することによって、VNet からのデータ流出リスクをなくすことができます。 Web アプリのプライベート エンドポイントをデプロイするときに、この特定の Web アプリには、このプライベート エンドポイントからのみできます。 別の Web アプリがある場合は、この別の Web アプリの別の専用プライベート エンドポイントをデプロイする必要があります。

Web アプリの Web HTTP ログには、クライアントのソース IP が含まれています。 この機能は、TCP プロキシ プロトコルを使用して実装されており、Web アプリにクライアント IP プロパティを転送します。 詳細については、「TCP プロキシ v2 を使用した接続情報の取得」を参照してください。

Web アプリのプライベート エンドポイントの全体像

DNS

Web アプリにプライベート エンドポイントを使用する場合は、要求する URL が Web アプリの名前と一致している必要があります。 既定値は mywebappname.azurewebsites.net です。

既定では、プライベート エンドポイントを使用しない場合、Web アプリのパブリック名がクラスターの正規の名前になります。 たとえば、名前解決は次のようになります。

名前 種類
mywebapp.azurewebsites.net CNAME clustername.azurewebsites.windows.net
clustername.azurewebsites.windows.net CNAME cloudservicename.cloudapp.net
cloudservicename.cloudapp.net A 40.122.110.154

プライベート エンドポイントをデプロイすると、DNS エントリは正規名 mywebapp.privatelink.azurewebsites.net を指すように更新されます。 たとえば、名前解決は次のようになります。

名前 種類 注記
mywebapp.azurewebsites.net CNAME mywebapp.privatelink.azurewebsites.net
mywebapp.privatelink.azurewebsites.net CNAME clustername.azurewebsites.windows.net
clustername.azurewebsites.windows.net CNAME cloudservicename.cloudapp.net
cloudservicename.cloudapp.net A 40.122.110.154 <-- このパブリック IP はプライベート エンドポイントではありません。403 エラーを受け取ります

テスト コンピューターのホスト エントリを変更できることをテストするには、プライベート DNS サーバーまたは Azure DNS プライベート ゾーンを設定する必要があります。 作成する必要がある DNS ゾーンは、privatelink.azurewebsites.net です。 A レコードとプライベート エンドポイント IP を使用して、Web アプリのレコードを登録します。 たとえば、名前解決は次のようになります。

名前 種類 注記
mywebapp.azurewebsites.net CNAME mywebapp.privatelink.azurewebsites.net <-- Azure パブリック DNS にこのエントリが作成され、App Service がプライベートリンクを指すようになります。これは Microsoft によって管理されます
mywebapp.privatelink.azurewebsites.net A 10.10.10.8 <-- プライベート エンドポイントの IP アドレスを指すように、DNS システムでこのエントリを管理します

この DNS 構成の後、既定の名前 mywebappname.azurewebsites.net を使用してプライベートに Web アプリに接続できます。 既定の証明書が *.azurewebsites.net に対して発行されるため、この名前を使用する必要があります。

カスタム DNS 名を使用する必要がある場合は、カスタム名を Web アプリに追加する必要があります。 すべてのカスタム名と同様に、パブリック DNS 解決を使用してカスタム名を検証する必要があります。 詳細については、カスタム DNS 検証に関するページをご覧ください。

Kudu コンソールまたは Kudu REST API (Azure DevOps セルフホステッド エージェントを使用したデプロイなど) の場合は、Azure DNS プライベート ゾーンまたはカスタム DNS サーバーに 2 つのレコードを作成する必要があります。

名前 種類
mywebapp.privatelink.azurewebsites.net A PrivateEndpointIP
mywebapp.scm.privatelink.azurewebsites.net A PrivateEndpointIP

価格

料金の詳細については、「Azure Private Link の料金」をご覧ください。

制限事項

Elastic Premium プランの Azure Function をプライベート エンドポイントとともに使用する場合、Azure Web ポータルで関数を実行するには、直接ネットワークにアクセスする必要があります。そうでないと、HTTP 403 エラーが発生します。 つまり、Azure Web ポータルから関数を実行するには、お使いのブラウザーで、プライベート エンドポイントに到達できる必要があります。

最大 100 個のプライベート エンドポイントを特定の Web アプリに接続できます。

Web アプリに対してプライベート エンドポイントが有効になっている場合、リモート デバッグ機能は使用できません。 スロットにコードをデプロイし、そこでリモート デバッグすることをお勧めします。

FTP アクセスは、受信パブリック IP アドレスを介して提供されます。 プライベート エンドポイントでは、Web アプリへの FTP アクセスをサポートしていません。

プライベート エンドポイントと、スロットを使用したトラフィック ルーティング (別名、"運用環境でのテスト") に影響を与える既知の制限があります。 2021 年 4 月以降、スロット間のルーティングを自動または手動で要求すると、"403 Access Denied" (403 アクセス拒否) になります。 この制限は、今後のリリースで解消される予定です。

定期的に Private Link 機能とプライベート エンドポイントの改善を行っています。制限に関する最新情報については、こちらの記事を確認してください。

次のステップ