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

この記事では、Azure Functions のホスティング オプションで利用できるネットワーク機能について説明します。This article describes the networking features available across the hosting options for Azure Functions. 次のネットワーク オプションはすべて、インターネットのルーティング可能アドレスを使用せずにリソースにアクセスする機能、または関数アプリへのインターネット アクセスを制限する機能を提供します。All of the following networking options provide some ability to access resources without using internet routable addresses, or 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 multitenant 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.
    • App Service プラン。固定されたスケールで動作し、Premium プランと同様のネットワークの分離を提供します。The Azure App Service plan, which operates at a fixed scale and offers similar network isolation to 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 (preview) [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 ❌いいえ❌No ✅はい✅Yes ✅はい✅Yes
VNetHybrid Connections ❌いいえ❌No ❌いいえ❌No ✅はい✅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/denied access to your app. このリストには、IPv4 アドレスと IPv6 アドレスを含めることができます。The list can include IPv4 and IPv6 addresses. 1 つまたは複数のエントリがある場合、リストの末尾には暗黙的な "すべて拒否" が存在します。When there's 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 only use the portal editor from within your virtual network or when you have whitelisted the IP of the machine you are using to access the Azure portal. ただし、 [プラットフォーム機能] タブの機能にはすべてのコンピューターから引き続きアクセスできます。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 from within an Azure virtual network.

  • プライベート サイトへは、サービス エンドポイントが構成されている場合に Premium従量課金プランおよび App Service プランでアクセスできます。Private site access is available in the Premium, Consumption and App Service plan 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 be selected now as the "type" of a rule.
    • 詳細については、「仮想ネットワーク サービス エンドポイント」を参照してください。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 with an App Service Environment 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 the use of 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 the private, non-internet routable addresses instead.

仮想ネットワーク統合機能には、次の 2 つの形式がありますThere are two forms to the virtual network Integration feature

  1. リージョンの仮想ネットワーク統合により、同じリージョン内の仮想ネットワークとの統合が可能になります。Regional virtual network integration enables integration with virtual networks in the same region. この形式の機能では、同じリージョン内の仮想ネットワーク内にサブネットが必要です。This form of the feature requires a subnet in a virtual network in the same region. この機能はまだプレビュー段階ですが、Windows アプリケーションの運用環境ワークロードではサポートされており、以下に注意点がいくつかあります。This feature is still in preview but is supported for Windows app production workloads with some caveats noted below.
  2. ゲートウェイが必要な仮想ネットワーク統合により、リモート リージョン内の仮想ネットワーク、またはクラシック仮想ネットワークとの統合が可能になります。Gateway required virtual network integration enables integration with virtual networks in remote regions, or with Classic virtual networks. このバージョンの機能では、VNet への Virtual Network ゲートウェイのデプロイが必要です。This version of the feature requires deployment of a Virtual Network Gateway into your VNet. これはポイント対サイト VPN ベースの機能であり、Windows アプリでのみサポートされています。This is the point-to-site VPN-based feature and is only supported with Windows apps.

アプリが同時に使用できる VNet 統合機能の形式は 1 つだけです。An app can only use one form of the VNet Integration feature at a time. そのため、どちらの機能を使用すべきかが問題になります。The question then is which feature should you use. これらはどちらも多くの目的に使用できます。You can use either for many things. ただし、明確な差別化要素を次に示します。The clear differentiators though are:

問題点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 リージョン Vnet 統合regional VNet Integration
クラシック VNet または別のリージョン内の VNet にあるリソースに到達する必要があるWant to reach resources in a Classic VNet or a VNet in another region ゲートウェイが必要な Vnet 統合gateway required VNet Integration
ExpressRoute にまたがる RFC 1918 エンドポイントに到達する必要があるWant to reach RFC 1918 endpoints across ExpressRoute リージョン Vnet 統合regional VNet Integration
サービス エンドポイントにまたがるリソースに到達する必要があるWant to reach resources across service endpoints リージョン Vnet 統合regional VNet Integration

どちらの機能を使用しても、ExpressRoute にまたがる RFC 1918 以外のアドレスに到達することはできません。Neither feature will enable you to reach non-RFC 1918 addresses across ExpressRoute. それを行うには、今のところ ASE を使用する必要があります。To do that you need to use an ASE for now.

リージョン Vnet 統合を使用しても、VNet がオンプレミスに接続されたり、サービス エンドポイントが構成されたりはしません。Using the regional VNet Integration does not connect your VNet to on-premises or configure service endpoints. それは別のネットワーク構成です。That is separate networking configuration. リージョン Vnet 統合は単純に、アプリがこれらの接続の種類をまたがって呼び出しを行うことができるようにします。The regional VNet Integration simply enables your app to make calls across those connection types.

使用されているバージョンに関係なく、VNet 統合により、関数アプリは仮想ネットワーク内のリソースにアクセスできるようになりますが、仮想ネットワークからその関数アプリへのプライベート サイト アクセスは付与されません。Regardless of the version used, VNet 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 refers to making your app only accessible from a private network such as from within an Azure virtual network. Vnet 統合は、アプリから VNet への送信呼び出しを行うためにのみ存在します。VNet Integration is only for making outbound calls from your app into your VNet.

以下は、VNet 統合機能の特徴です。The VNet 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

以下に、VNet 統合でサポートされていないことの例を示します。There are some things that VNet Integration doesn't support including:

  • ドライブのマウントMounting a drive
  • AD 統合AD integration
  • NetBIOSNetBios

Functions の仮想ネットワーク統合では、App Service Web アプリでの共有インフラストラクチャを使用します。Virtual network integration in Functions uses shared infrastructure with App Service web apps. 2 種類の仮想ネットワーク統合の詳細については、次を参照してください。To read 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.

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

注意

お使いのストレージ アカウントにアクセス制限を構成後、お使いの関数アプリでそのストレージ アカウントが使用できるようになるには、当面、最大で 12 時間かかります。Temporarily, it may take up to 12 hours for your storage account to become available to your function app once you configure access restrictions on that storage account. この期間中、お使いのアプリケーションは完全にオフラインになります。During this time your application will be completely offline.

お使いのアプリケーションのストレージ アカウントを仮想ネットワークに制限すると、より高いレベルのセキュリティを実現できます。In order to provide a higher level of security, you can restrict your application's storage account to a virtual network. その後、お使いのサイトをその仮想ネットワークと統合して、お使いのストレージ アカウントにアクセスできるようにします。You must then integrate your site with that virtual network to access your storage account. この構成は、仮想ネットワークの統合をサポートするすべての計画でサポートされています。This configuration is supported on all plans that support virtual network integration.

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

現時点では、仮想ネットワーク内から HTTP 以外の関数トリガーを使用できるようにするには、関数アプリを App Service プランまたは App Service Environment で実行する必要があります。Currently, to be able to use Function triggers other than HTTP from within a virtual network, you must run your function app in an App Service plan or in an App Service Environment.

たとえば、仮想ネットワークからのトラフィックのみを受け入れるように Azure Cosmos DB を構成する場合、その仮想ネットワークとの仮想ネットワーク統合を使用して App Service プランで関数アプリをデプロイして、そのリソースからの Azure Cosmos DB トリガーを構成する必要があります。To give an example, if you were to configure Azure Cosmos DB to only accept traffic from a virtual network, you would need to deploy your function app in an app service plan with virtual network integration with that virtual network to configure Azure Cosmos DB triggers from that resource. プレビュー段階では、VNET 統合を構成しても、その Azure Cosmos DB リソースからの Premium プランでのトリガーは許可されません。While in preview, configuring VNET integration will not allow the Premium plan to trigger off of that Azure Cosmos DB resource.

HTTP 以外のすべてのトリガーについてこちらの一覧をチェックして、サポートされているものを再度確認してください。Check this list for all non-HTTP triggers to double check what is supported.

ハイブリッド接続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. ハイブリッド接続は、App Service プランおよび App Service Environment で実行されている関数に使用できます。Hybrid Connections is available to functions running in an App Service plan and an App Service Environment.

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 does not know or care what the application protocol is, or what you're accessing. それは、ネットワーク アクセスを提供するだけです。It simply provides network access.

詳細については、App Service プランで Functions をサポートするハイブリッド接続の App Service ドキュメントを参照してください。To learn more, see the App Service documentation for Hybrid Connections, which supports Functions in an App Service plan.

送信 IP の制限Outbound IP restrictions

送信 IP の制限は、App Service Environment に展開された関数のみで利用可能です。Outbound IP restrictions are only available 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 integrating a Function app in a Premium plan or App Service plan with a virtual network, the app is still able to make outbound calls to the internet.

次の手順Next steps

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