Azure Functions のネットワーク オプションAzure Functions networking options

この記事では、Azure Functions のホスティング オプションで利用できるネットワーク機能について説明します。This article describes the networking features available across the hosting options for Azure Functions. 次のネットワーク オプションはすべて、インターネットのルーティング可能アドレスを使用せずにリソースにアクセスする機能、または関数アプリへのインターネット アクセスを制限する機能を提供します。All the following networking options give you some ability to access resources without using internet-routable addresses, or to restrict internet access to a function app.

ホスティング モデルには、さまざまなレベルのネットワーク分離機能があります。The hosting models have different levels of network isolation available. 正しいものを選択すると、ネットワーク分離の要件を満たすために役立ちます。Choosing the correct one will help you meet your network isolation requirements.

関数アプリは、いくつかの方法でホストできます。You can host function apps in a couple of ways:

  • さまざまなレベルの仮想ネットワーク接続とスケーリングのオプションが設定された、マルチテナント インフラストラクチャ上で実行される一連のプラン オプションがあります。There's a set of plan options that run on a multi-tenant infrastructure, with various levels of virtual network connectivity and scaling options:
    • 従量課金プラン。負荷に応じて動的にスケーリングし、最小限のネットワークの分離オプションを提供します。The Consumption plan, which scales dynamically in response to load and offers minimal network isolation options.
    • Premium プラン。このプランでも動的なスケーリングが行われますが、より包括的なネットワークの分離が提供されます。The Premium plan, which also scales dynamically, while offering more comprehensive network isolation.
    • Azure App Service プラン。固定されたスケールで動作し、Premium プランと同様のネットワーク分離を提供します。The Azure App Service plan, which operates at a fixed scale and offers similar network isolation as the Premium plan.
  • App Service Environment で関数を実行できます。You can run functions in an App Service Environment. この方法では、関数を仮想ネットワークにデプロイし、完全なネットワーク制御と分離を提供します。This method deploys your function into your virtual network and offers full network control and isolation.

ネットワーク機能のマトリックスMatrix of networking features

従量課金プランConsumption plan Premium プランPremium plan [App Service プラン]App Service plan App Service 環境App Service Environment
受信 IP の制限とプライベート サイトへのアクセスInbound IP restrictions & private site access ✅はい✅Yes ✅はい✅Yes ✅はい✅Yes ✅はい✅Yes
仮想ネットワークの統合Virtual network integration ❌いいえ❌No ✅はい (リージョン)✅Yes (Regional) ✅はい (リージョンとゲートウェイ)✅Yes (Regional and Gateway) ✅はい✅Yes
仮想ネットワーク トリガー (非 HTTP)Virtual network triggers (non-HTTP) ❌いいえ❌No ✅はい✅Yes ✅はい✅Yes ✅はい✅Yes
ハイブリッド接続 (Windows のみ)Hybrid connections (Windows only) ❌いいえ❌No ✅はい✅Yes ✅はい✅Yes ✅はい✅Yes
送信 IP の制限Outbound IP restrictions ❌いいえ❌No ❌いいえ❌No ❌いいえ❌No ✅はい✅Yes

受信 IP の制限Inbound IP restrictions

IP 制限を使用すると、アプリへのアクセスを許可または拒否される IP アドレスの優先順位付きリストを定義できます。You can use IP restrictions to define a priority-ordered list of IP addresses that are allowed or denied access to your app. このリストには、IPv4 アドレスと IPv6 アドレスを含めることができます。The list can include IPv4 and IPv6 addresses. 1 つ以上のエントリがある場合、リストの最後にあるものは暗黙的に "すべて拒否" になります。When there are one or more entries, an implicit "deny all" exists at the end of the list. IP 制限は、すべての関数ホスティング オプションで有効です。IP restrictions work with all function-hosting options.

注意

ネットワーク制限が適用されている場合、ポータル エディターを使用できるのは、仮想ネットワーク内から、または Azure portal へのアクセスに使用しているコンピューターの IP アドレスを [信頼できる宛先のリスト] に入れている場合のみになります。With network restrictions in place, you can use the portal editor only from within your virtual network, or when you've put the IP address of the machine you're using to access the Azure portal on the Safe Recipients list. ただし、 [プラットフォーム機能] タブの機能にはすべてのコンピューターから引き続きアクセスできます。However, you can still access any features on the Platform features tab from any machine.

詳細については、「Azure App Service の静的なアクセス制限」を参照してください。To learn more, see Azure App Service static access restrictions.

