Azure App Service のアクセス制限Azure App Service Access Restrictions

アクセス制限により、アプリへのネットワーク アクセスを制御する優先度で順序付けされた許可/拒否のリストを定義することができます。Access Restrictions enable you to define a priority ordered allow/deny list that controls network access to your app. リストには、IP アドレスまたは Azure Virtual Network のサブネットを含めることができます。The list can include IP addresses or Azure Virtual Network subnets. 1 つまたは複数のエントリがある場合、リストの最後にあるものは暗黙的に "すべて拒否" になります。When there are one or more entries, there is then an implicit "deny all" that exists at the end of the list.

アクセス制限機能は、App Service でホストされているすべてのワーク ロードに対して動作します。これには、Web アプリ、API アプリ、Linux アプリ、Linux コンテナー アプリ、関数が含まれます。The Access Restrictions capability works with all App Service hosted work loads including; web apps, API apps, Linux apps, Linux container apps, and Functions.

アプリへの要求が行われると、送信元のアドレスがアクセス制限リスト内の IP アドレス規則に対して評価されます。When a request is made to your app, the FROM address is evaluated against the IP address rules in your access restrictions list. 送信元アドレスが Microsoft.Web に対するサービス エンドポイントで構成されているサブネット内にある場合は、ソース サブネットが、アクセス制限リスト内の仮想ネットワーク規則と比較されます。If the FROM address is in a subnet that is configured with service endpoints to Microsoft.Web, then the source subnet is compared against the virtual network rules in your access restrictions list. アドレスがリスト内の規則に基づいてアクセスを許可されない場合、サービスは HTTP 403 状態コードで応答します。If the address is not allowed access based on the rules in the list, the service replies with an HTTP 403 status code.

アクセス制限機能は、コードが実行される worker ホストの上流にある App Service フロントエンド ロールに実装されています。The access restrictions capability is implemented in the App Service front-end roles, which are upstream of the worker hosts where your code runs. そのため、アクセス制限は、事実上のネットワーク ACL です。Therefore, access restrictions are effectively network ACLs.

Azure Virtual Network (VNet) からご自分の Web アプリへのアクセスを制限する機能は、サービス エンドポイントと呼ばれます。The ability to restrict access to your web app from an Azure Virtual Network (VNet) is called service endpoints. サービス エンドポイントを使用すると、選択したサブネットからマルチテナント サービスへのアクセスを制限することができます。Service endpoints enable you to restrict access to a multi-tenant service from selected subnets. ネットワーク側と、有効にされているサービスの両方でこれを有効にする必要があります。It must be enabled on both the networking side as well as the service that it is being enabled with. App Service Environment でホストされているアプリへのトラフィックを制限することはできません。It does not work to restrict traffic to apps that are hosted in an App Service Environment. App Service Environment 内の場合は、IP アドレス ルールでアプリへのアクセスを制御できます。If you are in an App Service Environment, you can control access to your app with IP address rules.

アクセス制限のフロー

ポータルでのアクセス制限規則の追加および編集Adding and editing Access Restriction rules in the portal

アクセス制限の規則をアプリに追加するには、メニューを使用して [ネットワーク] > [アクセス制限] を開き、 [アクセス制限を構成する] をクリックしますTo add an access restriction rule to your app, use the menu to open Network>Access Restrictions and click on Configure Access Restrictions

App Service のネットワーク オプション

[アクセス制限] の UI では、アプリに対して定義されているアクセス制限規則の一覧を確認できます。From the Access Restrictions UI, you can review the list of access restriction rules defined for your app.

アクセス制限の一覧

一覧には、現在アプリに設定されているすべての制限が表示されます。The list will show all of the current restrictions that are on your app. アプリに VNet 制限がある場合は、Microsoft.Web に対するサービス エンドポイントが有効かどうかが表に表示されます。If you have a VNet restriction on your app, the table will show if service endpoints are enabled for Microsoft.Web. アプリに制限が定義されていない場合は、どこからでもアプリにアクセスできます。When there are no defined restrictions on your app, your app will be accessible from anywhere.

IP アドレス規則の追加Adding IP address rules

[[+] 追加] をクリックすると、新しいアクセス制限の規則を追加できます。You can click on [+] Add to add a new access restriction rule. 規則は、追加するとすぐに有効になります。Once you add a rule, it will become effective immediately. 規則は、最も小さい数字から始まり大きい数字に向かって、優先順位順に適用されます。Rules are enforced in priority order starting from the lowest number and going up. 追加した規則が 1 つであっても、暗黙の "すべて拒否" 規則があります。There is an implicit deny all that is in effect once you add even a single rule.

規則を作成するときは、許可/拒否だけでなく規則の種類も選択する必要があります。When creating a rule, you must select allow/deny and also the type of rule. 優先度の値およびアクセス制限対象を指定する必要もあります。You are also required to provide the priority value and what you are restricting access to. 必要に応じて、規則に名前と説明を追加できます。You can optionally add a name, and description to the rule.

IP アクセス制限規則を追加する

IP アドレスに基づく規則を設定するには、種類として IPv4 または IPv6 を選択します。To set an IP address based rule, select a type of IPv4 or IPv6. IP アドレスの表記には、IPv4 アドレスと IPv6 アドレスのどちらの場合も CIDR 表記を使用する必要があります。IP Address notation must be specified in CIDR notation for both IPv4 and IPv6 addresses. 正確なアドレスを指定するには、1.2.3.4/32 のようなアドレスを使用できます。この場合、最初の 4 オクテットが IP アドレスを表し、/32 がマスクです。To specify an exact address, you can use something like 1.2.3.4/32 where the first four octets represent your IP address and /32 is the mask. すべてのアドレスを表す IPv4 CIDR 表記は 0.0.0.0/0 です。The IPv4 CIDR notation for all addresses is 0.0.0.0/0. CIDR 表記の詳細については、「Classless Inter-Domain Routing (クラスレス ドメイン間ルーティング)」を参照してください。To learn more about CIDR notation, you can read Classless Inter-Domain Routing.

サービス エンドポイントService endpoints

サービス エンドポイントを使用して、選択した Azure 仮想ネットワーク サブネットへのアクセスを制限できます。Service endpoints enables you to restrict access to selected Azure virtual network subnets. 特定のサブネットへのアクセスを制限するには、種類が仮想ネットワークである制限規則を作成します。To restrict access to a specific subnet, create a restriction rule with a type of Virtual Network. アクセスを許可または拒否するサブスクリプション、VNet、およびサブネットを選択できます。You can pick the subscription, VNet, and subnet you wish to allow or deny access with. 選択したサブネットに対する Microsoft.Web でサービス エンドポイントがまだ有効になっていない場合は、自動的に有効にしないチェック ボックスをオンにしていない限り、自動的にオンになります。If service endpoints are not already enabled with Microsoft.Web for the subnet that you selected, it will automatically be enabled for you unless you check the box asking not to do that. アプリでは有効にしてサブネットでは有効にしない状況は、サブネット上のサービス エンドポイントを有効にするためのアクセス許可があるかどうかに大きく関係します。The situation where you would want to enable it on the app but not the subnet is largely related to if you have the permissions to enable service endpoints on the subnet or not. 他のユーザーにサブネット上のサービス エンドポイントを有効にさせる必要がある場合は、チェック ボックスをオンにし、後でサブネットで有効にされることを想定して、サービス エンドポイント用にアプリを構成することができます。If you need to get somebody else to enable service endpoints on the subnet, you can check the box and have your app configured for service endpoints in anticipation of it being enabled later on the subnet.

VNet アクセス制限規則を追加する

App Service Environment で実行されているアプリへのアクセスを制限するために、サービス エンドポイントを使うことはできません。Service endpoints cannot be used to restrict access to apps that run in an App Service Environment. アプリが App Service Environment 内にあるときは、IP アクセス規則でアプリへのアクセスを制御できます。When your app is in an App Service Environment, you can control access to your app with IP access rules.

サービス エンドポイントにより、Application Gateway やその他の WAF デバイスを使用してアプリを構成することができます。With service endpoints, you can configure your app with Application Gateways or other WAF devices. また、セキュリティで保護されたバックエンドを使用して多層アプリケーションを構成することもできます。You can also configure multi-tier applications with secure backends. いくつかの可能性の詳細については、ネットワーキング機能と App Service に関する記事をお読みください。For more details on some of the possibilities, read Networking features and App Service.

アクセス制限規則の管理Managing access restriction rules

任意の行をクリックして、既存のアクセス制限規則を編集できます。You can click on any row to edit an existing access restriction rule. 優先順位の変更を含め、編集内容はすぐに有効になります。Edits are effective immediately including changes in priority ordering.

アクセス制限規則を編集する

規則を編集するとき、IP アドレス規則と Virtual Network 規則の間で種類を変更することはできません。When you edit a rule, you cannot change the type between an IP address rule and a Virtual Network rule.

アクセス制限規則を編集する

規則を削除するには、規則の [...] をクリックし、 [削除] をクリックします。To delete a rule, click the ... on your rule and then click remove.

アクセス制限規則を削除する

単一 IP アドレスのブロックBlocking a single IP Address

最初の IP 制限規則を追加するとき、サービスは、2147483647 の優先順位で、明示的な "すべて拒否" 規則を追加します。When adding your first IP Restriction rule, the service will add an explicit deny all rule with a priority of 2147483647. 実際には、明示的な "すべて拒否" 規則は、最後に実行される規則となり、"許可" 規則を使用して明示的に許可されていないすべての IP アドレスへのアクセスをブロックします。In practice, the explicit deny all rule will be last rule executed and will block access to any IP address that is not explicitly allowed using an Allow rule.

ユーザーが、単一の IP アドレスまたは IP アドレス ブロックを明示的にブロックしたいが、その他のすべてのアクセスを許可したいシナリオでは、明示的な "すべて許可" 規則を追加する必要があります。For the scenario where users want to explicitly block a single IP address or IP address block, but allow everything else access, it is necessary to add an explicit Allow All rule.

単一 IP アドレスをブロックする

SCM サイトSCM site

アプリへのアクセスを制御できるだけでなく、アプリによって使用される SCM サイトへのアクセスを制限することもできます。In addition to being able to control access to your app, you can also restrict access to the scm site used by your app. SCM サイトは Web デプロイ エンドポイントであり、Kudu コンソールでもあります。The scm site is the web deploy endpoint and also the Kudu console. SCM サイトとアプリに異なるアクセス制限を割り当てることも、アプリと SCM サイトの両方に同じセットを使うこともできます。You can separately assign access restrictions to the scm site from the app or use the same set for both the app and the scm site. チェック ボックスをオンにしてアプリと同じ制限にすると、すべてのものが空になります。チェック ボックスをオフにした場合は、以前に SCM サイトに対して行ったすべての設定が適用されます。When you check the box to have the same restrictions as your app, everything is blanked out. If you uncheck the box, whatever settings you had earlier on the scm site are applied.

アクセス制限の一覧

アクセス制限規則のプログラムによる操作Programmatic manipulation of access restriction rules

現在、新しいアクセス制限機能向けの CLI または PowerShell はありませんが、Resource Manager のアプリ構成で Azure REST API の PUT 操作を使用して値を手動で設定できます。There currently is no CLI or PowerShell for the new Access Restrictions capability but the values can be set manually with an Azure REST API PUT operation on the app configuration in Resource Manager. たとえば、resources.azure.com を使用して ipSecurityRestrictions ブロックを編集して、必要な JSON を追加することができます。As an example, you can use resources.azure.com and edit the ipSecurityRestrictions block to add the required JSON.

Resource Manager におけるこの情報の場所は次のとおりです。The location for this information in Resource Manager is:

management.azure.com/subscriptions/ <サブスクリプション ID> /resourceGroups/ <リソース グループ> /providers/Microsoft.Web/sites/ <Web アプリ名> /config/web?api-version=2018-02-01management.azure.com/subscriptions/subscription ID/resourceGroups/resource groups/providers/Microsoft.Web/sites/web app name/config/web?api-version=2018-02-01

前の例の JSON 構文を次に示します。The JSON syntax for the earlier example is:

{
  "properties": {
    "ipSecurityRestrictions": [
      {
        "ipAddress": "122.133.144.0/24",
        "action": "Allow",
        "tag": "Default",
        "priority": 100,
        "name": "IP example rule"
      }
    ]
  }
}

Function App の IP 制限Function App IP Restrictions

IP 制限は、Function App でも App Service プランと同じ機能を利用できます。IP restrictions are available for both Function Apps with the same functionality as App Service plans. IP 制限を有効にすると、許可されていない IP に対してポータル コード エディターが無効になります。Enabling IP restrictions will disable the portal code editor for any disallowed IPs.

詳しくはこちらをご覧くださいLearn more here