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

Azure App Service は、App Service Environment 以外はマルチテナント サービスです。 App Service 環境に含まれていない (分離レベル内にない) アプリは、他のアプリとネットワーク インフラストラクチャを共有します。 その結果、アプリの受信 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 が PremiumV3 レベルを既にサポートしているデプロイに新しい Pmv3 オプションを追加すると、使用できるすべての送信 IP アドレスのセットが増えます。 新しい価格レベルまたはオプションが App Service のデプロイに追加されても、実行中のアプリケーションの送信 IP アドレスは変更されないため、デプロイに IP アドレスを追加してもすぐに影響はありません。 ただし、以前は使用できなかった新しい価格レベルまたはオプションにアプリケーションが切り替わった場合、新しい送信アドレスが使われ、お客様はダウンストリームのファイアウォール規則と IP アドレス制限を更新する必要があります。

IP アドレスを見つける

Azure portal で現在アプリに使用されている送信 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 アドレス" フィールドに表示されます。

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 アドレス」を参照してください。

静的送信 IP を取得する

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

サービス タグ

AppService サービス タグを使うと、個々の IP アドレスを指定せずに、Azure App Service サービスのネットワーク アクセスを定義できます。 サービス タグは、セキュリティ規則の作成の複雑さを最小限に抑えるために使用する、IP アドレス プレフィックスのグループです。 サービス タグを使用すると、サービスの IP アドレスが変更されたときに Azure によって自動的に更新されます。 ただし、サービス タグはセキュリティ制御メカニズムではありません。 サービス タグは単なる IP アドレスの一覧です。

AppService サービス タグには、マルチテナント アプリの受信 IP アドレスのみが含まれます。 分離された環境 (App Service Environment) 内にデプロイされたアプリと、IP ベースの TLS バインドを使うアプリの受信 IP アドレスは含まれません。 さらに、マルチテナントと分離環境の両方で使われるすべての送信 IP アドレスは、タグに含まれません。

このタグを使って、ネットワーク セキュリティ グループ (NSG) でアプリへの送信トラフィックを許可できます。 アプリが IP ベースの TLS を使っている場合、またはアプリが分離モードでデプロイされている場合は、代わりに専用 IP アドレスを使う必要があります。

Note

サービス タグは、ネットワーク アクセスを定義するのに役立ちますが、個々の IP アドレスをきめ細かく制御できないため、適切なネットワーク セキュリティ対策の代わりになるものと考えるべきではありません。

次のステップ