將您的 Azure API 管理執行個體部署到虛擬網路 - 外部模式

適用於:開發人員 |進階版

Azure APIM 可以部署 (插入) 於 Azure 虛擬網路 (VNet) 內部,以存取網路中的後端服務。 如需 VNet 連線選項、需求和考慮,請參閱:

本文說明如何在「外部」模式中設定 API 管理執行個體的 VNet 連線,其中開發人員入口網站、API 閘道與其他 API 管理端點可從公用網際網路存取,而後端服務則位於網路中。

連線 至外部 VNet

如需內部模式的特定設定 (其中端點只能在 VNet 中存取),請參閱將您的 Azure API 管理執行個體部署至虛擬網路 - 內部模式

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

必要條件

開始之前,請先檢閱 API 管理 插入虛擬網路的網路資源需求。

依據裝載 API 管理執行個體的運算平台版本 (stv2stv1),有些必要條件會不同。

提示

當您使用入口網站來建立或更新現有 API 管理執行個體的網路連線時,會將執行個體裝載於 stv2 運算平台上。

  • 與您 API 管理執行個體位於相同區域與訂閱中的虛擬網路與子網路

    • 用來連線到 APIM 執行個體的子網路可能包含其他 Azure 資源類型。
    • 子網路不應該啟用任何委派。 子網路的 [為服務委派子網路] 設定應設為 [無]
  • 連結至上述子網路的網路安全性群組。 需要有網路安全性群組 (NSG),才能明確地允許輸入連線,因為 APIM 內部使用的負載平衡器預設是安全的,並拒絕所有輸入流量。 如需特定設定,請參閱本文稍後的設定 NSG 規則

  • 某些情況下,請在子網路中啟用服務端點以依賴服務,例如 Azure 儲存體或 Azure SQL。 如需詳細資訊,請參閱本文稍後的使用 ExpressRoute 或網路虛擬設備,以強制打開通道將流量傳送至內部部署防火牆

  • 標準 SKU 公用 IPv4 位址。 設定外部或內部存取的虛擬網路時,需要公用 IP 位址資源。 使用內部虛擬網路時,公用 IP 位址只會用於管理作業。 深入了解 API 管理的 IP 位址

    • IP 位址必須位於與 API 管理執行個體和虛擬網路相同的區域和訂用帳戶中。

    • 建立公用 IP 位址資源時,請確定您指派其 [DNS 名稱標籤]。 一般而言,您應該使用與 API 管理 實例相同的 DNS 名稱。 如果您變更它,請重新部署實例,以便套用新的 DNS 標籤。

    • 為了獲得最佳網路效能,建議使用預設路由喜好設定Microsoft 網路

    • 當您計劃為 API 管理執行個體啟用區域備援的區域中建立公用 IP 位址時,請設定 [區域備援] 設定。

    • 會將 IP 位址的值指派為該區域中 API 管理執行個體的虛擬公用 IPv4 位址。

    • 從外部變更為內部虛擬網路 (或反之亦然)、變更網路中子網路或更新 API 管理執行個體的可用性區域時,您必須設定不同的公用 IP 位址。

啟用 VNet 連線

使用 Azure 入口網站 (stv2 運算平台) 啟用 VNet 連線

  1. 移至 Azure 入口網站,以尋找您的 API 管理執行個體。 搜尋並選取 [API 管理服務]

  2. 選擇您的 API 管理執行個體。

  3. 選取 [網路]

  4. 選取 [外部] 存取類型。 在 Azure 入口網站 中選取 [VNet]。

  5. 在佈建 API 管理服務的位置 (區域) 清單中:

    1. 選擇 [位置]
    2. 選取 [虛擬網路]、[子網路] 與 [IP 位址]
    • VNet 清單會填入 Azure 訂閱中可用的 Resource Manager VNet,而這些訂閱設定於您所設定的區域中。

      入口網站中的 VNet 設定。

  6. 選取套用。 您的 API 管理執行個體的 [網路] 頁面會更新為您所選的新 VNet 與子網路。

  7. 繼續為 API 管理執行個體的其餘位置設定 VNet 設定。

  8. 在頂端瀏覽列中,選取 [儲存],然後選取 [Apply network configuration] \(套用網路設定\)

