アクセス制限を設定するときに、アプリへのネットワーク アクセスを制御する優先度順の許可/拒否リストを定義できます。 リストには、IP アドレスまたは Azure Virtual Network のサブネットを含めることができます。 1 つ以上のエントリがある場合、リストの最後にあるものは暗黙的に "すべて拒否" になります。 詳細については、「Azure App Service のアクセス制限」を参照してください。
アクセス制限機能は、Azure App Service でホストされるすべてのワークロードに対して機能します。 ワークロードには、Web アプリ、API アプリ、Linux アプリ、Linux カスタム コンテナー、Azure Functions アプリを含めることができます。
誰かがアプリに要求を行うと、 FROM
アドレスはアクセス制限リストのルールに対して評価されます。
FROM
アドレスが、Microsoft.Web
するサービス エンドポイントで構成されたサブネット内にある場合、ソース サブネットは、アクセス制限リストの仮想ネットワーク規則と比較されます。 アドレスがリスト内の規則に基づいてアクセスを許可されない場合、サービスから状態コード HTTP 403 の応答があります。
アクセス制限機能は、コードが実行される worker ホストの上流にある App Service フロントエンド ロールに実装されています。 そのため、アクセス制限は、事実上のネットワーク アクセス制御リストです。
Azure 仮想ネットワークから Web アプリへのアクセスを制限する機能は、サービス エンドポイントを使用します。 サービス エンドポイントを使用すると、選択したサブネットからマルチテナント サービスへのアクセスを制限することができます。 App Service Environment でホストされているアプリへのトラフィックを制限することはできません。 App Service Environment 内の場合は、IP アドレス規則を適用することでアプリへのアクセスを制御できます。
注意
サービス エンドポイントは、ネットワーク側と、それらが有効になっている Azure サービスの両方で有効にする必要があります。 サービス エンドポイントをサポートしている Azure サービスの一覧については、「仮想ネットワーク サービス エンドポイント」を参照してください。
ポータルでアクセス制限規則を管理する
アクセス制限ルールをアプリに追加するには:
Azure portal にサインインします。
アクセス制限を追加したいアプリを選択します。
左側のメニューで、[設定]>[ネットワーク] を選択します。
[ ネットワーク ] ウィンドウの [ 受信トラフィックの構成] で、[ パブリック ネットワーク アクセス ] 設定を選択します。
[ アクセス制限 ] ウィンドウで、アプリに対して定義されているアクセス制限規則の一覧を確認します。
この一覧には、現在アプリに適用されている制限が表示されます。 アプリに仮想ネットワークの制限がある場合は、サービス エンドポイントが
Microsoft.Web
に対して有効になっているかどうかを示す表が表示されます。 ご利用のアプリ上に制限が定義されておらず、一致しない規則が [拒否] に設定されていない場合、そのアプリはどこからでもアクセスすることができます。
権限
Azure portal、CLI、または site config
プロパティを直接設定するときにアクセス制限を構成するには、サブネットまたは上位レベルで次のロールベースのアクセス制御アクセス許可が必要です。
アクション | 説明 |
---|---|
Microsoft.Web/sites/config/read |
Web アプリの構成設定を取得します。 |
Microsoft.Web/sites/config/write |
Web アプリの構成設定を更新します。 |
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action * |
ストレージ アカウントや SQL Database などのリソースをサブネットに結合します。 |
Microsoft.Web/sites/write ** |
Web アプリの設定を更新します。 |
*仮想ネットワーク (サービス エンドポイント) ルールを追加する場合にのみ必要です
**Azure portal を使用してアクセス制限を更新する場合にのみ必要です
サービス エンドポイントベースの規則を追加し、仮想ネットワークがアプリとは異なるサブスクリプションにある場合は、仮想ネットワークを含むサブスクリプションが Microsoft.Web
リソース プロバイダーに登録されていることを確認します。 プロバイダーは明示的に登録できますが、サブスクリプションで最初の Web アプリを作成するときにも自動的に登録されます。 詳細については、「リソース プロバイダーを登録する」 を参照してください。
アクセス制限規則を追加する
アプリにアクセス制限ルールを追加するには、[ アクセス制限 ] ウィンドウで [ 追加] を選択します。 ルールは、保存した後にのみ有効になります。
規則は、[優先度] 列の最も小さい数字から優先度の順に適用されます。 一致しないルールを構成しない場合、1 つのルールを追加すると暗黙的な 拒否がすべて 有効になります。
[アクセス制限の追加] ペインで、規則を作成するときは、次のようにします。
- [アクション] で、 [許可] または [拒否] を選択します。
- ルールの名前と説明を入力します (省略可能)。
- [優先度] ボックスに、優先度の値を入力します。
- [種類] ドロップダウン リストで規則の種類を選びます。 次のセクションで、さまざまな種類の規則について説明します。
- ルール固有の入力を入力します。 [ ルールの追加] を選択して、ルールを一覧に追加します。
- [アクセス制限] ウィンドウで [保存] を選択します。
注意
アクセス制限規則は 512 個に制限されています。 512 個を超えるアクセス制限規則が必要な場合は、スタンドアロンのセキュリティ製品を検討することをお勧めします。 Azure Front Door、Azure Application Gateway、または別の Web アプリケーション ファイアウォール (WAF) を検討してください。
IP アドレスベースの規則を設定する
前のセクションで説明した手順に従いますが、次のような追加事項があります。
- 手順 4 では、[ 種類 ] ドロップダウン リストで [IPv4] または [IPv6] を選択します。
IPv4 アドレスと IPv6 アドレスの両方について、クラスレス Inter-Domain ルーティング (CIDR) 表記で IP アドレス ブロック を指定します。 アドレスを指定するには、 1.2.3.4/32
などを使用できます。最初の 4 オクテットは IP アドレスを表し、 /32
はマスクです。 すべてのアドレスの IPv4 CIDR 表記は 0.0.0.0/0
。
注意
IP ベースのアクセス制限規則では、アプリが App Service Environment にある場合のみ、仮想ネットワーク アドレスの範囲が処理されます。 アプリがマルチテナント サービス内にある場合は、サービス エンドポイントを使用して、仮想ネットワーク内のサブネットを選択するようにトラフィックを制限する必要があります。
サービス エンドポイントベースの規則を設定する
手順 4 の [種類] ドロップダウン リストで、[仮想ネットワーク] を選択します。
アクセス を制限する対象と一致するサブスクリプション、 仮想ネットワーク、 サブネット のドロップダウン リストを指定します。
サービス エンドポイントを使用することで、選択した Azure 仮想ネットワーク サブネットへのアクセスを制限できます。 選んだサブネットの Microsoft.Web
でサービス エンドポイントがまだ有効になっていない場合は、[見つからない Microsoft.Web サービス エンドポイントを無視する] を選択していない限り、自動的に有効になります。 サブネットではなくアプリでサービス エンドポイントを有効にするかどうかは、サブネットでサービス エンドポイントを有効にするアクセス許可があるかどうかによって異なります。
サブネット上でサービス エンドポイントを有効にするために他のユーザーが必要な場合は、[見つからない Microsoft.Web サービス エンドポイントを無視する] を選択します。 アプリはサービス エンドポイント用に構成されています。 これらは後でサブネットで有効にすることができます。
App Service Environment で実行されているアプリへのアクセスを制限するために、サービス エンドポイントを使うことはできません。 アプリが App Service Environment 内にあるときは、IP アクセス規則を適用することでアプリへのアクセスを制御できます。
サービス エンドポイントでは、アプリケーション ゲートウェイまたはその他の Web アプリケーション ファイアウォール (WAF) デバイスを使用してアプリを構成できます。 また、セキュリティで保護されたバックエンドを使用して多層アプリケーションを構成することもできます。 詳細については、「App Service のネットワーク機能」と「アプリケーション ゲートウェイの統合」を参照してください。
注意
IP ベースの TLS/SSL バインディングと仮想 IP を使用する Web アプリに対して、サービス エンドポイントはサポートされません。
サービス タグベースの規則を設定する
手順 4 の [種類] ドロップダウン リストで、[サービス タグ] を選択します。
すべて一般公開されているサービス タグは、アクセス制限規則でサポートされます。 各サービス タグは、Azure サービスの IP 範囲の一覧を表します。 これらのサービスの一覧と特定の範囲へのリンクについては、サービス タグに関するドキュメントに記載されています。 リージョン スコープ ルールなどの高度な規則を構成するには、Azure Resource Manager テンプレートまたはスクリプトを使用します。
注意
Azure portal または Azure CLI を使用してサービス タグベースのルールを作成する場合、選択/検証用のサービス タグの完全な一覧を取得するには、サブスクリプション レベルで読み取りアクセスが必要です。 さらに、Microsoft.Network
リソース プロバイダーをサブスクリプションに登録する必要があります。
規則を編集する
既存のアクセス制限ルールを編集するには、[ アクセス制限 ] ウィンドウに移動し、編集するルールを選択します。
[アクセス制限の編集] ペインで変更を行い、 [ルールの更新] を選択します。
[保存] を選択して変更を保存します。
注意
規則を編集するときに、規則の種類を切り替えることはできません。
規則を削除する
ルールを削除するには、[ アクセス制限 ] ウィンドウで、削除するルールを選択し、[削除] を選択 します。
[保存] を選択して変更を保存します。
アクセス制限の高度なシナリオ
以降のセクションでは、高度なシナリオでのアクセス制限の使用について説明します。
HTTP ヘッダーでフィルター処理する
任意のルールに HTTP ヘッダー フィルターを追加できます。 次の HTTP ヘッダー名がサポートされています。
X-Forwarded-For
X-Forwarded-Host
X-Azure-FDID
X-FD-HealthProbe
ヘッダー名ごとに、コンマで区切られた最大 8 つの値を追加できます。 HTTP ヘッダー フィルターはルール自体の後で評価され、ルールを適用するには両方の条件が true である必要があります。
複数ソース規則
マルチソース ルールを使用すると、1 つのルールで最大 8 つの IP 範囲または 8 つのサービス タグを組み合わせることができます。 512 を超える IP 範囲がある場合、または論理規則を作成する場合は、マルチソース 規則を使用します。 たとえば、論理ルールには、1 つの HTTP ヘッダー フィルターと組み合わせた複数の IP 範囲を含めることができます。
マルチソース ルールは単一ソース ルールと同じ方法で定義されますが、各範囲はコンマで区切られます。
PowerShell の例:
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
-Name "Multi-source rule" -IpAddress "192.168.1.0/24,192.168.10.0/24,192.168.100.0/24" `
-Priority 100 -Action Allow
単一の IP アドレスをブロックする
1 つの IP アドレスまたは IP アドレスのブロックを明示的にブロックし、他のすべての IP アドレスへのアクセスを許可する場合は、特定の IP アドレスの 拒否 規則を追加できます。 次に、一致しないルールのアクションを許可するに構成します。
SCM サイトへのアクセスを制限する
アプリへのアクセスを制御できるだけでなく、アプリで使用されるソース管理 (SCM) の高度なツール サイトへのアクセスを制限することもできます。 SCM サイトは Web デプロイ エンドポイントと Kudu コンソールの両方です。 SCM サイトとアプリに異なるアクセス制限を割り当てることも、アプリと SCM サイトの両方に同じ制限のセットを使うこともできます。 [メイン サイトルールを使用する]を選択すると、ルールの一覧は非表示になります。 SCM サイトでは、メイン サイトの規則が使用されます。 このチェック ボックスの選択を解除すると、SCM サイトの設定がもう一度表示されます。
特定の Azure Front Door インスタンスへのアクセスを制限する
Azure Front Door からアプリケーションへのトラフィックは、AzureFrontDoor.Backend
サービス タグに定義されている既知の IP 範囲セットが発信元です。 サービス タグ制限規則を使用すると、Azure Front Door からのみトラフィックを制限できます。 トラフィックが特定のインスタンスからのみ送信されるようにするには、Azure Front Door が送信する一意の HTTP ヘッダーに基づいて、受信要求をさらにフィルター処理する必要があります。
PowerShell の例:
$afd = Get-AzFrontDoor -Name "MyFrontDoorInstanceName"
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
-Name "Front Door example rule" -Priority 100 -Action Allow -ServiceTag AzureFrontDoor.Backend `
-HttpHeader @{'x-azure-fdid' = $afd.FrontDoorId}
プログラムによってアクセス制限を管理する
プログラムでアクセス制限を管理することもできます。 以下に、アクセス制限に規則を追加する方法の例と、メイン サイトと高度なツール サイト両方の一致しないルールのアクションを変更する方法の例を示します。
メイン サイトのアクセス制限規則を追加する
次のいずれかのオプションを選択して、プログラムによって "メイン サイト" のアクセス制限規則を追加できます。
Azure Cloud Shell で次のコマンドを実行できます。 コマンドの詳細については、 az webapp config access-restriction
を参照してください。
az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
--rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100
az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
--rule-name "Azure Front Door example" --action Allow --priority 200 --service-tag AzureFrontDoor.Backend \
--http-header x-azure-fdid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
高度なツール サイトのアクセス制限規則を追加する
高度なツール サイトのアクセス制限規則をプログラムで追加できます。 次のいずれかのオプションを選択します。
Cloud Shell で次のコマンドを実行できます。 コマンドの詳細については、 az webapp config access-restriction
を参照してください。
az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
--rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100 --scm-site true
メイン サイトに対し適合していないルールのアクションを変更する
次のいずれかのオプションを選択して、プログラムによって "メイン サイト" の "一致しないルールのアクション" を変更できます。
Cloud Shell で次のコマンドを実行できます。 コマンドの詳細については、 az resource
を参照してください。
ipSecurityRestrictionsDefaultAction
に指定できる値は、Allow
または Deny
です。
az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
--set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Allow
高度なツールサイトで一致しないルールのアクションを変更する
次のいずれかのオプションを選択して、プログラムによって "高度なツール サイト" の "一致しないルールのアクション" を変更できます。
Cloud Shell で次のコマンドを実行できます。 コマンドの詳細については、 az resource
を参照してください。
scmIpSecurityRestrictionsDefaultAction
に指定できる値は、Allow
または Deny
です。
az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
--set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow
Azure Functions のアクセス制限を設定する
アクセス制限は、関数アプリでも App Service プランと同じ機能を利用できます。 アクセス制限を有効にすると、許可されていない IP に対する Azure portal コード エディターが無効にもなります。