保護你的 Azure App 服務 部署

Azure App 服務 提供一個平台即服務(PaaS)環境,讓您能建置、部署及擴展網頁應用程式、行動應用後端、RESTful API 及功能應用。 部署此服務時,遵循安全最佳實務以保護您的應用程式、資料與基礎設施非常重要。

本文提供如何最佳保護 Azure App 服務 部署的指引。

Azure App 服務 會主動保護及強化其平台元件,包括 Azure 虛擬機(VM)、記憶體、網路連線、Web 架構,以及管理和整合功能。 App Service 會持續進行嚴格的合規性檢查,以確保:

如需 Azure 中基礎結構和平臺安全性的詳細資訊,請參閱 Azure 信任中心。

本文中的安全性建議會實作零信任原則:「明確驗證」、「使用最低許可權存取」和「假設違規」。 如需完整的 零信任 指引,請參閱 零信任 指引中心。

服務特定的安全性

Azure App 服務 有獨特的安全考量,你應該加以處理,以確保你網頁應用程式的整體安全性。

  • 關閉基本認證:關閉 FTP 與 SCM 端點的基本使用者名稱與密碼驗證,改用 Microsoft Entra ID 認證,該認證提供基於 OAuth 2.0 的憑證認證並提升安全性。 如需更多資訊,請參閱 在 Azure App 服務 部署中停用基本驗證。

  • 安全 FTP/FTPS 部署:在使用 FTP 部署時,請停用 FTP 存取或強制僅限 FTPS 模式,以防止憑證與內容以明文形式傳輸。 欲了解更多資訊,請參閱使用 FTP/S 部署您的應用程式至 Azure App 服務。

  • 實現完全網路隔離:利用 App Service 環境在你自己的 Azure 虛擬網路實例中,將應用程式運行於專用的 App Service 環境中。 此配置提供與共用基礎設施的完全網路隔離,設有專用公共端點、內部負載平衡器(ILB)選項,僅供內部存取,並能在網路應用防火牆後使用 ILB 進行企業級保護。 欲了解更多資訊,請參閱《Azure App 服務 環境簡介》。

  • 實施 DDoS 防護:在您的 App Service 應用程式前部署 Azure Front Door 搭配 Web 應用程式防火牆(WAF),以吸收並過濾網路層及應用層的 DDoS 攻擊,防止攻擊抵達您的應用程式。 欲了解更多資訊,請參閱 Azure Front Door 與 DDoS 防護。

網路安全性

App Service 支援許多網路安全功能,以鎖定您的應用程式並防止未經授權的存取。

  • 設定私人端點:透過 Azure Private Link 將流量路由至 App Service,消除公共網路暴露,確保私人網路中的客戶端安全連線。 欲了解更多資訊,請參閱 在 Azure App 服務 中使用私人端點。

  • 實施虛擬網路整合:透過讓您的應用程式能存取 Azure 虛擬網路中的資源,同時保持與公共網際網路的隔離,來保護您的外撥流量。 如需詳細資訊,請參閱將您的應用程式與 Azure 虛擬網路整合 (機器翻譯)。

  • 設定 IP 存取限制:透過定義允許清單,列出可存取應用程式的 IP 位址與子網,封鎖所有其他流量,限制對應用程式的存取。 你可以定義由子網遮罩定義的個別 IP 位址或範圍,並在 Windows 應用程式中透過 web.config 檔案設定動態 IP 限制。 如需詳細資訊,請參閱設定 Azure App 服務 存取限制。

  • 設定服務端點限制:利用服務端點鎖定虛擬網路中特定子網的入站存取,服務端點與 IP 存取限制協同運作,提供網路層級過濾。 如需詳細資訊,請參閱 Azure App 服務 存取限制。

  • 使用網頁應用程式防火牆:透過在應用程式服務前方實施具備 Web 應用防火牆功能的 Azure Front Door 或應用閘道,強化對常見網路漏洞與攻擊的防護。 更多資訊,請參閱Azure 應用程式閘道 上的 Azure Web 應用程式防火牆。

身分識別與存取權管理

妥善管理身份與存取控制,對於保護您的 Azure App 服務 部署免於未經授權使用及潛在憑證竊取至關重要。

  • 啟用外出請求的受管理身份:透過管理身份,從應用程式安全認證 Azure 服務,且不需在程式碼或設定中儲存憑證,免除管理服務主體與連線字串的需求。 受管理身份會在 Microsoft Entra ID 中自動提供一個管理身份,供你的應用程式在向其他 Azure 服務(如 Azure SQL Database、Azure Key Vault 和 Azure 儲存體)發出請求時使用。 App Service 支援系統指派與使用者指派的受管理身份。 如需詳細資訊,請參閱 為 App Service 和 Azure Functions 使用受控身分識別。

  • 設定認證與授權:實作 App Service 認證/授權,以 Microsoft Entra ID 或其他身份提供者保護您的應用程式,防止未經授權存取,除非撰寫自訂驗證碼。 內建的認證模組會先處理網頁請求,然後再傳給你的應用程式碼,並支援多個提供者,包括 Microsoft Entra ID、Microsoft 帳號、Facebook、Google 和 X。更多資訊請參閱 Azure App 服務 中的認證與授權。

  • 為管理操作實施基於角色的存取控制:透過依據最小權限原則,指派使用者與服務主體最低必要的 Azure RBAC 權限,控制誰能管理與配置您的 App Service 資源(管理平面)。 這控制了對建立應用程式、修改設定及管理部署等操作的管理存取,與應用層級認證(Easy Auth)或應用程式對資源認證(管理身份)分開。 欲了解更多資訊,請參閱 Azure 內建的網頁與行動角色。

  • 實施代為驗證:將遠端資源存取權委派給使用 Microsoft Entra ID 作為認證提供者的使用者。 您的 App Service 應用程式可以執行服務的委派登入,例如 Microsoft Graph 或遠端 App Service API Apps。 欲了解更多資訊,請參閱 Azure App 服務 中的「認證與授權使用者端對端」。

  • 啟用互惠 TLS 認證:當應用程式需要驗證客戶端身份時,特別是針對 B2B 情境或內部應用,要求客戶端憑證以增加安全性。 欲了解更多資訊,請參閱「配置 Azure App 服務 的 TLS 互認證」。

資料保護

保護傳輸中及靜止資料對於維護應用程式及其資料的機密性與完整性至關重要。

  • 強制執行 HTTPS:啟用僅限 HTTPS 模式,將所有 HTTP 流量重新導向至 HTTPS,確保客戶端與應用程式間的所有通訊皆加密。 預設不是啟用僅限 HTTPS 的重定向,所以要明確啟用它;請注意,你應用程式的預設網域 <app_name>.azurewebsites.net 名稱已經可以透過 HTTPS 存取。 更多資訊請參閱 「配置一般設定」。

  • 設定 TLS 版本:透過將最低 TLS 版本設定為 1.2 或更高版本,並停用過時且不安全的協定,以防止潛在漏洞。 App Service 支援 TLS 1.3(最新版本)、TLS 1.2(預設最低標準)以及 TLS 1.1/1.0(僅向下相容)。 為您的網頁應用程式和 SCM 網站設定最低 TLS 版本。 更多資訊請參閱 「配置一般設定」。

  • 管理 TLS/SSL 憑證:透過正確設定的 TLS/SSL 憑證來建立可信連線,保護自訂網域的安全。 App Service 支援多種憑證類型:免費的 App Service 管理憑證、App Service 憑證、第三方憑證,以及從 Azure Key Vault 匯入的憑證。 如果你設定自訂網域,請用 TLS/SSL 憑證來保護它,讓瀏覽器能建立安全的 HTTPS 連線。 欲了解更多資訊,請參閱 在 Azure App 服務 中新增並管理 TLS/SSL 憑證。

  • 將秘密儲存在金鑰庫中:透過將資料庫憑證、API 令牌和私鑰等敏感設定值存於 Azure Key Vault 並使用受管理身份存取,而非存放在應用程式設定或程式碼中,以保護這些敏感設定值。 您的 App Service 應用程式可以透過管理身份驗證安全存取 金鑰保存庫。 如需詳細資訊,請參閱應用服務和 Azure 功能的 金鑰保存庫 參考資料。

  • 避免在應用程式設定中硬編碼祕密:不要將祕密存放在程式碼或設定檔中。 App Service 會將應用程式設定和連線字串加密保存,並在注入應用程式程序記憶體前解密,但對於敏感的秘密,偏好使用 金鑰保存庫 參考,這樣秘密就集中管理,不會儲存在應用程式設定中。 利用你程式語言的標準模式,將這些值作為環境變數存取。 如需詳細資訊,請參閱設定應用程式設定。

  • 安全的遠端連線:存取遠端資源時,務必使用加密連線,即使後端資源允許未加密連線。 對於像 Azure SQL Database 和 Azure 儲存體 這類 Azure 資源,連線會留在 Azure 內部,不會跨越網路邊界。 對於虛擬網路資源,請使用虛擬網路與點對站 VPN 的整合。 對於本地資源,建議使用結合 TLS 1.2 的混合連線,或透過站對站 VPN 整合虛擬網路。 確保 Azure 後端服務僅允許來自您的應用程式的最小可能 IP 位址集合。 欲了解更多資訊,請參閱「尋找外撥IP」。

記錄和監視

實施全面的日誌記錄與監控,對於偵測潛在的安全威脅及排除 Azure App 服務 部署問題至關重要。

  • 啟用診斷日誌:設定 Azure App 服務 診斷日誌,以追蹤應用程式錯誤、網頁伺服器日誌、失敗請求追蹤及詳細錯誤訊息,以識別安全問題並排除故障。 欲了解更多資訊,請參閱 Azure App 服務 中的應用程式啟用診斷日誌。

  • 整合 Azure 監視器:設定 Azure 監視器 以收集並分析來自 App Service 的日誌與指標,實現全面監控與警示,針對安全事件及效能問題提供警示。 欲了解更多資訊,請參閱 Azure App 服務 中的監控應用程式。

  • 配置應用程式洞察:實施應用洞察,以獲得對應用程式效能、使用模式及潛在安全問題的詳細資訊,並具備即時監控與分析功能。 如需詳細資訊,請參閱監視 Azure App 服務 效能。

  • 設定安全警示:建立自訂警示,通知您異常使用模式、潛在的安全漏洞或影響 App Service 資源的服務中斷。 如需詳細資訊,請參閱使用 Azure 監視器建立、檢視及管理計量警示。

  • 啟用健康檢查:設定健康檢查以監控應用程式的運作狀態,並在可能的情況下自動修復問題。 如需詳細資訊,請參閱使用健康檢查來監控 App Service 執行個體。

合規性和治理

建立適當的治理並確保符合相關標準,對於 Azure App 服務 應用程式的安全運作至關重要。

  • 實施 Azure 政策:透過建立並指派 Azure 原則 定義,審核並執行合規要求,來執行全組織 App Service 部署的安全標準。 欲了解更多資訊,請參閱 Azure 原則 Regulatory Compliance controls for Azure App 服務。

  • 檢視安全建議:定期使用適用於雲端的 Microsoft Defender來評估您的App Service安全狀況,以識別並修復安全漏洞與錯誤設定。 欲了解更多資訊,請參閱保護您的 Azure App 服務 網頁應用程式與 API。

  • 進行安全評估:定期對您的 App Service 應用程式進行安全評估與滲透測試,以驗證存取限制、TLS 設定及 Easy Auth 設定。 遵循 Microsoft 雲端滲透測試的互動規則。 欲了解更多資訊,請參閱 滲透測試。

  • 維持法規遵循:指派內建的法規合規政策計畫(如 PCI DSS、HIPAA/HITRUST 或 ISO 27001),其中包含應用程式服務控制,以審核您的應用程式是否符合產業與地區的需求,特別是在資料保護與隱私方面。 如需詳細資訊,請參閱 Azure 原則中的法規合規性。

  • 實施安全的 DevOps 實務:建立安全的 CI/CD 管線以部署至 App Service;使用部署時段進行分階段驗證,關閉 SCM/FTP 端點的基本認證,改為基於管理身份的部署,並新增程式碼掃描與相依性檢查。 欲了解更多資訊,請參閱 部署最佳實務。

備份及復原

實施健全的備份與復原機制,對於確保您的 Azure App 服務 部署中業務持續性與資料保護至關重要。

  • 啟用自動備份:為您的 App Service 應用程式設定排程備份,確保在意外刪除、損壞或其他故障時,您能恢復應用程式與資料。 欲了解更多資訊,請參閱 Azure App 服務 中的「備份與還原您的應用程式」。

  • 配置備份保留:根據您的業務需求與合規需求,設定適當的備份保留期,確保關鍵資料能在所需時間內被保存。 欲了解更多資訊,請參閱 Azure App 服務 中的「備份與還原您的應用程式」。

  • 實施多區域部署:將關鍵應用程式部署於多個區域,以便在區域故障時提供高可用性與災難復原能力。 欲了解更多資訊,請參閱 教學:在 App Service 中建立高度可用的多區域應用程式。

  • 測試備份還原:定期測試備份還原流程,確保備份有效且能在需要時成功還原,驗證應用程式功能與資料完整性。 更多資訊請參閱 「從備份還原應用程式」。

  • 文件復原程序:建立並維護完整的復原程序文件,確保在服務中斷或災難發生時能迅速且有效地回應。 如需詳細資訊,請參閱 Azure App 服務 中的可靠性。