更新 API 管理執行個體可能需要 15 到 45 分鐘的時間。 開發人員層中的實例會在程序期間停機。 進階版 層中的實例在程序期間沒有停機時間。

使用 Resource Manager 範本 (stv2 運算平台) 啟用連線

  • Azure Resource Manager 範本 (API 版本 2021-08-01)

    將 Resource Manager 範本部署至 Azure 的按鈕。

使用 Azure PowerShell Cmdlet (stv1 平台) 啟用連線

在 VNet 中建立更新 API 管理執行個體。

設定 NSG 規則

在 API 管理子網路中設定自訂網路規則,以篩選進出 API 管理執行個體的流量。 建議使用下列「最低」NSG 規則,以確保您的執行個體能夠正常運作及存取。 請仔細檢閱您的環境,以判斷更多可能需要的規則。

重要

根據您對快取和其他功能的使用,您可能需要設定下列表格中最低規則以外的其他 NSG 規則。 如需詳細設定,請參閱虛擬網路設定參考

  • 在大部分的情況下,請使用所指出的服務標籤,而非指定網路來源與目的地的服務 IP 位址。
  • 將這些規則的優先順序設定為高於預設規則的優先順序。
來源 / 目的地連接埠 方向 傳輸通訊協定 服務標籤
來源 / 目的地
目的 VNet 類型
* / [80]、443 傳入 TCP Internet / VirtualNetwork 與 API 管理的用戶端通訊 僅外部
* / 3443 傳入 TCP ApiManagement / VirtualNetwork Azure 入口網站和 PowerShell 的管理端點 外部和內部
* / 6390 輸入 TCP AzureLoadBalancer / VirtualNetwork Azure 基礎結構負載平衡器 外部和內部
* / 443 傳入 TCP AzureTrafficManager / VirtualNetwork 適用於多區域部署的 Azure 流量管理員路由 僅外部
* / 443 輸出 TCP VirtualNetwork / Storage 核心服務功能的相依性 Azure 儲存體 外部和內部
* / 1433 輸出 TCP VirtualNetwork / SQL 存取 Azure SQL 端點以取得核心服務功能 外部和內部
* / 443 輸出 TCP VirtualNetwork / AzureKeyVault 存取 Azure 金鑰保存庫 以取得核心服務功能 外部和內部
* / 1886、443 輸出 TCP VirtualNetwork / AzureMonitor 發佈診斷記錄和計量資源健康狀態Application Insights 外部和內部

連線至裝載於虛擬網路中的 Web 服務

將 API 管理服務連線至 VNet 之後,您就可以存取其中的後端服務,就像您存取公共服務一樣。 建立或編輯 API 時,將您 Web 服務的本機 IP 位址或主機名稱 (若為 VNet 設定了 DNS 伺服器) 鍵入 [Web 服務 URL] 欄位中。

從 VNet 新增 API

自訂 DNS 伺服器設定

根據預設,在外部 VNet 模式中,Azure 會管理 DNS。 您可以選擇性設定自訂 DNS 伺服器。

APIM 服務相依於數個 Azure 服務。 當 API 管理裝載於具有自訂 DNS 伺服器的 VNet 時,其必須解析這些 Azure 服務的主機名稱。

重要

若您打算針對 VNet 使用自訂 DNS 伺服器,在將 API 管理服務部署至該伺服器之前,應該先將該伺服器設定妥當。 否則,每次變更 DNS 伺服器時,您都必須執行套用網路設定作業來更新 API 管理服務。

路由

  • 已保留負載平衡的公用 IP 位址 (VIP),以提供 VNet 外部 API 管理端點與資源的存取權。
    • 您可以在 Azure 入口網站的 [Overview/Essentials] \(概觀/基本資訊\) 刀鋒視窗上找到公用 VIP。

如需詳細資訊與考量,請參閱 Azure API 管理的 IP 位址

VIP 與 DIP 位址