プライベート サイトへのアクセスPrivate site access

プライベート サイトへのアクセスとは、Azure 仮想ネットワークなどのプライベート ネットワークからのみアプリにアクセスできるようにすることです。Private site access refers to making your app accessible only from a private network such as an Azure virtual network.

  • プライベート サイトへのアクセスは、サービス エンドポイントが構成されている場合に Premium従量課金、および App Service の各プランで利用できます。Private site access is available in the Premium, Consumption, and App Service plans when service endpoints are configured.
    • サービス エンドポイントは、 [プラットフォーム機能] > [ネットワーク] > [アクセス制限を構成する] > [ルールの追加] から、アプリごとに構成できます。Service endpoints can be configured on a per-app basis under Platform features > Networking > Configure Access Restrictions > Add Rule. これで、仮想ネットワークをルールの種類として選択できるようになりました。Virtual networks can now be selected as a rule type.
    • 詳細については、「仮想ネットワーク サービス エンドポイント」を参照してください。For more information, see virtual network service endpoints.
    • サービス エンドポイントがあれば、仮想ネットワーク統合が構成されていても、関数はインターネットへの完全な送信アクセスを引き続き持つことに注意してください。Keep in mind that with service endpoints, your function still has full outbound access to the internet, even with virtual network integration configured.
  • プライベート サイトへのアクセスは、内部ロード バランサー (ILB) を使用して構成されている App Service Environment 内でも使用可能です。Private site access is also available within an App Service Environment that's configured with an internal load balancer (ILB). 詳細については、「App Service Environment で内部ロード バランサーを作成して使用する」を参照してください。For more information, see Create and use an internal load balancer with an App Service Environment.

仮想ネットワークの統合Virtual network integration

仮想ネットワーク統合により、関数アプリは仮想ネットワーク内のリソースにアクセスできます。Virtual network integration allows your function app to access resources inside a virtual network. この機能は、Premium プランと App Service プランの両方で使用できます。This feature is available in both the Premium plan and the App Service plan. アプリが App Service Environment 内にある場合は、既に仮想ネットワーク内にあり、同じ仮想ネットワーク内のリソースに到達するために仮想ネットワーク統合は必要はありません。If your app is in an App Service Environment, it's already in a virtual network and doesn't require virtual network integration to reach resources in the same virtual network.

仮想ネットワーク統合を使用すると、アプリから、仮想ネットワークで実行されているデータベースや Web サービスにアクセスできます。You can use virtual network integration to enable access from apps to databases and web services running in your virtual network. 仮想ネットワーク統合では、VM 上でアプリケーション用にパブリック エンドポイントを公開する必要はありません。With virtual network integration, you don't need to expose a public endpoint for applications on your VM. 代わりに、インターネット ルーティングできないプライベート アドレスを使用できます。You can use private, non-internet routable addresses instead.

仮想ネットワーク統合には、次の 2 つの形式があります。There are two forms of virtual network integration:

  • リージョンでの仮想ネットワーク統合 (プレビュー) :同じリージョン内の仮想ネットワークとの統合を有効にします。Regional virtual network integration (preview): Enables integration with virtual networks in the same region. この種類の統合では、同じリージョンの仮想ネットワーク内にサブネットが必要です。This type of integration requires a subnet in a virtual network in the same region. この機能はまだプレビュー段階ですが、Windows で実行されている関数アプリでサポートされています。ただし、次の問題/ソリューションの表の後に記載されている注意事項があります。This feature is still in preview, but it's supported for function apps running on Windows, with the caveats described after the following Problem/Solution table.
  • ゲートウェイが必要な仮想ネットワーク統合:リモート リージョン内の仮想ネットワーク、またはクラシック仮想ネットワークとの統合を可能にします。Gateway required virtual network integration: Enables integration with virtual networks in remote regions, or with classic virtual networks. この種類の統合では、VNet への仮想ネットワーク ゲートウェイのデプロイが必要になります。This type of integration requires deployment of a virtual network gateway into your VNet. これはポイント対サイト VPN ベースの機能であり、Windows で実行されている関数アプリでのみサポートされています。This is a point-to-site VPN-based feature, which is supported only for function apps running on Windows.

アプリでは、一度に 1 種類の仮想ネットワーク統合機能しか使用できません。An app can use only one type of the virtual network integration feature at a time. どちらも多くのシナリオで役に立ちますが、次の表にそれぞれを使用すべき場合を示します。Although both are useful for many scenarios, the following table indicates where each should be used:

