Azure Functions の IP アドレス
この記事では、関数アプリの IP アドレスに関連する次の概念について説明します。
- 関数アプリが現在使用している IP アドレスの確認。
- 関数アプリの IP アドレスが変更される条件。
- 関数アプリにアクセスできる IP アドレスの制限。
- 関数アプリの専用の IP アドレスの定義。
IP アドレスは、個々の関数ではなく、関数アプリに関連付けられています。 着信 HTTP 要求は、着信 IP アドレスを使用して個々の関数を呼び出すことはできません。既定のドメイン名 (functionappname.azurewebsites.net) またはカスタム ドメイン名を使用する必要があります。
関数アプリの着信 IP アドレス
各関数アプリは、1 つの受信 IP アドレスを使用して開始されます。 従量課金プランまたは Premium プランで実行している場合、イベントドリブン スケールアウトが発生すると、さらに受信 IP アドレスが追加される場合があります。 アプリで使用されている受信 IP アドレスを見つけるには、次の例のように、ローカル コンピューターから nslookup
ユーティリティを使用します。
nslookup <APP_NAME>.azurewebsites.net
この例では、<APP_NAME>
をお使いの関数アプリの名前で置き換えます。 アプリでカスタム ドメイン名を使用する場合は、代わりにそのカスタム ドメイン名用の nslookup
を使用します。
関数アプリの送信 IP アドレス
各関数アプリには、使用可能な一連の送信 IP アドレスがあります。 関数からバックエンド データベースなどへの送信接続では、使用可能な送信 IP アドレスの 1 つが送信元 IP アドレスとして使用されます。 指定された接続でどの IP アドレスが使用されるかを事前に知ることはできません。 このため、バックエンド サービスでは、関数アプリのすべての送信 IP アドレスに対してファイアウォールを開く必要があります。
ヒント
Key Vault 参照などの一部のプラットフォーム レベルの機能では、配信元 IP が送信 IP の 1 つではない可能性があるため、これらの特定のアドレスに依存するようにターゲット リソースを構成しないでください。 プラットフォームはそのネットワークを介してターゲット リソースにトラフィックをルーティングするため、代わりにアプリで仮想ネットワークの統合を使用することをお勧めします。
関数アプリで使用可能な送信 IP アドレスを確認するには、次のようにします。
- Azure Resource Explorer にサインインします。
- [サブスクリプション] > {自分のサブスクリプション} > [プロバイダー] > [Microsoft.Web] > [サイト] を選択します。
- JSON パネルで、末尾が関数アプリ名の
id
プロパティを持つサイトを探します。 -
outboundIpAddresses
とpossibleOutboundIpAddresses
を参照してください。
現在、関数アプリでは、outboundIpAddresses
のセットを使用できます。
possibleOutboundIpAddresses
のセットには、関数アプリが他の価格レベルにスケーリングする場合にのみ使用できる IP アドレスが含まれています。
Note
従量課金プランまたは Premium プランで実行されている関数アプリをスケーリングすると、新しい送信 IP アドレスの範囲が割り当てられる場合があります。 これらのプランで実行する場合、報告された送信 IP アドレスを使用して、確定的な許可リストを作成することはできません。 動的スケーリング中に使用される可能性のあるすべての送信アドレスを含めるには、データ センター全体を許可リストに追加する必要があります。
データ センターの送信 IP アドレス
関数アプリで使用する送信 IP アドレスを許可リストに登録する必要がある場合、別の選択肢となるのは、関数アプリのデータ センター (Azure リージョン) を許可リストに登録することです。 すべての Azure データ センターの IP アドレスが記述された JSON ファイルをダウンロードしてください。 次に、関数アプリを実行するリージョンに適用される JSON 要素を検索します。
たとえば、次の JSON フラグメントは、西ヨーロッパの許可リストがどのようになるかを示しています。
{
"name": "AzureCloud.westeurope",
"id": "AzureCloud.westeurope",
"properties": {
"changeNumber": 9,
"region": "westeurope",
"platform": "Azure",
"systemService": "",
"addressPrefixes": [
"13.69.0.0/17",
"13.73.128.0/18",
... Some IP addresses not shown here
"213.199.180.192/27",
"213.199.183.0/24"
]
}
}
このファイルがいつ更新されるかや IP アドレスがいつ変更されるかの詳細については、[ダウンロード センター] ページの [詳細] セクションを展開してください。
着信 IP アドレスの変更
次の操作を行うと、着信 IP アドレスが変更されることがあります。
- 関数アプリを削除した後、別のリソース グループ内で再作成する。
- リソース グループとリージョンの組み合わせに含まれる最後の関数アプリを削除した後、再作成する。
- 証明書の更新時などに TLS バインドを削除する。
関数アプリが従量課金プランまたは Premium プランで実行される場合、着信 IP アドレスは、上記のようなアクションを実行しなくても、変更される場合があります。
送信 IP アドレスの変更
送信 IP アドレスの相対的な安定性は、ホスティング プランによって異なります。
従量課金および Premium プラン
自動スケールの動作により、送信 IP は、従量課金プランまたは Premium プランで実行しているときにいつでも変更できます。
許可リストに追加する必要がある場合など、関数アプリの送信 IP アドレスを制御する必要がある場合は、Premium ホスティング プランでの実行中に仮想ネットワーク NAT ゲートウェイを実装することを検討してください。 これは、Dedicated (App Service) プランで実行しても行えます。
専用プラン
専用 (App Service) プランで実行する場合は、次のような場合に、関数アプリに使用できる送信 IP アドレスのセットが変更される可能性があります。
- 着信 IP アドレスが変更される可能性のあるアクションを実行する。
- 専用 (App Service) プランの価格レベルを変更する。 すべての価格レベルについて、アプリで使用可能なすべての送信 IP アドレスのリストが
possibleOutboundIPAddresses
プロパティに含まれています。 「IP アドレスを見つける」を参照してください。
送信 IP アドレスの変更の強制
専用 (App Service) プランの送信 IP アドレスの変更を意図的に強制するには、次の手順に従います。
App Service プランの価格レベルを Standard から上げるか、または Premium v2 から下げます。
10 分間待ちます。
最初の価格レベルに戻します。
IP アドレスの制限
関数アプリへのアクセス許可または拒否する IP アドレスの一覧を構成できます。 詳細については、「Azure App Service 静的 IP 制限」を参照してください。
専用の IP アドレス
関数アプリに静的な専用の IP アドレスが必要な場合は、検討可能ないくつかの方法があります。
送信の静的な IP 用の仮想ネットワーク NAT ゲートウェイ
仮想ネットワーク NAT ゲートウェイを使用して、静的パブリック IP アドレス経由でトラフィックを送信することで、関数からの送信トラフィックの IP アドレスを制御できます。 このトポロジは、Premium プランまたは Dedicated (App Service) プランで実行する場合に使用できます。 詳しくは、「チュートリアル: Azure 仮想ネットワーク NAT ゲートウェイを使用して Azure Functions の送信 IP を制御する」を参照してください。
App Service Environment
受信と送信の両方の IP アドレスを完全に制御するには、App Service Environment (App Service プランの分離レベル) をお勧めします。 詳細については、次を参照してください。 App Service Environment の IP アドレスとApp Service Environment への受信トラフィックを制御する方法します。
関数アプリが App Service 環境内で実行されるかどうかを確認するには、次のようにします。
- Azure portal にサインインします。
- 関数アプリに移動します。
- [概要] タブを選択します。
- App Service プランの階層は、 [App Service プラン/価格レベル] の下に表示されます。 App Service 環境の価格レベルは、 [Isolated] です。
App Service 環境 sku
は Isolated
です。
次のステップ
多くの場合、IP が変更されるのは、関数アプリのスケールが変更されるためです。 関数アプリのスケーリングの詳細を参照してください。