共用方式為


Azure API 管理登陸區域架構

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

API 對於組織及其客戶在內部系統內和透過外部管道存取服務的方式來說,已經變得越來越不可或缺。 在內部,API 有助於存取業務線 (LoB) 應用程式、專有解決方案和合作夥伴整合。 在外部,越來越多的組織專注於透過 API 貨幣化提高生產力和創造收入。 鑑於此趨勢,Azure API 管理 可作為內部和外部利害關係人標準化治理、發佈和監督 API 的基本元素。

Azure 應用程式閘道可作為 API 的安全性檢查點。 您不允許使用者直接透過網際網路連線,而是透過應用程式閘道路由傳送所有流量。 此設定會新增額外的存取控制,以協助保護您的 API。 透過此方法,您可以使用單一 API 管理 實例來支援組織內的內部 API 和組織外部的外部 API,同時將任何公開的 API 保護在閘道後方。

注意

此架構可作為適用於 Azure 的雲端採用架構中 Azure 登陸區域中 API 管理 指引的基礎。

架構

此圖顯示 API 管理 的安全基準架構。

下載此架構的 Visio 檔案

此架構假設原則已從 Azure 登陸區域參考實 作到位,且結構是從管理群組向下驅動。

Workflow

  • 公用 IP 位址會指派給應用程式閘道,作為外部流量的進入點。 該端點會透過自訂網域公開 API。

  • 應用程式閘道會部署在自己的子網路中,並受到 Web 應用程式防火牆 (WAF) 原則的保護,以檢查和篩選傳入的要求。

  • 流量會從應用程式閘道路由傳送至 API 管理 (進階版),其位於個別的 API 管理 子網路中。 API 管理 實例會設定為內部模式,以防止直接公用存取。

  • 私人端點可用來安全地將 API 管理 連線到僅公開給虛擬網路的後端應用程式伺服器。 API 管理 也會定期連線相依性,例如 Azure 金鑰保存庫。 一般而言,所有這些私人連線都會與專用私人端點子網路中的端點發生。

  • Log Analytics 工作區和 Application Insights 已整合,以進行記錄、監視和遙測。

元件

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

  • 應用程式閘道 是受控服務,可作為第 7 層負載平衡器和 WAF。 應用程式閘道會保護內部 API 管理 執行個體,以同時使用內部和外部模式。 在此架構中,API 管理 會保護 API,而應用程式閘道會新增 WAF 等互補功能。

  • 私人網域名稱系統 (DNS) 區域 是 Azure DNS 的一項功能,可讓您在虛擬網路內管理和解析網域名稱,而不需要實作自訂 DNS 解決方案。 私人 DNS 區域可以透過 虛擬網路連結對齊一或多個虛擬網路。 在此架構中,需要私人 DNS 區域,以確保虛擬網路內的名稱解析正確。

  • Application Insights 是可延伸的應用程式效能管理服務,可協助開發人員偵測異常、診斷問題,以及了解使用模式。 Application Insights 具有可擴展的應用程式效能管理和即時 Web 應用程式監視功能。 支援各種平台,包括 .NET、Node.js、Java 和 Python。 它支援裝載於 Azure、內部部署、混合式環境或其他公用雲端的應用程式。 在此架構中,Application Insights 會監視已部署應用程式的行為。

  • Log Analytics 是雲端式資料分析工具,可讓您選擇性地從 Azure 入口網站內編輯和執行 Azure 監視器記錄中資料的記錄查詢。 開發人員可以執行簡單的查詢來擷取記錄,或使用 Log Analytics 進行進階分析,然後將結果視覺化。 在此架構中,Log Analytics 會彙總所有平臺資源記錄以進行分析和報告。

  • Azure 金鑰保存庫 是一種雲端服務,可安全地儲存和存取秘密。 這些秘密的範圍從 API 金鑰和密碼到憑證和加密金鑰。 在此架構中,金鑰保存庫會儲存應用程式閘道所使用的安全通訊端層 (SSL) 憑證。

替代項目

針對 API 管理 執行個體連線的後端服務,有數個替代方案可供使用:

  • Azure App Service 是完全受控的 HTTP 型服務,可建置、部署和調整 Web 應用程式。 它支援 .NET、.NET Core、Java、Ruby、Node.js、PHP 和 Python。 應用程式可以在 Windows 或 Linux 環境中執行和調整。

  • Azure Kubernetes Service (AKS) 是受控 Kubernetes 供應專案,可提供完全受控叢集。 它支援整合的持續整合和持續交付 (CI/CD),以及內建的治理和安全性。

  • Azure Logic Apps 是雲端式平台,可建立和執行自動化工作流程。 如需詳細資訊,請參閱 範例參考架構

  • Azure 容器應用程式 是完全受控的無伺服器容器服務,可讓您在無伺服器平台上執行微服務和容器化應用程式。

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

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

考量

這些考量能實作 Azure Well-Architected Framework 的支柱,這是一組指導原則,可以用來改善工作負載的品質。 如需詳細資訊,請參閱 Well-Architected Framework

可靠性

可靠性有助於確保您的應用程式可以符合您對客戶的承諾。 如需詳細資訊,請參閱可靠性的設計檢閱檢查清單

  • 部署至少兩個 API 管理 縮放單位 ,這些單位分散在每個區域的兩個或多個可用性區域中。 監控容量指標,並佈建足夠的容量單位,以便即使一個可用區域中的單位遺失,您也可以繼續運作。

  • 建議您使用進階層,因為它支援可用性區域和多區域部署。 此功能表示即使某個區域或區域關閉,您的服務仍可繼續執行。 這些功能有助於在中斷或災難期間保護您的應用程式。

  • 針對災害復原,請使用使用者指派的受控識別來設定 API 管理,而不是系統指派的識別。 如果您重新部署或刪除資源,身分識別及其許可權會保留在原處,因此您可以更輕鬆地還原存取權。 使用 Azure Pipelines 將備份自動化。 決定是否需要在多個區域部署服務以獲得更好的可靠性。

  • 虛擬網路對等互連在區域內提供強大的效能,但其延展性限制為 500 個網路。 如果您需要連線更多工作負載,請使用 中樞輪輻設計Azure 虛擬 WAN

安全性

安全性可提供針對蓄意攻擊和濫用寶貴數據和系統的保證。 如需詳細資訊,請參閱安全性的設計檢閱檢查清單

  • API 管理 驗證原則 會針對 OpenAPI 架構驗證 API 要求和回應。 這些功能不能取代 WAF,但它們可以提供針對某些威脅的額外保護。 新增驗證政策可能會對效能產生影響,因此建議您使用效能負載測試來評估其對 API 輸送量的影響。

  • 適用於 API 的 Microsoft Defender 為 API 管理 中發佈的 API 提供完整的生命週期保護、偵測和回應。 其中一項關鍵功能是使用基於機器學習和基於規則的檢測,通過運行時異常觀察來檢測開放 Web 應用程序安全項目 (OWASP) API 前 10 個漏洞的漏洞。

  • API 管理 工作區 可協助您組織和隔離 API。 這種方法可以更輕鬆地控制誰可以存取和管理它們。 每個工作區都可以有自己的一組權限,因此您可以將存取權限制為僅需要它的人員或團隊。 這種分離降低了意外更改或未經授權存取的風險,並支援更安全的 API 環境。

  • 使用 Key Vault 秘密作為 API 管理 原則中的具名值, 以保護 API 管理 原則中的敏感性資訊。

  • 使用 應用程式閘道進行內部 API 管理 執行個體的外部存取 ,以保護 API 管理 執行個體、使用 WAF 防禦常見的 Web 應用程式惡意探索和弱點,以及啟用混合式連線。

  • 在虛擬網路中部署 API 管理 閘道,以支援混合式連線和提高安全性。

  • 虛擬網路對等互連可改善區域中的效能,並啟用虛擬網路之間的私人通訊。

  • 當您使用 WAF 時,您會引入一個層來檢查傳入流量是否存在惡意行為。 此保護有助於阻止常見威脅,例如 SQL 注入和跨站腳本。 應用程式閘道和分散式阻斷服務 (DDoS) 保護有助於防止過多的流量或連線洪水使 API 管理 實例不堪重負。 如需詳細資訊,請參閱使用 應用程式閘道和 API 管理 保護 API

  • Azure Functions 的私人端點可讓您透過虛擬網路內的私人 IP 位址安全地連線到函式應用程式。 此設定可防止您的功能暴露於公共網際網路,從而降低未經授權存取的風險。 在此架構中,私人端點可確保只有網路內受信任的資源才能存取 Azure Functions。

成本優化

成本優化著重於減少不必要的費用,並提升營運效率的方式。 如需詳細資訊,請參閱成本最佳化的設計檢閱檢查清單

  • 此部署會使用 進階方案 來支援可用性區域和虛擬網路功能。 如果您不需要專用執行個體,也可以使用 Flex Consumption,它同時支援網路存取和可用區域。 檢閱此部署的 定價計算機

  • 針對概念證明或原型,建議您使用其他 API 管理 層級,例如開發人員或標準。

卓越營運

卓越營運涵蓋部署應用程式並使其持續在生產環境中執行的作業流程。 如需詳細資訊,請參閱卓越營運的設計檢閱檢查清單

  • 將 API 管理 設定表示為 Azure Resource Manager 範本,並採用基礎結構即程式碼 (IaC) 方法。

  • 使用 CI/CD 程式來管理、版本和更新 API 管理 組態。

  • 建立自訂健康情況探查,以協助驗證 API 管理 實例的狀態。 使用 URL /status-0123456789abcdef 在應用程式閘道中建立 API 管理 服務的通用健康情況端點。

  • 金鑰保存庫中更新的憑證會在 API 管理 中自動輪替,這會在四小時內反映變更。

  • 如果您使用 DevOps 工具,例如 Azure DevOps 或 GitHub,則雲端裝載的代理程式或執行器會透過公用因特網運作。 由於此架構中的 API 管理 會設定為內部網路,因此您必須使用可存取虛擬網路的 DevOps 代理程式。 DevOps 代理程式可協助您將原則和其他變更部署至架構中的 API。 您可以使用這些 CI/CD 範本 將程序分成多個部分,以便您的開發團隊可以部署每個 API 的變更。 DevOps 執行器會起始範本來處理這些個別部署。

部署此案例

此架構可在 GitHub取得。 它包含所有必要的 IaC 檔案和 部署指示

參與者

本文由 Microsoft 維護。 以下貢獻者撰寫了這篇文章。

主要作者:

若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。

下一步