問題Problem 解決策Solution
同じリージョン内の RFC 1918 アドレス (10.0.0.0/8、172.16.0.0/12、192.168.0.0/16) に到達する必要があるWant to reach an RFC 1918 address (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) in the same region リージョンでの仮想ネットワーク統合Regional virtual network integration
クラシック仮想ネットワーク内、または別のリージョンの仮想ネットワーク内のリソースに到達する必要があるWant to reach resources in a Classic virtual network or a virtual network in another region ゲートウェイが必要な仮想ネットワーク統合Gateway required virtual network integration
Azure ExpressRoute で RFC 1918 エンドポイントに到達する必要があるWant to reach RFC 1918 endpoints across Azure ExpressRoute リージョンでの仮想ネットワーク統合Regional virtual network integration
サービス エンドポイントにまたがるリソースに到達する必要があるWant to reach resources across service endpoints リージョンでの仮想ネットワーク統合Regional virtual network integration

どちらの機能を使用しても、ExpressRoute で RFC 1918 以外のアドレスに到達することはできません。Neither feature lets you reach non-RFC 1918 addresses across ExpressRoute. これを行うには、現時点では、App Service Environment を使用する必要があります。To do that, you currently have to use an App Service Environment.

リージョンでの仮想ネットワーク統合を使用しても、仮想ネットワークがオンプレミスのエンドポイントに接続されたり、サービス エンドポイントが構成されたりすることはありません。Using regional virtual network integration doesn't connect your virtual network to on-premises endpoints or configure service endpoints. それは別のネットワーク構成です。That's a separate networking configuration. リージョンでの仮想ネットワーク統合は単に、アプリがそれらの接続の種類を越えて呼び出しを行うことができるようにします。Regional virtual network integration just enables your app to make calls across those connection types.

使用されているバージョンに関係なく、仮想ネットワーク統合により、関数アプリは仮想ネットワーク内のリソースにアクセスできるようになりますが、仮想ネットワークからその関数アプリへのプライベート サイト アクセスは許可されません。Regardless of the version used, virtual network integration gives your function app access to resources in your virtual network but doesn't grant private site access to your function app from the virtual network. プライベート サイトへのアクセスとは、Azure 仮想ネットワークなどのプライベート ネットワークからのみアプリにアクセスできるようにすることです。Private site access means making your app accessible only from a private network like an Azure virtual network. 仮想ネットワーク統合は、アプリから仮想ネットワークへの送信呼び出しを行うためだけのものです。Virtual network integration is only for making outbound calls from your app into your virtual network.

仮想ネットワーク統合の機能:The virtual network integration feature:

  • Standard、Premium、または PremiumV2 の App Service プランが必要Requires a Standard, Premium, or PremiumV2 App Service plan
  • TCP と UDP をサポートSupports TCP and UDP
  • App Service アプリや関数アプリで動作可能Works with App Service apps and function apps

以下に、仮想ネットワーク統合でサポートされていないことの例を示します。There are some things that virtual network integration doesn't support, including:

  • ドライブのマウントMounting a drive
  • Active Directory 統合Active Directory integration
  • NetBIOSNetBIOS

Azure Functions の仮想ネットワーク統合では、App Service Web アプリと共有インフラストラクチャを使用します。Virtual network integration in Azure Functions uses shared infrastructure with App Service web apps. 2 種類の仮想ネットワーク統合の詳細については、次を参照してください。To learn more about the two types of virtual network integration, see:

仮想ネットワーク統合の使用について詳しくは、「関数アプリを Azure 仮想ネットワークに統合する」を参照してください。To learn more about using virtual network integration, see Integrate a function app with an Azure virtual network.

サービス エンドポイントのセキュリティで保護されたリソースへの接続Connecting to service endpoint secured resources

注意

現在、ダウンストリーム リソースにアクセス制限を構成してから、新しいサービス エンドポイントが関数アプリで使用できるようになるまでに最大 12 時間かかる場合があります。For now, it may take up to 12 hours for new service endpoints to become available to your function app after you configure access restrictions on the downstream resource. この期間中は、アプリでリソースを完全に使用できなくなります。During this time the resource will be completely unavailable to your app.

より高度なセキュリティを実現するために、サービス エンドポイントを使用して、仮想ネットワークに対する Azure サービス数を制限することができます。To provide a higher level of security, you can restrict a number of Azure services to a virtual network by using service endpoints. 次に、関数アプリをその仮想ネットワークと統合して、リソースにアクセスする必要があります。You must then integrate your function app with that virtual network to access the resource. この構成は、仮想ネットワークの統合をサポートするすべての計画でサポートされています。This configuration is supported on all plans that support virtual network integration.