動態 IP (DIP) 位址將會指派給服務中的每個基礎虛擬機器,並用於存取 VNet 與對等互連 VNet 中的端點與資源。 將使用 API 管理服務的公用虛擬 IP (VIP) 位址來存取公開資源。

若 IP 限制列出 VNet 或對等互連 VNet 中的安全資源,則建議指定部署 API 管理服務的整個子網路範圍,以授與或限制服務的存取權。

深入了解建議的子網路大小

使用 ExpressRoute 或網路虛擬設備,以強制打開通道將流量傳送至內部部署防火牆

強制通道可讓您將子網路的所有網際網路繫結流量重新導向或「強制」回到內部部署,以進行檢查與稽核。 您通常會設定及定義自己的預設路由 (0.0.0.0/0),以強制來自 API 管理子網路的所有流量流經內部部署防火牆,或流向網路虛擬設備。 此流量流程會中斷與 API 管理的連線,因為輸出流量於內部部署遭到阻擋,或經過 NAT 變成一組無法辨識的位址,而這些位址無法再用於各種 Azure 端點。 您可以透過下列方法來解決此問題:

  • 在部署 API 管理服務的子網路上,對這幾項啟用服務端點

    • Azure SQL (如果 API 管理服務部署至多個區域,則只在主要區域中才需要)
    • Azure 儲存體
    • Azure 事件中樞
    • Azure Key Vault (在 stv2 平台上部署 API 管理時為必要項目)

    如果直接從 API 管理子網路至這些服務啟用端點,則您可以使用 Microsoft Azure 骨幹網路,為服務流量提供最佳路由。 若您搭配使用服務端點與強制通道 API 管理,則上述 Azure 服務的流量不會使用強制通道。 然而,其他 API 管理服務相依性流量仍會使用強制通道。 請確定您的防火牆或虛擬設備未阻擋此流量,否則 API 管理服務可能無法正常運作。

    注意

    強烈建議直接從 API 管理子網路將服務端點啟用至相依的服務,例如支援服務的 Azure SQL 和 Azure 儲存體。 不過,有些組織可能需要強制傳輸來自 API 管理子網路的所有流量。 在此情況下,確定您設定防火牆或虛擬裝置以允許此流量。 您必須允許每個相依服務的完整 IP 位址範圍,並在 Azure 基礎結構變更時讓此組態保持最新狀態。 您的 API 管理服務也可能因為此網路流量的強制傳輸,而遇到延遲或非預期的逾時。

  • 從網際網路到 APIM 服務管理端點的所有控制平面流量,都會透過一組特定輸入 IP 進行路由傳送,這組 IP 是由 APIM 所裝載且受到 ApiManagement服務標籤包圍。 流量使用強制通道時,回應不會對稱地對應回這些輸入來源 IP,並會遺失管理端點的連線。 若要克服此限制,針對下一個躍點類型設定為「網際網路」的 ApiManagement 服務標籤設定使用者定義的路由 (UDR),以將流量引導回 Azure。

    注意

    允許「API 管理」管理流量略過內部部署防火牆或網路虛擬設備,並未被視為重大安全性風險。 API 管理子網路的建議設定只允許來自 ApiManagement 服務標籤所包含 Azure IP 位址集且位於連接埠 3443 的輸入管理流量。 建議的 UDR 設定僅適用於此 Azure 流量的傳回路徑。

  • (外部 VNet 模式) 針對用戶端嘗試從網際網路到達 API 管理閘道與開發人員入口網站,將根據預設捨棄其資料平面流量,原因是強制通道所引進的非對稱路由。 針對每個需要存取的用戶端,設定具有下一個躍點類型「網際網路」的明確 UDR,以略過防火牆或虛擬網路設備。

  • 對於其他強制打開通道的 API 管理服務相依性,請解析主機名稱並連接端點。 包括:

    • 計量和健康情況監視
    • Azure 入口網站診斷
    • SMTP 轉送
    • 開發人員入口網站 CAPTCHA
    • Azure KMS 伺服器

如需詳細資訊,請參閱虛擬網路設定參考

常見的網路設定問題

