共用方式為


設定 Azure App Service 存取限制

注意

從 2024 年 6 月 1 日起,新建立的 App Service 應用程式可以產生使用命名慣例 <app-name>-<random-hash>.<region>.azurewebsites.net的唯一默認主機名。 現有的應用程式名稱保持不變。 例如:

myapp-ds27dh7271aah175.westus-01.azurewebsites.net

如需詳細資訊,請參閱 App Service 資源的唯一預設主機名。

您可設定存取限制,定義以優先順序排序的允許/拒絕清單,控制應用程式的網路存取權。 此清單可包含 IP 位址或 Azure 虛擬網路子網路。 有一或多個項目時,清單結尾便會隱含一項全部拒絕規則。 如需詳細資訊,請參閱 Azure App 服務 存取限制

存取限制功能適用於裝載 Azure App Service 的所有工作負載。 工作負載可以包含 Web 應用程式、API 應用程式、Linux 應用程式、Linux 自定義容器和 Functions。

當有人向您的應用程式提出要求時,會根據存取限制清單中的規則評估FROM位址。 若 FROM 位址位於以 Microsoft.Web 服務端點所設定的子網路中,則來源子網路就會與您存取限制清單中的虛擬網路規則進行比較。 若根據清單規則不允許該位址進行存取,該服務則會回覆 HTTP 403 狀態碼。

存取限制功能在 App Service 前端角色中實作,這類角色為背景工作角色主機 (程式碼執行位置) 的上游。 因此,存取限制實際上是網路訪問控制清單。

從 Azure 虛擬網路限制存取 Web 應用程式的功能使用服務端點。 透過服務端點,您可限制所選子網路對多租用戶服務的存取權。 這不適用於將流量限制為 App Service 環境所裝載的應用程式。 若使用 App Service 環境,則可套用 IP 位址規則,以控制您的應用程式存取權。

注意

服務端點必須在網路端及所用的 Azure 服務上同時啟用。 如需支援服務端點的 Azure 服務清單,請參閱虛擬網路服務端點

存取限制流程圖。

在入口網站中管理存取限制規則

若要將存取限制規則新增至您的應用程式:

  1. 登入 Azure 入口網站。

  2. 選取您要新增存取限制的應用程式。

  3. 在左側功能表上,選取 [設定>網络]。

  4. [網路] 頁面的 [輸入流量設定] 下,選取 [公用網路存取] 設定。

    螢幕擷取畫面:Azure 入口網站中 App Service 網路選項頁面。

  5. [存取限制] 頁面上,檢閱您為應用程式定義的存取限制規則清單。

    螢幕擷取畫面:Azure 入口網站中的存取限制窗格,其中顯示針對所選應用程式定義的存取限制規則清單。

    此清單會顯示應用程式套用的所有目前限制。 若應用程式有虛擬網路限制,此資料表便會顯示是否已啟用 Microsoft.Web 的服務端點。 如果您的應用程式上未定義任何限制,且不相符的規則未設定為 [拒絕],則應用程式可從任何地方存取。

權限

若要透過 Azure 入口網站、CLI 或直接設定月臺設定屬性時,需要下列子網或更高層級的角色型訪問控制許可權:

動作 描述
Microsoft.Web/sites/config/read 取得 Web 應用程式的組態設定
Microsoft.Web/sites/config/write 更新 Web 應用程式的組態設定
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action* 將儲存體帳戶或 SQL 資料庫等資源加入子網路
Microsoft.Web/sites/write** 更新 Web 應用程式設定

* 只有新增虛擬網路 (服務端點) 規則時需要。

** 只有在透過 Azure 入口網站更新存取限制時需要。

如果您要新增服務端點型規則,且虛擬網路位於與應用程式不同的訂用帳戶中,請確定已向資源提供者註冊具有虛擬網路的 Microsoft.Web 訂用帳戶。 您可以明確註冊提供者,但也可以在訂用帳戶中建立第一個 Web 應用程式時自動註冊。 如需更多資訊,請參閱註冊資源業者

新增存取限制規則

若要將存取限制規則新增至應用程式,請選取 [存取限制] 頁面上的 [新增]。 規則只有在儲存之後才會生效。

