Azure App Service 中的安全性

本文說明 Azure App Service 如何協助保護您的 Web 應用程式、行動裝置應用程式後端、API 應用程式和函式應用程式。 它也會示範如何使用內建的 App Service 功能,進一步保護您的應用程式。

App Service 的平台元件 (包括 Azure VM、儲存體、網路連線、Web 架構、管理和整合功能) 會主動受到保護與強化。 App Service 會持續經歷加強的合規性檢查,以確保:

  • 您的應用程式資源受到保護免於遭受其他客戶的 Azure 資源威脅。
  • VM 執行個體和執行階段軟體會定期更新,以因應新發現的弱點。
  • 您的應用程式與其他 Azure 資源 (例如 SQL Database) 之間的祕密通訊 (例如連接字串) 仍在 Azure 內,不會跨越任何網路界限。 祕密會在儲存時一律加密。
  • 透過 App Service 連線功能 (例如混合式連線) 的所有通訊都會加密。
  • 透過 Azure PowerShell、Azure CLI、Azure SDK、REST API 等遠端管理工具進行的連線全都會加密。
  • 全天候威脅管理會保護基礎結構和平台,免於遭受惡意程式碼、分散式拒絕服務 (DDoS)、攔截式 (MITM) 和其他威脅。

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

下列各節說明如何進一步保護您的 App Service 應用程式免於遭受威脅。

HTTPS 和憑證

App Service 可讓您利用 HTTPS 保護您的應用程式。 建立應用程式後,您可以使用 HTTPS 存取應用程式的預設網域名稱 (<應用程式名稱>.azurewebsites.net)。 如果為應用程式設定自訂網域,則也應該使用 TLS/SSL 憑證保護其安全,以便用戶端瀏覽器可對自訂網域進行安全的 HTTPS 連線。 App Service 支援數種類型的憑證:

  • 免費 App Service 受控憑證
  • App Service 憑證
  • 協力廠商憑證
  • 從 Azure Key Vault 匯入的憑證

如需詳細資訊,請參閱在 Azure App Service 中新增 TLS/SSL 憑證

不安全的通訊協定 (HTTP、TLS 1.0、FTP)

為了保護應用程式以抵禦所有未加密的 (HTTP) 連線,App Service 會提供單鍵設定來強制使用 HTTPS。 甚至可以在未受保護的要求觸達您的應用程式碼之前加以拒絕。 如需詳細資訊,請參閱強制執行 HTTPS

業界標準 (例如 PCI DSS) 不再將 TLS 1.0 視為安全的。 App Service 可讓您藉由強制使用 TLS 1.1/1.2 來停用過時的通訊協定。

App Service 同時支援使用 FTP 和 FTPS 來部署您的檔案。 不過,應該使用 FTPS,而不是 FTP (如果全都可行)。 如有其中一個或兩個通訊協定都不在使用中,您應該停用它們

靜態 IP 限制

根據預設,App Service 應用程式會接受來自網際網路所有 IP 位址的要求,但是您可以限制存取一小部分的 IP 位址。 Windows 上的 App Service 可讓您定義允許存取您的應用程式的 IP 位址清單。 允許清單可以包含個別 IP 位址,或以子網路遮罩所定義的 IP 位址範圍。 如需詳細資訊,請參閱 Azure App Service 靜態 IP 限制

對於 Windows 上的 App Service,您也可以藉由設定 web.config 來動態限制 IP 位址。如需詳細資訊,請參閱動態 IP 安全性 <dynamicIpSecurity> (英文)。

用戶端驗證與授權

Azure App Service 會提供周全的使用者或用戶端應用程式驗證和授權。 啟用時,它可以將使用者和用戶端應用程式登入,而只需要使用很少或完全不需要應用程式碼。 您可以實作自己的驗證和授權解決方案,或允許 App Service 為您處理。 驗證和授權模組在將 Web 要求交給您的應用程式程式碼前加以處理,而且會在未經授權的要求觸達您的程式碼前予以拒絕。

App Service 驗證和授權支援多個驗證提供者,包括 Microsoft Entra ID、Microsoft 帳戶、Facebook、Google 和 Twitter。 如需詳細資訊,請參閱 Azure App Service 中的驗證與授權

服務對服務驗證

針對後端服務進行驗證時,App Service 會視您的需求而定,提供兩個不同的機制:

連線到遠端資源

您的應用程式可能需要存取三種類型的遠端資源:

在上述每種情況下,App Service 可讓您進行安全連線,但您仍應會發現安全性最佳作法。 例如,即使後端資源允許未加密的連線,但一律使用加密的連線。 此外,確定您的後端 Azure 服務允許最小一組 IP 位址。 您可以在 Azure App Service 中的輸入和輸出 IP 位址找到您應用程式的輸出 IP 位址。

Azure 資源

當您的應用程式連線到 Azure 資源 (例如 SQL DatabaseAzure 儲存體) 時,連線仍在 Azure 內,不會跨越任何網路界限。 不過,連線會通過 Azure 中的共用網路,因此務必確定您的連線已加密。

如果您的應用程式裝載於 App Service 環境中,您應該使用虛擬網路服務端點來連線到支援的 Azure 服務

Azure 虛擬網路內的資源

您的應用程式可以透過虛擬網路整合來存取 Azure 虛擬網路中的資源。 使用點對站 VPN 可建立與虛擬網路的整合。 應用程式可接著使用其私人 IP 位址,存取虛擬網路中的資源。 不過,點對站連線仍會在 Azure 中周遊共用的網路。

若要完全隔離您的資源與 Azure 中共用網路的連線,請在 App Service 環境中建立您的應用程式。 App Service 環境一律會部署至專用的虛擬網路,因此您的應用程式與虛擬網路內的資源之間的連線會完全隔離。 如需 App Service 環境中的其他層面,請參閱網路隔離

內部部署資源

您可以用三種方式安全地存取內部部署資源,例如資料庫:

  • 混合式連線 - 透過 TCP 通道,建立遠端資源的點對點連線。 使用 TLS 1.2 搭配共用存取簽章 (SAS) 金鑰,可以建立 TCP 通道。
  • 透過站對站 VPN 的虛擬網路整合 – 如 Azure 虛擬網路內的資源所述,但是虛擬網路可以透過站對站 VPN 連線到您的內部部署網路。 在此網路拓撲中,您的應用程式可以連接到內部部署資源,例如虛擬網路中的其他資源。
  • 採用站對站 VPN 的 App Service 環境 – 如 Azure 虛擬網路內的資源所述,但是虛擬網路可以透過站對站 VPN 連線到您的內部部署網路。 在此網路拓撲中,您的應用程式可以連接到內部部署資源,例如虛擬網路中的其他資源。

應用程式祕密

請勿將應用程式祕密 (例如資料庫認證、API 權杖和私密金鑰) 存放在您的程式碼或組態檔中。 普遍接受的方法是使用您所選語言的標準模式,將它們當作環境變數存取。 在 App Service 中,環境變數是透過應用程式設定 (以及特別適用於 .NET 應用程式的連接字串) 來定義。 應用程式設定和連接字串都會經過加密並儲存在 Azure 中,而且只會在應用程式啟動時,要插入您應用程式的程序記憶體之前解密。 加密金鑰會定期輪替。

或者,您可以整合 App Service 應用程式與 Azure Key Vault,以便進行進階祕密管理。 藉由利用受控識別存取 Key Vault,App Service 應用程式便可安全地存取您所需的祕密。

網路隔離

除了 [隔離式] 定價層,所有定價層都會在 App Service 中的共用網路基礎結構上執行您的應用程式。 例如,公用 IP 位址與前端負載平衡器會與其他租用戶共用。 [隔離式] 定價層可讓您在專屬 App Service 環境中執行您的應用程式,藉此完成網路隔離。 App Service 環境就會在您擁有的 Azure 虛擬網路執行個體中執行。 讓您能夠:

  • 透過具有專屬前端的專屬公用端點來提供您的應用程式。
  • 使用內部負載平衡器 (ILB) 來提供內部應用程式,只允許從 Azure 虛擬網路內部進行存取。 ILB 有來自私人子網路的 IP 位址,這可讓您的應用程式與網際網路完全隔離。
  • 使用 Web 應用程式防火牆 (WAF) 後方的 ILB。 WAF 可為您的公開應用程式提供企業層級保護,例如 DDoS 保護、URI 篩選和 SQL 插入式攻擊的防護。

DDoS 保護

針對 Web 工作負載,強烈建議使用 Azure DDoS 保護Web 應用程式防火牆來防範新興的 DDoS 攻擊。 另一個選項是部署 Azure Front Door 和 Web 應用程式防火牆。 Azure Front Door 提供平台層級保護來防範網路層級 DDoS 攻擊

如需詳細資訊,請參閱 Azure App Service 環境簡介