本節已移至其他地方。 請參閱虛擬網路設定參考

疑難排解

未成功將 APIM 服務初始部署至子網路

  • 將虛擬機器部署至相同的子網路。
  • 連線至虛擬機器,並驗證 Azure 訂閱中下列所有資源的連線:
    • Azure 儲存體 Blob
    • Azure SQL Database
    • Azure 儲存體資料表
    • Azure Key Vault (適用於 stv2 平台上所裝載的 API 管理執行個體)

重要

驗證連線之後,請先移除子網路中的所有資源,再將 API 管理部署至子網路 (在 stv1 平台上裝載 API 管理時為必要項目)。

驗證網路狀態

  • 將 API 管理部署至子網路之後,請使用入口網站來檢查執行個體與相依性 (例如 Azure 儲存體) 的連線。

  • 在入口網站的左側功能表中,於 [Deployment and infrastructure] \(部署與基礎結構\) 下,依序選取 [網路]>[網路狀態]

    在入口網站中確認網路連線狀態的螢幕快照。

篩選 描述
必要 選取以檢閱 API 管理所需的 Azure 服務連線。 失敗指出執行個體無法執行核心作業來管理 API。
選擇性 選取以檢閱選用的服務連線。 失敗只是指出特定功能 (例如 SMTP) 將無法運作。 失敗可能會導致降低使用及監視 API 管理執行個體,並提供已認可的 SLA。

如需針對連線問題進行疑難排解的協助,請選取:

  • 計量 - 檢閱網路連線狀態計量

  • 診斷 - 在指定期間內執行虛擬網路驗證器

若要解決連線問題,請檢閱網路組態設定,並修正必要的網路設定。

累加式更新

對您的網路進行變更時,請參閱 NetworkStatus API,以確認 APIM 服務並未遺失對重要資源的存取權。 連線狀態應該每隔 15 分鐘更新一次。

若要使用入口網站將網路設定變更套用至 API 管理執行個體:

  1. 在執行個體的左側功能表中,於 [部署和基礎結構] 底下,選取 [網路]>[虛擬網路]
  2. 選取 [Apply network configuration] \(套用網路設定\)

部署至 Resource Manager VNet 子網路時,stv1 計算平台上裝載的 APIM 執行個體會建立資源導覽連結來保留子網路。 如果子網路已包含來自不同提供者的資源,部署將會失敗。 同樣地,當您刪除 API 管理服務或將其移至不同的子網路時,也會移除資源導覽連結。

將 APIM 執行個體重新指派給先前子網路時遇到的挑戰

  • VNet 鎖定 - 將 APIM 執行個體移回其原始子網路時,可能會因為 VNet 鎖定而無法立即重新指派,最多需要六個小時才能移除鎖定。 如果原始子網路有其他 stv1 平台型 APIM 服務 (雲端服務型),則刪除它們後需要等待 6 小時,才能在相同的子網路中部署 stv2 平台型服務。
  • 資源群組鎖定 - 另一個要考慮的案例是在資源群組層級或更高層級上存在範圍鎖定,進而阻礙資源導覽連結刪除流程。 若要解決此問題,請移除範圍鎖定,並允許 APIM 服務延遲大約 4 到 6 小時,以便在移除鎖定之前從原始子網路取消連結,從而能夠部署到所需的子網路。

針對從 VNet 內到 Microsoft Graph 的連線進行疑難排解

使用者使用 Microsoft Entra 識別提供者登入開發人員入口網站等功能需要與 Microsoft Graph 的網路連線。

針對從 VNet 內到 Microsoft Graph 的連線進行疑難排解:

  • 確定 NSG 和其他網路規則已設定為從您的 APIM 執行個體輸出連線到 Microsoft Graph (使用 AzureActiveDirectory 服務標籤)。

  • 確定從 VNet 內對 graph.microsoft.com 進行的 DNS 解析和網路存取。 例如,在 VNet 內佈建新的 VM、進行連線,並嘗試從瀏覽器或是使用 cURL、PowerShell 或其他工具來試用 GET https://graph.microsoft.com/v1.0/$metadata

下一步

深入了解: