App Service 環境への受信トラフィックを制御する方法How To Control Inbound Traffic to an App Service Environment

概要Overview

App Service 環境は、Azure Resource Manager 仮想ネットワークまたはクラシック デプロイ モデル仮想ネットワークどちらにでも作成できます。An App Service Environment can be created in either an Azure Resource Manager virtual network, or a classic deployment model virtual network. App Service 環境の作成時に、新しい仮想ネットワークと新しいサブネットを定義できます。A new virtual network and new subnet can be defined at the time an App Service Environment is created. または、既存の仮想ネットワークと既存のサブネットに App Service 環境を作成することもできます。Alternatively, an App Service Environment can be created in a pre-existing virtual network and pre-existing subnet. また、2016 年 6 月に行われた変更で、パブリック アドレス範囲と RFC1918 アドレス空間 (つまりプライベート アドレス) のどちらかを使用した仮想ネットワークに ASE をデプロイできるようになりました。With a change made in June 2016, ASEs can also be deployed into virtual networks that use either public address ranges, or RFC1918 address spaces (i.e. private addresses). App Service 環境の作成方法の詳細については、「App Service 環境の作成方法」を参照してください。For more details on creating an App Service Environment see How To Create an App Service Environment.

App Service 環境は常にサブネット内で作成する必要があります。これは、HTTP トラフィックと HTTPS トラフィックが特定のアップストリーム IP アドレスのみから受け取られるように、アップストリーム デバイスおよびサービスの背後で受信トラフィックをロックダウンするために使用できるネットワーク境界がサブネットによって提供されるためです。An App Service Environment must always be created within a subnet because a subnet provides a network boundary which can be used to lock down inbound traffic behind upstream devices and services such that HTTP and HTTPS traffic is only accepted from specific upstream IP addresses.

サブネット上の受信および送信ネットワーク トラフィックは、ネットワーク セキュリティ グループを使用して制御されます。Inbound and outbound network traffic on a subnet is controlled using a network security group. 受信トラフィックを制御するには、ネットワーク セキュリティ グループにネットワーク セキュリティ ルールを作成してから、そのネットワーク セキュリティ グループを App Service 環境が含まれるサブネットに割り当てる必要があります。Controlling inbound traffic requires creating network security rules in a network security group, and then assigning the network security group the subnet containing the App Service Environment.

ネットワーク セキュリティ グループがサブネットに割り当てられると、App Service 環境におけるアプリへの受信トラフィックは、ネットワーク セキュリティ グループで定義された許可ルールと拒否ルールに基づいて許可またはブロックされます。Once a network security group is assigned to a subnet, inbound traffic to apps in the App Service Environment is allowed/blocked based on the allow and deny rules defined in the network security group.

注意

この記事は、Web アプリについて言及していますが、API アプリとモバイル アプリにも適用されます。Although this article refers to web apps, it also applies to API apps and mobile apps.

App Service 環境で使用される受信ネットワーク ポートInbound Network Ports Used in an App Service Environment

ネットワーク セキュリティ グループで受信ネットワーク トラフィックをロックダウンする前に、App Service 環境で使用される必須およびオプションのネットワーク ポートのセットを把握しておくことが重要です。Before locking down inbound network traffic with a network security group, it is important to know the set of required and optional network ports used by an App Service Environment. 誤っていくつかのポートへのトラフィックを遮断すると、App Service 環境の機能が失われることがあります。Accidentally closing off traffic to some ports can result in loss of functionality in an App Service Environment.