仮想ネットワーク サービス エンドポイントの詳細を確認するLearn more about virtual network service endpoints.

お使いのストレージ アカウントを仮想ネットワークに制限するRestricting your storage account to a virtual network

関数アプリを作成するときは、BLOB、Queue、および Table Storage をサポートする汎用の Azure Storage アカウントを作成またはリンクする必要があります。When you create a function app, you must create or link to a general-purpose Azure Storage account that supports Blob, Queue, and Table storage. 現在、このアカウントに対して仮想ネットワークの制限を使用することはできません。You can't currently use any virtual network restrictions on this account. 関数アプリに使用しているストレージ アカウントに仮想ネットワーク サービス エンドポイントを構成すると、アプリが中断されます。If you configure a virtual network service endpoint on the storage account you're using for your function app, that will break your app.

ストレージ アカウントの要件の詳細を確認するLearn more about storage account requirements.

Key Vault 参照の使用Using Key Vault references

Key Vault 参照を使用すると、コードを変更せず、Azure Functions アプリケーションの Azure Key Vault のシークレットを使用することができます。Key Vault references allow you to use secrets from Azure Key Vault in your Azure Functions application without requiring any code changes. Azure Key Vault は、アクセス ポリシーと監査履歴を完全制御する、一元化されたシークレット管理を提供するサービスです。Azure Key Vault is a service that provides centralized secrets management, with full control over access policies and audit history.

現在、Key Vault がサービス エンドポイントで保護されている場合、Key Vault 参照は機能しません。Currently Key Vault references will not work if your Key Vault is secured with service endpoints. 仮想ネットワーク統合を使用して Key Vault に接続するには、アプリケーション コードで Key Vault を呼び出す必要があります。To connect to a Key Vault using virtual network integration you will need to call key vault in your application code.

仮想ネットワーク トリガー (非 HTTP)Virtual network triggers (non-HTTP)

現時点では、次の 2 つの方法のいずれかで、仮想ネットワーク内から非 HTTP トリガー関数を使用できます。Currently, you can use non-HTTP trigger functions from within a virtual network in one of two ways:

  • Premium プランで関数アプリを実行し、仮想ネットワーク トリガーのサポートを有効にする。Run your function app in a Premium plan and enable Virtual network trigger support.
  • App Service プランまたは App Service Environment で関数アプリを実行する。Run your function app in an App Service plan or App Service Environment.

仮想ネットワーク トリガーを使用した Premium プランPremium Plan with virtual network triggers

Premium プランで実行する場合は、仮想ネットワーク内で実行されているサービスに非 HTTP トリガー関数を接続できます。When running in a Premium plan, you can connect non-HTTP trigger functions to services running inside a virtual network. これを行うには、関数アプリの仮想ネットワーク トリガーのサポートを有効にする必要があります。To do this, you must enable virtual network trigger support for your function app. 仮想ネットワーク トリガーのサポートの設定は、Azure portal[関数アプリの設定] にあります。The virtual network trigger support setting is found in the Azure portal under Function app settings.

VNETToggle

次の Azure CLI コマンドを使用して、仮想ネットワーク トリガーを有効にすることもできます。You can also enable virtual network triggers using the following Azure CLI command:

az resource update -g <resource_group> -n <premium_plan_name> --set properties.functionsRuntimeScaleMonitoringEnabled=1

仮想ネットワーク トリガーは、バージョン 2.x 以降の Functions ランタイムでサポートされています。Virtual network triggers are supported in version 2.x and above of the Functions runtime. 次の非 HTTP トリガーの種類がサポートされています。The following non-HTTP trigger types are supported.

拡張機能Extension 最小バージョンMinimum Version
Microsoft.Azure.WebJobs.Extensions.StorageMicrosoft.Azure.WebJobs.Extensions.Storage 3.0.10 以降3.0.10 or above
Microsoft.Azure.WebJobs.Extensions.EventHubsMicrosoft.Azure.WebJobs.Extensions.EventHubs 4.1.0 以降4.1.0 or above
Microsoft.Azure.WebJobs.Extensions.ServiceBusMicrosoft.Azure.WebJobs.Extensions.ServiceBus 3.2.0 以降3.2.0 or above
Microsoft.Azure.WebJobs.Extensions.CosmosDBMicrosoft.Azure.WebJobs.Extensions.CosmosDB 3.0.5 以降3.0.5 or above
Microsoft.Azure.WebJobs.Extensions.DurableTaskMicrosoft.Azure.WebJobs.Extensions.DurableTask 2.0.0 以降2.0.0 or above