規則會依優先順序強制執行,從 [優先順序] 資料行中的最低數位。 如果您未設定不相符的規則,隱含的全部拒絕會在您即使新增單一規則後隨即生效。

建立規則時,請在 [新增存取限制] 窗格上執行下列動作:

  1. [動作] 下,選取 [允許][拒絕]

    螢幕擷取畫面:「新增存取限制」窗格。

  2. 您可選擇性輸入規則的名稱和描述。

  3. [優先順序] 方塊中輸入優先順序值。

  4. 在 [ 類型 ] 下拉式清單中,選取規則的類型。 下列各節將描述不同類型的規則。

  5. 在輸入規則特定輸入之後選取 [新增規則],以將規則新增至清單中。

最後,回到 [存取限制] 頁面中選取 [儲存]

注意

限制為512個存取限制規則。 如果您需要超過512個存取限制規則,建議您考慮獨立安全性產品。 請考慮使用 Azure Front Door、Azure 應用程式閘道或替代 WAF。

設定以 IP 位址為基礎的規則

依上一節所述程序進行,加上下列動作:

  • 針對步驟 4,在 [類型] 下拉式清單中,選取 [IPv4] 或 [IPv6]。

在無類別網域間路由選擇 (CIDR) 標記法中,指定 IPv4 及 IPv6 位址兩者的 IP 位址區塊。 指定位址時,您可使用類似 1.2.3.4/32 的位址,其中前四個八位元代表您的 IP 位址,/32 則為遮罩。 適用於所有位址的 IPv4 CIDR 標記法是 0.0.0.0/0。 若要深入了解 CIDR 標記法,請參閱無類別網域間路由選擇

注意

當您的應用程式位於 App Service 環境時,IP 型存取限制規則只會處理虛擬網路位址範圍。 如果您的應用程式位於多租用戶服務中,您必須使用 服務端點 來限制流量,以選取虛擬網路中的子網。

設定以服務端點為基礎的規則

  • 針對步驟 4,在 [類型] 下拉式清單中,選取 [虛擬網絡]。

    螢幕擷取畫面:「新增限制」窗格與所選虛擬網路類型。

指定 [訂用帳戶][虛擬網路][子網路] 下拉式清單,以符合您要限制存取的項目。

您可使用服務端點來限制所選 Azure 虛擬網路子網路的存取。 如果您選取的子網尚未啟用 Microsoft.Web 服務端點,除非您選取 [ 忽略遺漏Microsoft.Web 服務端點],否則會自動啟用它們。 若想在應用程式上啟用服務端點,但不在子網路上啟用,主要取決於您是否有在子網路上啟用端點的權限。

如果您需要其他人在子網上啟用服務端點,請選取 [忽略遺漏Microsoft.Web 服務端點]。 您的應用程式會針對服務端點進行設定,以期稍後在子網路上啟用它們。

您無法使用服務端點來限制存取在 App Service 環境中執行的應用程式。 當應用程式位於 App Service 環境時,您可套用 IP 存取規則來控制存取權。

透過服務端點,您可設定具有應用程式閘道的應用程式,或其他 Web 應用程式防火牆 (WAF) 裝置。 您也可設定具有安全後端的多層式應用程式。 如需詳細資訊,請參閱 App Service 網路功能和應用程式閘道 整合

注意

使用IP型TLS/SSL系結搭配虛擬IP的Web應用程式不支援服務端點。

設定以服務標記為基礎的規則

  • 針對步驟 4,在 [ 類型 ] 下拉式清單中,選取 [服務卷標]。

    螢幕擷取畫面:「新增限制」窗格與所選服務標籤類型。

存取限制規則支援所有公開可用的服務標籤。 每個服務標籤皆代表一份 Azure 服務 IP 範圍清單。 您可以在服務標記文件中找到這些服務和特定範圍連結的清單。 使用 Azure Resource Manager 範本或指令碼來設定進階規則,如區域範圍規則。

注意

當您透過 Azure 入口網站 或 Azure CLI 建立服務標籤規則時,您需要訂用帳戶層級的讀取許可權,以取得選取/驗證的完整服務卷標清單。 此外, Microsoft.Network 資源提供者必須在訂用帳戶上註冊。

編輯規則

  1. 開始編輯現有的存取限制規則時,請在 [存取限制] 頁面上選取要編輯的規則。

  2. [編輯存取限制] 窗格中進行變更,接著選取 [更新規則]

  3. 選取儲存以儲存變更。

    注意

    編輯規則時無法切換規則類型。

刪除規則

  1. 若要刪除規則,請在 [存取限制] 頁面上核取您要刪除的一或多個規則,然後選取 [刪除]

  2. 選取儲存以儲存變更。

螢幕擷取畫面:「存取限制」頁面,其中顯示所要刪除存取限制規則旁的「移除」省略符號。

存取限制進階案例

下列各節將描述幾項使用存取限制的進階案例。

依 HTTP 標頭篩選

您可新增 HTTP 標頭篩選器作為任何規則的一部分。 支援下列 HTTP 標頭名稱:

  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Azure-FDID
  • X-FD-HealthProbe

每個標頭名稱最多可新增八個值 (以逗號分隔)。 HTTP 標頭篩選器會在規則本身後進行評估,且兩個條件皆須為 True 才能套用規則。

多來源規則

多來源規則可讓您在單一規則中合併多達 8 個 IP 範圍或 8 個服務標記。 如果您有 512 個以上的 IP 範圍,或想要建立邏輯規則,請使用多來源規則。 邏輯規則可以是將多個 IP 範圍與單一 HTTP 標頭篩選器結合在一起。

多來源規則的定義方式與定義單一來源規則的方式相同,但每個範圍都以逗號分隔。

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 位址

針對您想要明確封鎖單一IP位址或IP位址區塊,但允許存取其他所有位址的案例,請新增 特定IP位址的拒絕 規則。 然後將不相符的規則動作設定為 [允許]。

螢幕擷取畫面:Azure 入口網站中的「存取限制」頁面,其中顯示單一封鎖的 IP 位址。

限制 SCM 網站的存取權

您不僅可控制應用程式的存取權,也可限制應用程式所使用的 SCM (進階工具) 網站的存取權。 SCM 網站同時作為 Web 部署端點與 Kudu 主控台。 您可個別指派應用程式和 SCM 網站的存取限制,或讓應用程式與 SCM 網站兩者使用同一組限制。 當您選取 [ 使用主要網站規則] 時,規則清單會隱藏。 SCM 網站會使用來自主要月台的規則。 如果您取消選取複選框,您的 SCM 網站設定會再次出現。

螢幕擷取畫面:Azure 入口網站中的「存取限制」頁面,其中顯示未設定存取限制的 SCM 網站或應用程式。

限制特定 Azure Front Door 執行個體的存取權

從 Azure Front Door 到應用程式的流量源自一組已知的 IP 範圍 (在 AzureFrontDoor.Backend 服務標籤中定義)。 使用服務標籤限制規則時可讓流量僅限來自 Azure Front Door。 為確保流量僅來自特定執行個體,您必須根據 Azure Front Door 傳送的唯一 HTTP 標頭,進一步篩選收到的要求。

螢幕擷取畫面:Azure 入口網站中的「存取限制」頁面,其中顯示新增 Azure Front Door 限制的方式。

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}

以程式設計的方式管理存取限制

您可以透過程式設計方式管理存取限制。 下列範例示範如何新增規則以存取限制,以及如何變更主要網站進階工具網站的不相符規則動作

新增主要網站的存取限制規則

您可以選擇下列其中一個選項,以程式設計的方式新增主要網站的存取限制規則:

您可以在 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 resourceipSecurityRestrictionsDefaultAction 接受的值為 AllowDeny

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Allow

變更進階工具網站的不相符規則動作

您可以選擇下列其中一個選項,以程式設計的方式變更進階工具網站不相符規則動作

您可以在 Cloud Shell 中執行下列命令。 如需命令的詳細資訊,請參閱 az resourcescmIpSecurityRestrictionsDefaultAction 接受的值為 AllowDeny

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow

設定 Azure Functions 存取限制

存取限制也適用於與 App Service 方案相同功能的函數應用程式。 啟用存取限制時,同時也會針對不允許的 IP 停用 Azure 入口網站程式碼編輯器。