App Service 環境で使用されるポートの一覧を次に示します。The following is a list of ports used by an App Service Environment. 特に断りのない限り、すべてのポートは TCP です。All ports are TCP, unless otherwise clearly noted:

  • 454:SSL を介した App Service Environment の管理および保守のために Azure インフラストラクチャによって使用される必須ポート454: Required port used by Azure infrastructure for managing and maintaining App Service Environments via SSL. このポートへのトラフィックはブロックしないでください。Do not block traffic to this port. このポートは常に、ASE のパブリック VIP にバインドします。This port is always bound to the public VIP of an ASE.
  • 455:SSL を介した App Service Environment の管理および保守のために Azure インフラストラクチャによって使用される必須ポート455: Required port used by Azure infrastructure for managing and maintaining App Service Environments via SSL. このポートへのトラフィックはブロックしないでください。Do not block traffic to this port. このポートは常に、ASE のパブリック VIP にバインドします。This port is always bound to the public VIP of an ASE.
  • 80:App Service Environment において App Service プランで実行されているアプリへの受信 HTTP トラフィック用の既定のポート。80: Default port for inbound HTTP traffic to apps running in App Service Plans in an App Service Environment. ILB 対応の ASE では、このポートを ASE の ILB アドレスにバインドします。On an ILB-enabled ASE, this port is bound to the ILB address of the ASE.
  • 443:App Service Environment において App Service プランで実行されているアプリへの受信 SSL トラフィック用の既定のポート。443: Default port for inbound SSL traffic to apps running in App Service Plans in an App Service Environment. ILB 対応の ASE では、このポートを ASE の ILB アドレスにバインドします。On an ILB-enabled ASE, this port is bound to the ILB address of the ASE.
  • 21:FTP 用のコントロール チャネル。21: Control channel for FTP. FTP が使用されていない場合は、このポートを安全にブロックできます。This port can be safely blocked if FTP is not being used. ILB 対応の ASE では、このポートを ASE の ILB アドレスにバインドできます。On an ILB-enabled ASE, this port can be bound to the ILB address for an ASE.
  • 990:FTPS 用のコントロール チャネル。990: Control channel for FTPS. FTPS が使用されていない場合は、このポートを安全にブロックできます。This port can be safely blocked if FTPS is not being used. ILB 対応の ASE では、このポートを ASE の ILB アドレスにバインドできます。On an ILB-enabled ASE, this port can be bound to the ILB address for an ASE.
  • 10001 ~ 10020:FTP 用のデータ チャネル。10001-10020: Data channels for FTP. コントロール チャネルと同様、FTP が使用されていない場合は、これらのポートを安全にブロックできます。As with the control channel, these ports can be safely blocked if FTP is not being used. ILB 対応の ASE では、このポートを ASE の ILB アドレスにバインドできます。On an ILB-enabled ASE, this port can be bound to the ASE's ILB address.
  • 4016:Visual Studio 2012 でのリモート デバッグに使用されます。4016: Used for remote debugging with Visual Studio 2012. 機能が使用されていない場合は、このポートを安全にブロックできます。This port can be safely blocked if the feature is not being used. ILB 対応の ASE では、このポートを ASE の ILB アドレスにバインドします。On an ILB-enabled ASE, this port is bound to the ILB address of the ASE.
  • 4018:Visual Studio 2013 でのリモート デバッグに使用されます。4018: Used for remote debugging with Visual Studio 2013. 機能が使用されていない場合は、このポートを安全にブロックできます。This port can be safely blocked if the feature is not being used. ILB 対応の ASE では、このポートを ASE の ILB アドレスにバインドします。On an ILB-enabled ASE, this port is bound to the ILB address of the ASE.
  • 4020:Visual Studio 2015 でのリモート デバッグに使用されます。4020: Used for remote debugging with Visual Studio 2015. 機能が使用されていない場合は、このポートを安全にブロックできます。This port can be safely blocked if the feature is not being used. ILB 対応の ASE では、このポートを ASE の ILB アドレスにバインドします。On an ILB-enabled ASE, this port is bound to the ILB address of the ASE.

発信接続と DNS の要件Outbound Connectivity and DNS Requirements

App Service 環境が正常に機能するためには、さまざまなエンドポイントへの発信アクセスも必要です。For an App Service Environment to function properly, it also requires outbound access to various endpoints. ExpressRoute を使用した環境のネットワーク構成 の記事の「必要なネットワーク接続」というセクションに、App Service Environment で使用されるすべての外部エンドポイントが掲載されています。A full list of the external endpoints used by an ASE is in the "Required Network Connectivity" section of the Network Configuration for ExpressRoute article.

App Service 環境では、仮想ネットワーク用に構成された有効な DNS インフラストラクチャが必要です。App Service Environments require a valid DNS infrastructure configured for the virtual network. 何らかの理由で、App Service Environment の作成後に DNS 構成が変わった場合、開発者は強制的に App Service Environment から新しい DNS 構成を選択することができます。If for any reason the DNS configuration is changed after an App Service Environment has been created, developers can force an App Service Environment to pick up the new DNS configuration. Azure portal の App Service 環境管理ブレードの上部にある [再起動] アイコンを使用して、ローリングする環境の再起動をトリガーすると、新しい DNS 構成が自動的に選択されます。Triggering a rolling environment reboot using the "Restart" icon located at the top of the App Service Environment management blade in the Azure portal will cause the environment to pick up the new DNS configuration.

また、App Service 環境を作成する前に、vnet 上のカスタム DNS サーバーをセットアップしておくことをお勧めします。It is also recommended that any custom DNS servers on the vnet be setup ahead of time prior to creating an App Service Environment. App Service 環境の作成中に仮想ネットワークの DNS 構成が変更された場合、App Service 環境の作成プロセスは失敗します。If a virtual network's DNS configuration is changed while an App Service Environment is being created, that will result in the App Service Environment creation process failing. 同様に、VPN ゲートウェイの他端にカスタム DNS サーバーが存在していて、その DNS サーバーが到達不能または使用できない場合、App Service 環境の作成プロセスも失敗します。In a similar vein, if a custom DNS server exists on the other end of a VPN gateway, and the DNS server is unreachable or unavailable, the App Service Environment creation process will also fail.

ネットワーク セキュリティ グループの作成Creating a Network Security Group

ネットワーク セキュリティ グループの動作の詳細については、次の情報を参照してください。For full details on how network security groups work see the following information. 下の Azure Service Management のサンプルは、ネットワーク セキュリティ グループの特徴に触れています。ここでは、App Service 環境を含むサブネットでのネットワーク セキュリティ グループの構成と適用に注目しています。The Azure Service Management example below touches on highlights of network security groups, with a focus on configuring and applying a network security group to a subnet that contains an App Service Environment.

注: ネットワーク セキュリティ グループは、Azure portal を利用して視覚的に構成することも、Azure PowerShell を利用して構成することもできます。Note: Network security groups can be configured graphically using the Azure Portal or through Azure PowerShell.

ネットワーク セキュリティ グループは、最初に、サブスクリプションに関連付けられたスタンドアロン エンティティとして作成されます。Network security groups are first created as a standalone entity associated with a subscription. ネットワーク セキュリティ グループは Azure リージョン内に作成されるため、ネットワーク セキュリティ グループが App Service 環境と同じリージョンに作成されるようにします。Since network security groups are created in an Azure region, ensure that the network security group is created in the same region as the App Service Environment.

以下は、ネットワーク セキュリティ グループの作成を示しています。The following demonstrates creating a network security group:

New-AzureNetworkSecurityGroup -Name "testNSGexample" -Location "South Central US" -Label "Example network security group for an app service environment"

ネットワーク セキュリティ グループが作成されると、それに 1 つ以上のネットワーク セキュリティ ルールが追加されます。Once a network security group is created, one or more network security rules are added to it. ルール セットは時間の経過と共に変更される可能性があるため、時間の経過に伴い追加のルールを容易に挿入できるように、ルールの優先度に使用される番号付けスキームを一定間隔で配置することをお勧めします。Since the set of rules may change over time, it is recommended to space out the numbering scheme used for rule priorities to make it easy to insert additional rules over time.

次の例では、Azure インフラストラクチャで App Service 環境の管理と保守に必要とされる管理ポートへのアクセスを明示的に付与するルールを示しています。The example below shows a rule that explicitly grants access to the management ports needed by the Azure infrastructure to manage and maintain an App Service Environment. すべての管理トラフィックが SSL 経由で流れ、クライアント証明書によってセキュリティで保護されているため、ポートが開かれている場合でも、Azure の管理インフラストラクチャ以外のどのエンティティからもアクセスできないことにご注意ください。Note that all management traffic flows over SSL and is secured by client certificates, so even though the ports are opened they are inaccessible by any entity other than Azure management infrastructure.

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "ALLOW AzureMngmt" -Type Inbound -Priority 100 -Action Allow -SourceAddressPrefix 'INTERNET'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '454-455' -Protocol TCP

ポート 80 と 443 へのアクセスをロックダウンして、App Service 環境をアップストリーム デバイスまたはサービスの背後に "隠す" 場合は、アップストリーム IP アドレスを知っている必要があります。When locking down access to port 80 and 443 to "hide" an App Service Environment behind upstream devices or services, you will need to know the upstream IP address. たとえば、Web アプリケーション ファイアウォール (WAF) を使用している場合、WAF は、ダウンストリーム App Service 環境へのトラフィックをプロキシするときに使用する専用の IP アドレス (複数の場合もあり) を保持します。For example, if you are using a web application firewall (WAF), the WAF will have its own IP address (or addresses) which it uses when proxying traffic to a downstream App Service Environment. この IP アドレスは、ネットワーク セキュリティ ルールの SourceAddressPrefix パラメーターで使用する必要があります。You will need to use this IP address in the SourceAddressPrefix parameter of a network security rule.

次の例では、特定のアップストリーム IP アドレスからの受信トラフィックが明示的に許可されています。In the example below, inbound traffic from a specific upstream IP address is explicitly allowed. アドレス 1.2.3.4 は、アップストリーム WAF の IP アドレスのプレースホルダーとして使用されています。The address 1.2.3.4 is used as a placeholder for the IP address of an upstream WAF. アップストリーム デバイスまたはサービスで使用されているアドレスと一致するように値を変更します。Change the value to match the address used by your upstream device or service.

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT HTTP" -Type Inbound -Priority 200 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT HTTPS" -Type Inbound -Priority 300 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP

FTP サポートが必要な場合は、次のルールをテンプレートとして使用して、FTP 制御ポートとデータ チャネル ポートへのアクセス権を付与できます。If FTP support is desired, the following rules can be used as a template to grant access to the FTP control port and data channel ports. FTP はステートフルなプロトコルであるため、従来の HTTP/HTTPS ファイアウォールまたはプロキシ デバイス経由で FTP トラフィックをルーティングできない場合があります。Since FTP is a stateful protocol, you may not be able to route FTP traffic through a traditional HTTP/HTTPS firewall or proxy device. この場合は、SourceAddressPrefix を別の値に設定する必要があります。たとえば、FTP クライアントが実行されている開発者コンピューターまたはデプロイメント コンピューターの IP アドレス範囲です。In this case you will need to set the SourceAddressPrefix to a different value - for example the IP address range of developer or deployment machines on which FTP clients are running.

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT FTPCtrl" -Type Inbound -Priority 400 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '21' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT FTPDataRange" -Type Inbound -Priority 500 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '10001-10020' -Protocol TCP

(注: データ チャネル ポート範囲は、プレビュー期間中に変更される場合があります)。(Note: the data channel port range may change during the preview period.)

Visual Studio でのリモート デバッグが使用されている場合、次のルールでは、アクセス権を付与する方法を示しています。If remote debugging with Visual Studio is used, the following rules demonstrate how to grant access. Visual Studio では、バージョンごとにリモート デバッグに使用するポートが異なるため、サポートされているバージョンごとに個別のルールがあります。There is a separate rule for each supported version of Visual Studio since each version uses a different port for remote debugging. FTP アクセスと同様に、リモート デバッグ トラフィックは、従来の WAF またはプロキシ デバイス経由で適切にフローされない場合があります。As with FTP access, remote debugging traffic may not flow properly through a traditional WAF or proxy device. 代わりに、 SourceAddressPrefix を、Visual Studio が実行されている開発者コンピューターの IP アドレス範囲に設定できます。The SourceAddressPrefix can instead be set to the IP address range of developer machines running Visual Studio.

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT RemoteDebuggingVS2012" -Type Inbound -Priority 600 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '4016' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT RemoteDebuggingVS2013" -Type Inbound -Priority 700 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '4018' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityRule -Name "RESTRICT RemoteDebuggingVS2015" -Type Inbound -Priority 800 -Action Allow -SourceAddressPrefix '1.2.3.4/32'  -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '4020' -Protocol TCP

サブネットへのネットワーク セキュリティ グループの割り当てAssigning a Network Security Group to a Subnet

ネットワーク セキュリティ グループには、すべての外部トラフィックへのアクセスを拒否する既定のセキュリティ ルールがあります。A network security group has a default security rule which denies access to all external traffic. 前に説明したネットワーク セキュリティ ルールと、受信トラフィックをブロックする既定のセキュリティ ルールを組み合わせた結果、 許可 アクションに関連付けられた送信元アドレス範囲からのトラフィックのみを App Service 環境内で実行中のアプリへ送信できます。The result from combining the network security rules described above, and the default security rule blocking inbound traffic, is that only traffic from source address ranges associated with an Allow action will be able to send traffic to apps running in an App Service Environment.

ネットワーク セキュリティ グループは、セキュリティ ルールが設定された後、App Service 環境を含むサブネットに割り当てる必要があります。After a network security group is populated with security rules, it needs to be assigned to the subnet containing the App Service Environment. 割り当てコマンドは、App Service 環境が存在する仮想ネットワークの名前と、App Service 環境が作成されたサブネットの名前の両方を参照します。The assignment command references both the name of the virtual network where the App Service Environment resides, as well as the name of the subnet where the App Service Environment was created.

次の例は、ネットワーク セキュリティ グループがサブネットと仮想ネットワークに割り当てられることを示しています。The example below shows a network security group being assigned to a subnet and virtual network:

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName 'testVNet' -SubnetName 'Subnet-test'

ネットワーク セキュリティ グループの割り当てが完了すると (割り当ては時間のかかる操作のため、完了するまでに数分かかる場合があります)、 許可 ルールに一致する受信トラフィックのみが App Service 環境内のアプリに正常に到達します。Once the network security group assignment succeeds (the assignment is a long-running operations and can take a few minutes to complete), only inbound traffic matching Allow rules will successfully reach apps in the App Service Environment.

完全を期すため、次の例では、サブネットからネットワーク セキュリティ グループを削除し、関連付けを解除する方法を示します。For completeness the following example shows how to remove and thus dis-associate the network security group from the subnet:

Get-AzureNetworkSecurityGroup -Name "testNSGexample" | Remove-AzureNetworkSecurityGroupFromSubnet -VirtualNetworkName 'testVNet' -SubnetName 'Subnet-test'

明示的な IP SSL に関する特別な考慮事項Special Considerations for Explicit IP-SSL

アプリが、App Service 環境の既定の IP アドレスを使わず、明示的な IP SSL アドレスで構成されている場合 (パブリック VIP がある ASE に "のみ" あてはまります)、HTTP と HTTPS の両方のトラフィックは、ポート 80 と 443 以外の別のポート セットを経由してサブネットにフローされます。If an app is configured with an explicit IP-SSL address (applicable only to ASEs that have a public VIP), instead of using the default IP address of the App Service Environment, both HTTP and HTTPS traffic flows into the subnet over a different set of ports other than ports 80 and 443.

各 IP SSL アドレスで使用されるポートの個々のペアは、App Service 環境の詳細 UX ブレードから、ポータルのユーザー インターフェイスで確認できます。The individual pair of ports used by each IP-SSL address can be found in the portal user interface from the App Service Environment's details UX blade. [すべての設定]、[IP アドレス] の順に選択します。Select "All settings" --> "IP addresses". [IP アドレス] ブレードには、App Service 環境に対して明示的に構成されているすべての IP SSL アドレスを示すテーブルと共に、各 IP SSL アドレスに関連付けられた HTTP および HTTPS トラフィックをルーティングするのに使用される特殊なポート ペアが表示されます。The "IP addresses" blade shows a table of all explicitly configured IP-SSL addresses for the App Service Environment, along with the special port pair that is used to route HTTP and HTTPS traffic associated with each IP-SSL address. ネットワーク セキュリティ グループの規則を構成する際に、DestinationPortRange パラメーターで使用する必要があるのはこのポート ペアです。It is this port pair that needs to be used for the DestinationPortRange parameters when configuring rules in a network security group.

ASE でアプリが IP SSL を使用するように構成されている場合、外部の顧客に特殊なポート ペアのマッピングは表示されず、外部の顧客がマッピングを確認する必要はありません。When an app on an ASE is configured to use IP-SSL, external customers will not see and do not need to worry about the special port pair mapping. アプリへのトラフィックは、構成済みの IP SSL アドレスに通常流れていきます。Traffic to the apps will flow normally to the configured IP-SSL address. 特殊なポート ペアへの変換は、ASE を含むサブネットへのトラフィックのルーティングの最終段階において内部で自動的に実行されます。The translation to the special port pair automatically happens internally during the final leg of routing traffic into the subnet containing the ASE.

使用の開始Getting started

App Service 環境の使用を開始するには、「 App Service 環境の概要To get started with App Service Environments, see Introduction to App Service Environment

アプリの App Service 環境からバックエンド リソースへの安全な接続の詳細については、「App Service 環境からバックエンド リソースに安全に接続する」を参照してください。For details around apps securely connecting to backend resource from an App Service Environment, see Securely connecting to Backend resources from an App Service Environment

注意

Azure アカウントにサインアップする前に Azure App Service の使用を開始したい場合は、「Azure App Service アプリケーションの作成」を参照してください。そこでは、App Service で有効期間の短いスターター Web アプリをすぐに作成できます。If you want to get started with Azure App Service before signing up for an Azure account, go to Try App Service, where you can immediately create a short-lived starter web app in App Service. このサービスの利用にあたり、クレジット カードは必要ありません。契約も必要ありません。No credit cards required; no commitments.