重要

仮想ネットワーク トリガーのサポートを有効にすると、上記の種類のトリガーのみがアプリケーションで動的にスケーリングされます。When enabling virtual network trigger support, only the trigger types above scale dynamically with your application. 上記以外のトリガーも使用できますが、事前ウォーミングされたインスタンス数を超えてスケーリングされることはありません。You can still use triggers not listed above, however they are not scaled beyond their pre-warmed instance count. トリガーの全一覧については、「トリガーとバインド」を参照してください。See triggers and bindings for the complete list of triggers.

仮想ネットワーク トリガーを使用した App Service プランと App Service EnvironmentApp Service Plan and App Service Environment with virtual network triggers

関数アプリを App Service プランまたは App Service Environment のいずれかで実行する場合は、非 HTTP トリガー関数を使用できます。When your function app runs in either an App Service Plan or an App Service Environment, you can use non-HTTP trigger functions. 関数が正しくトリガーされるようにするには、トリガー接続で定義されているリソースにアクセスできる仮想ネットワークに接続する必要があります。For your functions to get triggered correctly, you must be connected to a virtual network with access to the resource defined in the trigger connection.

たとえば、仮想ネットワークからのみトラフィックを受け入れるように Azure Cosmos DB を構成するとします。For example, assume you want to configure Azure Cosmos DB to accept traffic only from a virtual network. この場合、その仮想ネットワークとの仮想ネットワーク統合を提供する App Service プランで関数アプリをデプロイする必要があります。In this case, you must deploy your function app in an App Service plan that provides virtual network integration with that virtual network. これにより、その Azure Cosmos DB リソースによって関数がトリガーされるようになります。This enables a function to be triggered by that Azure Cosmos DB resource.

ハイブリッド接続Hybrid Connections

ハイブリッド接続は、他のネットワークのアプリケーション リソースにアクセスするために使用できる Azure Relay の機能です。Hybrid Connections is a feature of Azure Relay that you can use to access application resources in other networks. アプリからアプリケーション エンドポイントにアクセスできます。It provides access from your app to an application endpoint. アプリケーションにアクセスするために使用することはできません。You can't use it to access your application. ハイブリッド接続は、Windows で実行されている、従量課金プラン以外の関数に使用できます。Hybrid Connections is available to functions running on Windows in all but the Consumption plan.

Azure Functions で使用されるとき、各ハイブリッド接続は、単一の TCP ホストとポートの組み合わせに相互に関連付けられます。As used in Azure Functions, each hybrid connection correlates to a single TCP host and port combination. つまり、TCP リッスン ポートにアクセスしている限り、任意のオペレーティング システムの任意のアプリケーションがハイブリッド接続のエンドポイントになることができます。This means that the hybrid connection's endpoint can be on any operating system and any application as long as you're accessing a TCP listening port. ハイブリッド接続機能では、アプリケーション プロトコルやアクセス先は認識されません。The Hybrid Connections feature doesn't know or care what the application protocol is or what you're accessing. ネットワーク アクセスを提供するだけです。It just provides network access.

詳細については、ハイブリッド接続に関する App Service ドキュメントを参照してください。To learn more, see the App Service documentation for Hybrid Connections. これらの同じ構成手順を Azure Functions に使用できます。These same configuration steps support Azure Functions.

重要

ハイブリッド接続は、Windows プランでのみサポートされています。Hybrid Connections is only supported on Windows plans. Linux はサポートされていません。Linux is not supported

送信 IP の制限Outbound IP restrictions

送信 IP の制限は、App Service Environment にデプロイされた関数でのみ利用可能です。Outbound IP restrictions are available only for functions deployed to an App Service Environment. App Service Environment が展開されている仮想ネットワークの送信制限を構成することができます。You can configure outbound restrictions for the virtual network where your App Service Environment is deployed.

Premium プランまたは App Service プランの関数アプリを仮想ネットワークと統合した場合でも、アプリはインターネットへの送信呼び出しを行うことができます。When you integrate a function app in a Premium plan or an App Service plan with a virtual network, the app can still make outbound calls to the internet.

次のステップNext steps

ネットワークと Azure Functions の詳細については、以下を参照してください。To learn more about networking and Azure Functions: