共用方式為


安全受控的 Web 應用程式

Azure App Service
Azure 應用程式閘道
Azure SQL Database
Azure VPN 閘道
Azure Web 應用程式防火牆

本文說明如何使用 App Service 環境來部署安全應用程式。 此架構會使用 Azure 應用程式閘道Azure Web 應用程式防火牆 來限制應用程式從網際網路存取。 本文也會說明如何使用 Azure DevOps 將持續整合和持續部署 (CI/CD) 與 App Service 環境整合。

銀行和保險等行業經常使用此解決方案,因為客戶重視平台級和應用程式級安全性。 為了示範這些概念,下列範例應用程式允許使用者提交費用報表。

架構

顯示安全內部負載平衡器 App Service 環境部署範例案例架構的圖表。

下載此架構的 Visio 檔案

資料流程

下列資料流程對應至上一個圖表:

  1. HTTP 和 HTTPS 要求會到達應用程式閘道。

  2. 或者,會針對 Web 應用程式啟用 Microsoft Entra 驗證。 流量到達應用程式閘道之後,系統會提示使用者提供認證以向應用程式進行驗證。 此圖表未顯示此步驟。

  3. 使用者要求會透過環境的內部負載平衡器 (ILB) 流,將流量路由傳送至費用 Web 應用程式。

  4. 使用者會建立費用報表。

  5. 在建立費用報告時,會呼叫已部署的 API 應用程式來擷取使用者的經理名稱和電子郵件。

  6. 系統會將費用報表儲存在 Azure SQL 資料庫中。

  7. 為了便於持續部署,程式碼會簽入 Azure DevOps 執行個體。

  8. 建置虛擬機器 (VM) 包含 Azure DevOps 代理程式。 此代理程式可讓建置 VM 提取 Web 應用程式成品,並使用它們將 Web 應用程式部署至 App Service 環境。 組建 VM 位於與 App Service 環境相同虛擬網路內的子網路中。

元件

  • App Service 環境提供完全隔離的專用環境,以安全地大規模執行應用程式。 App Service 環境及其工作負載都位於虛擬網路後方,因此設定會新增額外的安全性和隔離層。 此案例會使用 ILB App Service 環境來滿足高擴展和隔離的需求。

  • 此工作負載會使用 App Service 隔離定價層。 應用程式會在 Azure 資料中心的私人專用環境中執行,該環境使用更快的處理器和固態硬碟 (SSD) 儲存體,並提供最大的向外延展功能。

  • App Service 的 Web AppsAPI Apps 功能會裝載 Web 應用程式和 RESTful API。 這些應用程式和 API 裝載在隔離服務方案上,該方案也會在專用層中提供自動調整、自訂網域和其他功能。

  • 應用程式閘道 是第 7 層 Web 流量負載平衡器,可管理 Web 應用程式的流量。 它提供安全通訊端層 (SSL) 卸載,可消除從託管應用程式的 Web 伺服器解密流量的額外負荷。

  • Web 應用程式防火牆 是應用程式閘道的一項功能,可增強安全性。 Web 應用程式防火牆會使用開放全球應用程式安全專案 (OWASP) 規則來保護 Web 應用程式免受攻擊,例如跨網站指令碼、工作階段劫持和 SQL 注入。

  • SQL Database 會儲存應用程式的資料。 大部分資料都是關聯式的,有些資料會儲存為文件和 Blob。

  • Azure 虛擬網路 在 Azure 中提供各種網路功能。 您可以將虛擬網路對等互連,並透過 ExpressRoute 或站對站虛擬私人網路 (VPN) 與內部部署資料中心建立連線。 此案例可啟用虛擬網路上的 服務端點 ,以確保資料僅在 Azure 虛擬網路與 SQL Database 執行個體之間流動。

  • Azure DevOps 可協助小組在短期衝刺期間共同作業,並提供建立建置和發行管線的工具,以支援敏捷式開發。

  • Azure 組建 VM 可讓已安裝的代理程式提取個別組建,並將 Web 應用程式部署至環境。

替代項目

App Service 環境可以在 Windows 上執行一般 Web 應用程式,或在此範例中執行部署在環境中的 Linux 容器的 Web 應用程式。 此案例會使用 App Service 環境來裝載這些單一執行個體容器化應用程式。 當您設計解決方案時,請考慮下列替代方案:

  • Azure 容器應用程式 是無伺服器平台,可在執行容器化應用程式時減少基礎結構額外負荷並節省成本。 它無需管理伺服器配置、容器編排和部署詳細資訊。 Container Apps 提供保持應用程式穩定且安全所需的所有 up-to日期伺服器資源。

  • Azure Kubernetes Service (AKS) 是開放原始碼專案和協調流程平臺,其設計目的是裝載通常使用微服務架構的複雜多容器應用程式。 AKS 是受控 Azure 服務,可簡化布建和設定 Kubernetes 叢集。 你必須對 Kubernetes 平台有相當的了解才能支援和維護它,因此只架設少數單實例容器化網頁應用程式可能不是最佳選擇。

針對資料層使用下列替代方案:

  • 如果您的大部分資料都是非關聯式格式,Azure Cosmos DB 是不錯的選擇。

潛在使用案例

請考慮此解決方案適用於下列使用案例:

  • 建置需要額外安全性的 Azure Web 應用程式。
  • 提供專用租用戶,而不是共用租用戶 App Service 方案。
  • 將 Azure DevOps 與 內部負載平衡的 App Service 環境搭配使用。

解決 TLS 和 DNS 設計決策

App Service 環境預設網域尾碼的網域名稱系統 (DNS) 設定不會將應用程式連線能力限制為這些名稱。 ILB App Service 環境的自訂網域尾碼功能可讓您使用自己的網域尾碼來存取裝載在 App Service 環境中的應用程式。

自訂網域尾碼會定義 App Service 環境所使用的根網域。 針對 ILB App Service 環境,預設根網域為 appserviceenvironment.net。 ILB App Service 環境是客戶虛擬網路的內部,因此除了符合其虛擬網路環境的預設網域之外,客戶還可以使用根網域。 例如,Contoso Corporation 可能會針對僅在 Contoso 的虛擬網路內可解析且可連線的應用程式使用預設根網域 。internal.contoso.com 您可以存取 APP-NAME.internal.contoso.com來存取此虛擬網路中的應用程式。

自訂網域尾碼會套用至 App Service 環境。 這項功能與個別 App Service 執行個體上的自訂網域繫結不同。

如果用於自訂網域尾碼的憑證包含 的 *.scm.CUSTOM-DOMAIN主體替代名稱 (SAN) 項目,則原始檔控制管理程式 (SCM) 站台將可從 APP-NAME.scm.CUSTOM-DOMAIN連線到 。 您只能使用基本驗證,透過自訂網域存取 SCM。 單一登入只有在您使用預設根網域時才可用。

當您在 ILB App Service Environment 上管理憑證時,請考慮下列因素:

  • 將有效的 SSL 或傳輸層安全性 (TLS) 憑證儲存在 的 Azure 金鑰保存庫中。PFX 格式。

  • 請確定憑證小於 20 KB。

  • 針對選取的自訂網域名稱使用萬用字元憑證。

  • 為您的 App Service 環境設定系統指派或使用者指派的受控識別。 受控識別會針對 SSL 或 TLS 憑證所在的 Azure 金鑰保存庫進行驗證。

  • 預期 App Service 環境會在金鑰保存庫中輪替之後的 24 小時內套用憑證變更。

Azure 金鑰保存庫的網路存取

  • 您可以公開存取金鑰保存庫,或透過可從部署 App Service 環境的子網路連線的私人端點存取金鑰保存庫。

  • 如果您使用公用存取,您可以保護金鑰保存庫,只接受來自 App Service 環境輸出 IP 位址的流量。

  • App Service 環境會在存取金鑰保存庫時,使用平台輸出 IP 位址作為來源位址。 您可以在 Azure 入口網站的 [IP 位址] 頁面中找到此 IP 位址。

DNS 組態

若要使用自訂網域尾碼存取 App Service 環境中的應用程式,請設定您自己的 DNS 伺服器,或在自訂網域的 Azure 私人 DNS 區域中設定 DNS。 如需詳細資訊,請參閱 DNS 組態

保護唯一的預設主機名稱

安全的唯一預設主機名稱功能提供了一個長期解決方案,以保護您的資源免受懸空 DNS 條目和子網域接管的影響。 如果您針對 App Service 資源啟用此功能,則組織外部的任何人都無法重新建立具有相同預設主機名稱的資源。 這種保護可防止惡意行為者利用懸而未決的 DNS 條目並接管子網域。 如需詳細資訊,請參閱 保護唯一的預設主機名稱

考量

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

可靠性

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

可用性

安全性

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

成本優化

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

探索執行此案例的成本。 下列範例成本設定檔是以預期流量為基礎。 所有服務都在成本計算器中預先設定。

  • 小型部署:此定價範例代表每月為數千名使用者提供服務的最低生產層級執行個體的元件。 應用程式會使用隔離 Web 應用程式的單一小型執行個體。 每個額外的元件都會擴展到基本層,以將成本降至最低,同時確保服務等級協定 (SLA) 支援和足夠的容量來處理生產層級工作負載。

  • 中型部署:此定價範例代表每月為大約 100,000 名使用者提供服務的中等規模部署的元件。 中等大小的單一隔離 App Service 執行個體會管理流量。 應用程式閘道和 SQL 資料庫容量會增加,以支援新增的工作負載。

  • 大型部署:此定價範例代表每月為數百萬使用者提供服務並移動 TB 資料的大規模應用程式的元件。 此使用層級需要部署在多個區域中並由 Azure 流量管理員前面部署的高效能隔離層 Web 應用程式。 預估包括流量管理員和額外的應用程式閘道和虛擬網路執行個體。 SQL 資料庫的容量會增加,以支援新增的工作負載。

若要查看特定使用案例的定價,請變更適當的變數以符合您的預期流量。

效能效率

效能效率是指工作負載能夠有效率地調整以符合使用者需求。 如需詳細資訊,請參閱 效能效率的設計檢閱檢查清單

參與者

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

主要作者:

  • 尼古拉斯·麥科勒姆 |首席客戶工程師

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

下一步