Azure API 管理登陸區域加速器

Azure API 管理
Azure 應用程式閘道
Azure Functions
.NET

在內部和外部存取服務的方式中,API 變得越來越重要。 在內部,API 可用來存取企業營運應用程式、家用解決方案和協力廠商整合。 從外部來看,更多公司看起來更具生產力,並獲利其 API。 考慮到此趨勢,API 管理成為管理、控管和發佈 API 的標準方法的核心元件,同時提供給內部和外部物件。

透過Azure 應用程式閘道的說明,現在可以保護及限制透過 Azure API 管理 提供的 API 存取權。 本文說明一個解決方案,您可以在其中透過單一API 管理實例管理內部和外部 API。 您可以維護安全狀態,使其無法直接透過網際網路公開,但會透過應用程式閘道加以存取。

架構

此圖顯示API 管理登陸區域加速器的架構。

此架構圖的開頭是一個全包含方塊,代表訂用帳戶的範圍、將解析私人網域的私用 DNS區域,以及虛擬網路名稱 APIM-CS VNet 的範圍。 訂用帳戶頂端是一個方塊,指出它是內部部署工作負載。 方塊中有伺服器圖示。 管道表示站對站連線,或 Azure ExpressRoute 會連線到 Azure 訂用帳戶中的API 管理實例。 另外七個較小的方塊位於顯示 Azure 訂用帳戶的大型方塊內。 其中四個方塊位於頂端資料列,而三個方塊位於底部資料列。 每個個別方塊代表具有連結網路安全性群組的個別子網。 從最左邊,頂端資料列最左邊方塊上有一個附加至Azure 應用程式閘道的公用 IP 位址。 應用程式閘道也位於七個小方塊的其中一個,且子網名為 App GW 子網。 右側是另一個包含 API 管理 實例的方塊,其子網名為 APIM 子網。 旁邊是頂端資料列上的第三個方塊,其中包含名為 PE 子網之子網中Azure Functions實例的私人端點。 最上列最右邊的方塊是包含 Azure Function Apps 的後端子網、函式Azure App 服務方案,以及與函數應用程式相關聯的儲存體帳戶。 從左側開始,底部資料列是一個方塊,其中包含 Bastion 子網中的 Azure Bastion。 第二個方塊包含 Jump Box 子網中的管理 jumbox VM。 底部資料列的最後一個方塊是 DevOps 子網中包含的 DevOps Agent。 影像右下角有三個共用資源及其各自的圖示。 從左至右的方塊如下:金鑰保存庫、Application Insights 和 Log Analytics 工作區。 有兩組工作流程。 第一個工作流程以黑色圓圈表示,另一個工作流程則會以藍色圓圈表示,稍後會說明。 黑色工作流程表示可從外部取得的 API 存取權。 流程會從存取公用 IP 位址的使用者開始。 接著,箭號會指向應用程式閘道的方向、從應用程式閘道到私人端點,以及從私人端點指向函式應用程式。 藍色工作流程會從內部部署伺服器開始,其中包含指向 API 管理 實例的箭號,透過指出站對站連線或透過 ExpressRoute 的管線圖示。 流程的其餘部分與上述相同:從API 管理到私人端點,以及從私人端點到 Azure Function。

此架構假設原則已從 Azure 登陸區域加速器 就地進行,且結構是從管理群組向下驅動。

下載這個架構的 Visio 檔案

工作流程

混合式案例 (藍色圓圈)

此案例需要站對站或 Azure ExpressRoute 連線到您的內部部署環境。

  1. 內部部署應用程式需要存取透過 Azure API 管理提供的內部 API。
  2. API 管理會連線到裝載于Azure Functions上的後端 API。 此連線是透過私人端點,可透過 Azure Functions Premium 方案取得,並裝載在其自己的子網中。
  3. 私人端點可安全地存取裝載于Azure Functions的內部 API。

