共用方式為


設定 Azure API 管理前端的 Front Door Standard/Premium

適用於:所有 API 管理層級

Azure Front Door 是一個現代化的應用程式交付網路平台,提供安全且可擴展的內容交付網路(CDN)、動態網站加速,以及全球 HTTP(s) 負載平衡,適用於您的全球網頁應用程式。 在API 管理之前使用時,Front Door 可以提供 TLS 卸載、端對端 TLS、負載平衡、GET 要求的回應快取,以及 Web 應用程式防火牆等功能。 欲了解完整支援功能清單,請參見 什麼是Azure Front Door?

注意

對於網頁工作負載,我們強烈建議使用 Azure DDoS 防護 以及 web 應用防火牆,以防範新興的 DDoS 攻擊。 另一個選擇是使用 Azure Front Door搭配網頁應用程式防火牆。 Azure Front Door提供平台層級的防護針對網路層級的DDoS攻擊。 欲了解更多資訊,請參閱security baseline for Azure services

本文說明如何:

  • 在公開可存取的 Azure API 管理 實例前設置一個 Azure Front Door 標準/高級設定檔:不連網,或以 external mode 注入虛擬網路的開發者或高級實例。
  • 限制 API Management 只接受來自 Azure Front Door 的 API 流量。

提示

你也可以設定 Azure Front Door Premium 將流量路由到 API 管理閘道,使用 private endpoint

必要條件

  • API 管理執行個體。
    • 如果您選擇使用網路插入的實例,則必須部署在外部 VNet 中。 (在開發人員和進階版服務層級支援虛擬網路插入。)
  • 將一或多個 API 匯入至您的 API 管理實例,以確認透過 Front Door 進行路由。

配置 Azure Front Door

建立個人資料

關於建立Azure Front Door標準/高級設定檔的步驟,請參見 快速入門:建立Azure Front Door設定檔 - Azure portal。 在本文中,您可以選擇 Front Door 標準版設定檔。 如需 Front Door 標準版和 Front Door 進階版的比較,請參閱 層級比較。

設定下列 Front Door 設定,這些設定是使用您 API 管理實例的閘道端點作為 Front Door 來源的特定設定。 如需其他設定的說明,請參閱 Front Door 快速入門。

設定
原始類型 選取 [API 管理]
原始主機名稱 選取 API 管理實例的主機名稱,例如 myapim.azure-api.net
快取 針對 Front Door 選取 [啟用快取],以快取靜態內容
查詢字串快取行為 選取 [使用查詢字串]。

在入口網站中建立 Front Door 設定檔的螢幕擷取畫面。

更新預設來源群組

建立設定檔之後,請更新預設的來源群組,以包含API 管理健康情況探查。

  1. 在入口網站中,進入您的 Front Door 設定檔。

  2. 在左側功能表的 [設定] 下方,選取 [來源群組][default-origin-group]。

  3. 在 [更新來源群組] 視窗中,設定下列 [健全狀態探查] 設定並選取 [更新]:

    設定
    狀態 選取 [啟用健康探測器]
    路徑 按下 Enter
    通訊協定 選取 HTTPS
    方法 選擇 [GET]
    [間隔時間 (秒)] 輸入 30

    在入口網站中更新預設原始群組的螢幕快照。

更新預設路由

建議您更新與 API 管理來源群組相關聯的預設路由,以將 HTTPS 作為轉送通訊協定使用。

  1. 在入口網站中,進入您的 Front Door 設定檔。
  2. 在左側功能表的 [設定] 下,選取 [來源群組]。
  3. 展開 default-origin-group。
  4. 在 [default-route] 的操作功能表中 (即 [...]),選取 [設定路由]。
  5. 將 [接受的通訊協定] 設定為 [HTTP 和 HTTPS]。
  6. 啟用 [將所有流量重新導向為使用 HTTPS]。
  7. 將 [轉送通訊協定] 設定為 [僅 HTTPS],並選取 [更新]。

測試組態

呼叫由 API 管理裝載之 API(例如 Swagger Petstore API),以測試 Front Door 設定檔配置。 首先,直接透過 API 管理閘道呼叫 API,以確保可與 API 連線。 然後,透過 Front Door 呼叫 API。

直接透過 API 管理呼叫 API

若要直接透過 API 管理 閘道呼叫 API,您可以使用命令行用戶端,例如 或其他 HTTP 用戶端。 成功的回應會傳 回 HTTP 回應和預期的數據:

顯示直接使用 HTTP 用戶端呼叫 API 管理 端點的螢幕快照。

透過 Front Door 直接呼叫 API

使用為實例設定的 Front Door 端點呼叫相同的 API 作業。 網域中的端點主機名稱會顯示在 Front Door 設定檔中 [概觀] 頁面的入口網站上。 成功的回應會顯示 並傳回與上一個範例相同的數據。

將傳入流量限制為 API 管理實例

使用 API 管理政策,確保你的 API Management 實例只接受來自 Azure Front Door 的流量。 您可以使用一或兩種下列方法,來完成此項限制:

  1. 將 API 管理實例的傳入 IP 位址予以限制
  2. 根據 X-Azure-FDID 標頭的值限制流量

限制傳入的 IP 位址

您可在 API 管理中設定入站 IP 過濾器政策,僅允許與 Front Door 相關的流量,包括:

  • Front Door's backend IP address space - 允許與 Azure IP 範圍與服務標籤中對應 AzureFrontDoor.Backend 區塊的 IP 位址。

    注意

    如果您的 API 管理實例部署在外部虛擬網路中,請在用於 API 管理實例的子網路中新增輸入網路安全性群組規則,以完成相同的限制。 設定規則,以允許 AzureFrontDoor.Backend 來源服務標籤的 HTTPS 流量通過連接埠 443。

  • Azure 基礎設施服務 - 允許 IP 位址 168.63.129.16 和 169.254.169.254。

檢查「Front Door」標頭

透過 Front Door 路由傳送的要求包含與您的 Front Door 設定相關的標頭。 你可以設定 check-header 政策,根據送往 API Management 的 X-Azure-FDID HTTP 請求標頭的唯一值來過濾。 此標頭值為 [Front Door ID],會顯示在 Front Door 個人資料的 [概觀] 頁面的入口網站中。

在下列原則範例中,Front Door ID 是使用一個名為某名稱的命名值進行指定。

<check-header name="X-Azure-FDID" failed-check-httpcode="403" failed-check-error-message="Invalid request." ignore-case="false">
        <value>{{FrontDoorId}}</value>
</check-header>

未附帶有效 X-Azure-FDID 標頭的請求會回傳 403 Forbidden 回應。

(選擇性) 設定開發人員入口網站的 Front Door

您可以選擇性地將 API 管理實例的開發人員入口網站設定為 Front Door 設定檔的端點。 雖然託管的開發者入口網站已經由 Azure 管理的 CDN 前端提供支援,但您或許希望利用 Front Door 的其他功能,例如 Web 應用程式防火牆 (WAF)。

以下是將開發人員入口網站端點新增至設定檔的高階步驟:

  • 若要新增端點並設定路由,請參閱使用 Front Door 管理員設定端點。

  • 新增路由時,新增來源群組和來源設定以代表開發人員入口網站:

    • [來源類型] - 選取 [自訂]
    • [主機名稱] - 輸入開發人員入口網站的主機名稱,例如 myapim.developer.azure-api.net

欲了解更多設定資訊,請參閱 如何設定 Azure Front Door 的原點

注意

如果你為開發者入口網站設定了 Microsoft Entra IDMicrosoft Entra 外部 ID 身份提供者,你需要更新對應的應用程式註冊,並新增一個導向到 Front Door。 在應用程式註冊中,加入在您的 Front Door 設定檔中所設定的開發人員入口網站端點的 URL。

  • 若要自動化部署使用 API 管理的 Front Door,請參閱具有 API 管理來源的 Front Door 標準版/進階版範本。

  • 學習如何在 Azure Front Door 上部署 Web 應用程式防火牆 (WAF),以保護 API Management 實例免受惡意攻擊。