在 Azure API 管理前方設定 Front Door 標準版/進階版

適用於:所有 API 管理 層

Azure Front Door 是新式應用程式傳遞網路平台,可提供安全、可擴充的內容傳遞網路 (CDN)、動態網站加速,以及全域 Web 應用程式的全域 HTTP(S) 負載平衡。 在API 管理之前使用時,Front Door 可以提供 TLS 卸載、端對端 TLS、負載平衡、GET 要求的回應快取,以及 Web 應用程式防火牆等功能。 如需完整的支援功能清單,請參閱 Azure Front Door 是什麼?

注意

針對 Web 工作負載,強烈建議使用 Azure DDoS 保護Web 應用程式防火牆來防範新興的 DDoS 攻擊。 另一個選項是運用 Azure Front Door 以及 Web 應用程式防火牆。 Azure Front Door 提供平台層級保護來防範網路層級 DDoS 攻擊。 如需詳細資訊,請參閱 Azure 服務的安全性基準

本文說明如何:

  • 在可公開存取的 Azure API 管理實例前方設定 Azure Front Door 標準版/進階版設定檔:未進行網路連線,或在外部模式的虛擬網路中進行插入。
  • 限制 API 管理僅接受來自 Azure Front Door 的 API 流量。

必要條件

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

設定 Azure Front Door

建立設定檔

如需建立 Azure Front Door 標準版/進階版設定檔的步驟,請參閱快速入門:建立 Azure Front Door 設定檔 - Azure 入口網站。 在本文中,您可以選擇 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. 在 [更新來源群組] 視窗中,設定下列 [健全狀態探查] 設定並選取 [更新]

    設定
    狀態 選取 [啟用健全狀態探查]
    路徑 輸入 /status-0123456789abcdef
    通訊協定 選取 [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,測試 Front Door 設定檔設定。 首先,直接透過 API 管理閘道呼叫 API,以確保可與 API 連線。 然後,透過 Front Door 呼叫 API。 若要測試,您可使用命令列用戶端,例如 curl 以進行呼叫,或如 Postman 的工具。

直接透過 API 管理呼叫 API

在下列範例中,API 管理實例所裝載 Demo Conference API 的作業會直接使用 Postman 呼叫。 在此範例中,實例的主機名稱位於預設 azure-api.net 網域中,並使用要求標頭傳遞有效的訂用帳戶金鑰。 成功的回應會顯示 200 OK 並傳回預期的資料:

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

透過 Front Door 直接呼叫 API

在下列範例中,Demo Conference API 中的相同作業會使用針對實例設定的 Front Door 端點進行呼叫。 azurefd.net 網域中的端點主機名稱會顯示在 Front Door 設定檔中 [概觀] 頁面的入口網站上。 成功的回應會顯示 200 OK 並傳回與上一個範例中相同的資料:

顯示使用Postman呼叫 Front Door 端點的螢幕快照。

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

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

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

限制傳入的 IP 位址

您可在 API 管理設定輸入 ip-filter 原則,僅允許 Front Door 相關流量,包含:

  • Front Door 的後端 IP 位址空間 - 允許 IP 位址對應至 Azure IP 範圍和服務標籤AzureFrontDoor.Backend 區段中。

    注意

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

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

檢查 Front Door 標頭

透過 Front Door 路由傳送的要求包含 Front Door 設定特定的標頭。 您可設定 check-header 原則,來根據傳送至 API 管理的 X-Azure-FDID HTTP 要求標頭唯一值,篩選傳入要求。 此標頭值為 [Front Door ID],會顯示在 Front Door 設定檔的 [概觀] 頁面的入口網站中。

在下列原則範例中,Front Door ID 是使用名為 FrontDoorId具名值進行指定。

<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 功能,例如 WAF。

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

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

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

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

如需設定的詳細資訊和資料,請參閱 如何設定 Azure Front Door 的來源

注意

如果您已針對開發人員入口網站設定 Microsoft Entra IDAzure AD B2C 識別提供者,則必須使用額外的重新導向 URL 將對應的應用程式註冊更新為 Front Door。 在應用程式註冊中,在 Front Door 設定檔中設定的開發人員入口網站端點新增 URL。

下一步