外部存取案例 (黑色圓圈)

  1. 外部應用程式會存取連結至Azure 應用程式閘道的公用 IP 位址或自訂 FQDN。
  2. 應用程式閘道作為 Web 應用程式防火牆,這需要 PFX 憑證以進行 SSL 終止。
  3. API 管理會透過私人端點連線到裝載于Azure Functions上的後端 API。 此端點可透過 Azure Functions Premium 方案取得,並裝載在其自己的子網中。
  4. 私人端點會安全地存取裝載在 Azure Functions 上的外部可用 API。

單元

此架構會使用下列元件:

  • Azure API 管理是一項受控服務,可讓您跨混合式和多雲端環境管理服務。 API 管理可作為抽象化後端架構的外觀,並為內部和外部使用者提供 API 可檢視性和耗用量的控制和安全性。

  • Azure Functions是無伺服器解決方案,可讓您更專注于可以使用最少基礎結構管理來執行的程式碼區塊。 函式可以裝載于 各種主控方案中,而此參考架構會使用進階方案,因為使用私人端點。

  • Azure 應用程式閘道是作為第 7 層負載平衡器和Web 應用程式防火牆的受控服務。 在此案例中,應用程式閘道會保護內部 APIM 實例,這可讓您使用內部和外部模式。

  • Azure DNS私用 DNS區域可讓您管理及解析虛擬網路內的功能變數名稱,而不需要實作自訂 DNS 解決方案。 私用 DNS區域可以透過虛擬網路連結對齊一或多個虛擬網路。 由於Azure Functions透過此參考架構所使用的私人端點公開,您必須使用私人 DNS 區域。

  • Azure 監視器Application Insights可協助開發人員偵測異常狀況、診斷問題,以及瞭解使用模式。 Application Insights 功能可延伸的應用程式效能管理和監視即時 Web 應用程式。 支援各種平臺,包括 .NET、Node.js、JAVA 和 Python。 它支援裝載于 Azure、內部部署、混合式環境或其他公用雲端中的應用程式。 Application Insights 包含在此參考架構中,以監視已部署應用程式的行為。

  • Azure 監視器Log Analytics可讓您使用 Azure 監視器記錄中的資料來編輯和執行記錄查詢,選擇性地從Azure 入口網站內執行。 開發人員可以針對一組記錄執行簡單的查詢,或使用 Log Analytics 來執行進階分析。 然後,他們可以將結果視覺化。 Log Analytics 會設定為此參考架構的一部分,以匯總所有監視記錄,以取得更多分析和報告。

  • Azure 虛擬機器是一種運算資源,可用來裝載許多不同的工作負載。 在此參考架構中,虛擬機器可用來提供管理 Jumpbox 伺服器,以及 DevOps 代理程式或 GitHub 執行器的主機。

  • Azure 金鑰保存庫是一種雲端服務,可安全地儲存和存取秘密,範圍從 API 金鑰和密碼到憑證和密碼編譯金鑰。 此參考架構會使用 Azure 金鑰保存庫來儲存應用程式閘道所使用的 SSL 憑證。

  • Azure Bastion 是在開發人員虛擬網路內布建的平臺即服務。 它會從 Azure 入口網站,透過 TLS 為開發人員的虛擬機器提供安全的 RDP/SSH 連線。 使用 Azure Bastion 時,虛擬機器不再需要公用 IP 位址,才能透過 RDP/SSH 連線。 此參考架構會使用 Azure Bastion 來存取 DevOps 代理程式或 GitHub 執行器伺服器或管理跳板伺服器。

如果您使用 DevOps 工具,例如 Azure DevOps 或 GitHub,則雲端裝載的代理程式或執行器會透過公用網際網路運作。 由於此架構中的 API 管理設定為內部網路,因此您必須使用可存取 VNet 的 DevOps 代理程式。 DevOps 代理程式將協助您將原則和其他變更部署到架構中的 API。 這些 CI/CD 範本 可用來分隔程式,並讓開發小組根據 API 部署變更。 它們是由 DevOps 執行器執行。

替代方案

對於API 管理實例所連線的後端服務,除了Azure Functions之外,還會提供數個替代專案,此參考實作中會使用此替代專案:

  • Azure App 服務是完全受控的 HTTP 型服務,可建置、部署及調整 Web 應用程式。 支援 .NET、.NET Core、JAVA、Ruby、Node.js、PHP 和 Python。 應用程式可以在以 Windows 或 Linux 為基礎的環境中執行和調整。
  • Azure Kubernetes Service為整合式持續整合和持續傳遞提供完全受控的 Kubernetes 叢集, (CI/CD) 體驗、控管和安全性。
  • Azure Logic Apps 是雲端式平臺,可建立和執行自動化工作流程。 您可以在 Azure 上的基本企業整合中找到範例參考架構。
  • Azure Container Apps 可讓您在無伺服器平臺上執行微服務和容器化應用程式。

針對多區域部署,請考慮使用 Azure Front Door ,在使用者與應用程式的靜態和動態 Web 內容之間提供快速、可靠且安全的存取。

若要查看應用程式閘道如何保護 API 的其他範例,請參閱使用應用程式閘道和API 管理保護 API

考量

這些考慮會實作 Azure Well-Architected Framework 的要素,這是一組可用來改善工作負載品質的指引原則。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework

可靠性

可靠性可確保您的應用程式符合您對客戶的承諾。 如需詳細資訊,請參閱 可靠性要素概觀。

  • 為每個區域部署至少兩個縮放單位API 管理分散在兩個可用性區域。 這個方法可最大化您的可用性和效能。
  • VNet 對等互連可在區域中提供絕佳的效能,但延展性限制上限為 500 個網路。 如果您需要連線更多工作負載,請使用中 樞輪輻設計 Azure vWAN

安全性

安全性可提供保證,以避免刻意攻擊和濫用您寶貴的資料和系統。 如需詳細資訊,請參閱安全性要素的概觀

  • API 管理驗證原則可用來驗證 API 要求和 OpenAPI 架構的回應。 這些功能不是Web 應用程式防火牆的取代專案,但可以針對某些威脅提供額外的保護。 新增驗證原則可能會造成效能影響,因此建議您使用效能負載測試來評估其對 API 輸送量的影響。
  • 在API 管理前面部署 Azure Web 應用程式防火牆 (WAF) ,以針對常見的 Web 應用程式惡意探索和弱點提供保護。
  • 使用金鑰保存庫秘密套用具名值,以保護 APIM 原則中的敏感性資訊。
  • 針對內部 APIM 實例的外部存取使用應用程式閘道來保護 APIM 實例,並啟用混合式連線。
  • 在 VNet 中部署API 管理閘道,以支援混合式連線和提高安全性。
  • VNet 對等互連可在區域中提供絕佳的效能,但延展性限制上限為 500 個網路。 如果您需要連線更多工作負載,請使用中 樞輪輻設計Azure vWAN

成本最佳化

成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化要素的概觀

  • 由於可用性區域和虛擬網路支援的需求,我們選取了API 管理的進階層,並遵循每個區域的定價。 此外,在此工作負載中,Azure Functions裝載于進階方案,因為需要 VNet 存取。
  • 如需概念證明或原型,建議您使用其他層級的API 管理 (,例如開發人員或標準) 。

卓越營運

營運卓越涵蓋部署應用程式的作業程式,並將它保留在生產環境中執行。 如需詳細資訊,請參閱 營運卓越要素概觀

  • API 管理組態應以 ARM 範本表示,您應該採用基礎結構即程式碼思維。
  • 使用 CI/CD 程式來管理、版本和更新API 管理組態。
  • 建立自訂健康情況探查,以協助驗證 API 管理實例的狀態。 使用 URL /status-0123456789abcdef 在應用程式閘道中建立 APIM 服務的常見健康情況端點。
  • 金鑰保存庫中更新的憑證會在 4 小時內自動輪替API 管理。
  • 為每個區域部署至少兩個縮放單位API 管理分散在兩個可用性區域。 這個方法可最大化可用性和效能。

部署此案例

此架構可在 GitHub上取得。 其中包含所有必要的基礎結構即程式碼檔案和 部署指示

參與者

本文由 Microsoft 維護。 它原本是由下列參與者所撰寫。

主要作者:

若要查看非公用LinkedIn設定檔,請登入 LinkedIn。

下一步

請參閱下列重要資源:

深入瞭解這些重要服務: