Azure App Service における受信 IP アドレスと送信 IP アドレス

Azure App Service は、App Service Environment 以外はマルチテナント サービスです。 App Service Environment (分離レベル) に含まれていないアプリは、他のアプリとネットワーク インフラストラクチャを共有します。 その結果、アプリの受信 IP アドレスと送信 IP アドレスが異なる可能性があり、特定の状況では変更される可能性もあります。

App Service Environment は専用のネットワーク インフラストラクチャを使用するため、App Service Environment で実行されるアプリは、受信接続と送信接続の両方で、静的な専用 IP アドレスを取得します。

App Service での IP アドレスの動作

App Service アプリは App Service プランで実行され、App Service プランは Azure インフラストラクチャ内のいずれかのデプロイ単位 (内部的には Web スペースと呼ばれます) にデプロイされます。 各デプロイ単位は、一連の仮想 IP アドレスに割り当てられます。これには、1 つのパブリック受信 IP アドレスと一連の送信 IP アドレスが含まれます。 同じデプロイ単位内のすべての App Service プランと、それらの中で実行されるアプリ インスタンスでは、同じ一連の仮想 IP アドレスが共有されます。 App Service Environment (Isolated レベルの App Service プラン) の場合、App Service プランそのものがデプロイ単位になります。そのため、仮想 IP アドレスはその結果として専用となります。

App Service プランをデプロイ単位間で移動することは許可されていないため、通常はアプリに割り当てられている仮想 IP アドレスは同じままですが、これには例外があります。

受信 IP はいつ変更されるか

スケールアウトされたインスタンスの数に関係なく、各アプリは、1 つの受信 IP アドレスを持ちます。 受信 IP アドレスは、次の操作のいずれかを実行したときに変更される可能性があります。

  • アプリを削除した後、別のリソース グループ内に再作成する (デプロイ単位が変更される場合があります)。
  • リソース グループ リージョンの組み合わせに含まれる最後のアプリケーションを削除した後、再作成する (デプロイ単位が変更される場合があります)。
  • 証明書の更新中などに既存の IP ベースの TLS/SSL バインドを削除する (証明書の更新に関する記事を参照してください)。

受信 IP を見つける

ローカル ターミナルで次のコマンドを実行します。

nslookup <app-name>.azurewebsites.net

静的な受信 IP を取得する

専用の静的 IP アドレスをアプリで使用したい場合があります。 静的受信 IP アドレスを取得するには、IP ベースの証明書のバインドを使用してカスタム DNS 名をセキュリティで保護する必要があります。 アプリをセキュリティで保護するための TLS 機能を実質的に必要としない場合は、このバインドのために自己署名証明書をアップロードすることもできます。 IP ベースの TLS バインドでは、証明書は IP アドレス自体にバインドされるため、App Service は、静的 IP アドレスをプロビジョニングすることで、これを実現できます。

送信 IP はいつ変更されるか

スケールアウトされたインスタンスの数に関係なく、各アプリは、特定の時点で所定の数の送信 IP アドレスを持ちます。 App Service アプリからのすべての送信接続 (バックエンド データベースへの接続など) では、いずれかの送信 IP アドレスを送信元 IP アドレスとして使用します。 使用する IP アドレスは実行時にランダムに選択されるため、バックエンド サービスでは、アプリケーションのすべての送信 IP アドレスに対してファイアウォールを開いておく必要があります。

次のいずれかの操作を実行すると、アプリの一連の送信 IP アドレスが変更されます。

  • アプリを削除した後、別のリソース グループ内に再作成する (デプロイ単位が変更される場合があります)。
  • リソース グループ リージョンの組み合わせに含まれる最後のアプリケーションを削除した後、再作成する (デプロイ単位が変更される場合があります)。
  • アプリを下位レベル (BasicStandard、および Premium)、Premium V2 レベル、PremiumV3 レベル、および PremiumV3 レベル内の Pmv3 オプションの間でスケーリングする (IP アドレスはセットに追加するか、削除することができます)。

アプリが使用できるすべての可能な送信 IP アドレスは、価格レベルに関係なく、possibleOutboundIpAddresses プロパティを調べるか、Azure portal の [プロパティ] ブレードの [追加の送信 IP アドレス] で確認できます。 「IP アドレスを見つける」を参照してください。

App Service が新しい価格レベルまたはオプションを既存の App Service デプロイに追加すると、使用可能なすべての送信 IP アドレスのセットが時間の経過とともに増加する可能性があることに注意してください。 たとえば、App Service が既存の App Service デプロイに PremiumV3 レベルを追加すると、使用可能なすべての送信 IP アドレスのセットが増加します。 同様に、App Service が新しい Pmv3 オプションを PremiumV3 レベルを既にサポートしているデプロイに追加すると、使用可能なすべての送信 IP アドレスのセットも増加します。 アプリケーションを実行するための送信 IP アドレスは、新しい価格レベルまたはオプションが App Service デプロイに追加されたときに変更されないため、これはすぐには影響しません。 ただし、以前は使用できなかった新しい価格レベルまたはオプションにアプリケーションが切り替わる場合は、新しい送信アドレスが使用され、顧客はダウンストリーム ファイアウォール規則と IP アドレス制限を更新する必要があります。

IP アドレスを見つける

Azure ポータルで、現在アプリで使用されている送信 IP アドレスを見つけるには、アプリの左側のナビゲーションで [プロパティ] をクリックします。 IP アドアレスは [送信 IP アドレス] フィールドに表示されています。

Cloud Shell で次のコマンドを実行することで、同じ情報を見つけることができます。

az webapp show --resource-group <group_name> --name <app_name> --query outboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).OutboundIpAddresses

アプリで考えられる "すべて" の送信 IP アドレスを見つけるには、価格レベルに関係なく、アプリの左側にあるナビゲーションで [プロパティ] をクリックします。 IP アドアレスは [追加の送信 IP アドレス] フィールドに表示されています。

Cloud Shell で次のコマンドを実行することで、同じ情報を見つけることができます。

az webapp show --resource-group <group_name> --name <app_name> --query possibleOutboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).PossibleOutboundIpAddresses

静的送信 IP を取得する

仮想ネットワーク NAT ゲートウェイを使用して、静的パブリック IP アドレス経由でトラフィックを送信すると、アプリからの送信トラフィックの IP アドレスを制御できます。 リージョン VNet 統合は、BasicStandardPremiumPremiumV2PremiumV3 の各 App Service プランで使用できます。 このセットアップの詳細については、NAT ゲートウェイの統合に関するページを参照してください。

次のステップ

ソース IP アドレスによって受信トラフィックを制限する方法を確認します。