Azure Spring Apps 登陸區域加速器的安全性考慮
本文說明 Azure Spring Apps 中裝載之工作負載的安全性考慮和建議。 本指南可協助您建立能夠偵測、防止及回應安全性弱點的工作負載。
受保護的應用程式無法保證整個工作負載的安全性。 身為工作負載擁有者,評估人為錯誤,並評估受攻擊面,例如應用程式與應用程式互動的基礎結構服務。
Azure 提供網路、身分識別和數據的安全性控制,以支援深度防禦策略。 許多控件都內建於 Azure Spring Apps 中。 本指南是以 Azure Spring Apps 的 Azure 安全性基準為基礎,其衍生自 Azure 安全性基準 2.0 版。 基準檢驗提供如何在 Azure Spring Apps 雲端上執行之工作負載的建議。
集中式小組在平臺中提供網路和身分識別控制。 它們提供護欄,以維護 Azure 中平臺、應用程式和資源的控制權。 為工作負載提供的應用程式登陸區域訂用帳戶會預先布建原則,這些原則繼承自管理群組。
當您設計工作負載時,請確定您擁有的安全性控件與中央控件一致。 此設計受限於集中式安全性小組進行的定期檢閱。 定期檢閱與中央小組的安全性控制與平台原則,以確定工作負載需求已容納。
如需平台設計的相關信息,請參閱:
設計考量
內部流量。 限制或允許內部資源之間的流量遵循符合商務風險的企業分割原則。 如有必要,請透過虛擬網路和子網建立隔離界限。 實作規則來限制網路之間的流量。
外部流量。 使用 Azure 原生資源來保護您的工作負載資源免受外部網路的攻擊,包括:
- 分散式阻斷服務 (DDoS) 攻擊。
- 應用程式特定的攻擊。
- 未經請求且潛在的惡意因特網流量。
身分識別管理。 使用Microsoft Entra 功能,例如受控識別、單一登錄、強式驗證、受控識別,以及條件式存取,透過 Microsoft Entra ID 提供驗證和授權。
安全性監視。 系統應該有監視工具來偵測威脅,並使用組織目標和 Azure 安全性基準檢驗控件來測量合規性。 這些工具應與中央安全性資訊和事件管理 (SIEM) 系統整合,以全面檢視安全性狀態。
傳輸中的資料。 元件、位置或 API 呼叫之間傳輸的數據必須加密。
待用資料。 所有保存的數據,包括組態,都必須加密。
治理原則。 您應該偵測與組織所設定的合規性標準偏差。 Azure 原則 提供應套用的內建定義來偵測偏差。 當您套用原則時,它不會確保您完全符合控件的所有需求。 內建定義中可能有不符合規範的標準。
認證暴露。 您可以使用身分識別或秘密來部署和執行程式碼、組態和保存的數據。 當您存取資產時,請確定已檢查認證。
憑證管理。 憑證必須根據永遠不信任的 零信任 原則載入,且必須無認證。 只有在授與憑證存取權之前先驗證身分識別,才信任共用憑證。
一致的部署。 使用基礎結構即程式代碼 (IaC) 將所有 Azure 資源的布建和設定自動化,並強化安全性狀態。
設計建議
網路作為周邊
這些網路控制會建立隔離界限,並限制進出應用程式的流程。
網路分割
當您部署 Azure Spring Cloud 服務資源時,請建立或使用現有的虛擬網路。
透過子網在虛擬網路內建立隔離。 使用 NSG 規則來限制或允許內部資源之間的流量。 使用 適用於雲端的 Microsoft Defender 的自適性網路強化功能,進一步強化限制埠和來源IP的NSG組態。 根據外部網路流量規則的組態。
當您建立安全性規則時,請使用 Azure 服務標籤 來定義網路存取控制,而不是特定的 IP 位址。 當您在適當規則的來源或目的地欄位中指定服務標籤名稱時,請允許或拒絕對應服務的流量。 Microsoft管理服務標籤所涵蓋的位址前綴。 它會在地址變更時自動更新服務標籤。
AzureSpringCloud
在網路安全組或 Azure 防火牆 上使用服務標籤,以允許流量流向 Azure Spring Apps 中的應用程式。
如需詳細資訊,請參閱 在虛擬網路中執行 Azure Spring Cloud 的客戶責任。
與專用網的連線
在共置的環境中,使用 Azure ExpressRoute 或 Azure 虛擬專用網 (VPN) 在 Azure 數據中心與內部部署基礎結構之間建立私人連線。 ExpressRoute 連線 不會透過公用因特網,其可靠性、更快速的速度和較低的延遲。
針對 點對站 VPN 和站對站 VPN,請將內部部署裝置或網路連線到虛擬網路。 使用這些 VPN 選項和 Azure ExpressRoute 的任何組合。
若要在 Azure 中連線兩個或多個虛擬網路,請使用 虛擬網路對等互連。 對等互連虛擬網路之間的網路流量為私用。 這種類型的流量會保留在 Azure 骨幹網路上。
來自外部網路的攻擊
使用整合式 Web 應用程式防火牆 (WAF) Azure 應用程式閘道,對輸入流量進行控制,並封鎖應用層攻擊。
使用 Azure 防火牆 來限制來自應用程式的輸出流量。 您可以使用 Azure 防火牆 來保護應用程式和服務,以防止來自因特網和其他外部位置的潛在惡意流量。
Azure 防火牆 威脅情報型篩選可以傳送警示或封鎖來自已知惡意IP位址和網域的流量。 IP 位址和網域來自 Microsoft 威脅情報摘要。 需要承載檢查時,請從 Azure Marketplace 部署具有承載檢查功能的第三方入侵檢測/入侵預防系統(IDS/IPS)。 或者,您可以使用主機型 IDS/IPS 或主機型 端點偵測 和回應 (EDR) 解決方案,搭配或取代網路型 IDS/IPS。
若要保護工作負載資源免受 DDoS 攻擊,請在 Azure 虛擬網路上啟用 DDoS 標準保護 。 使用 適用於雲端的 Microsoft Defender 來偵測網路相關資源的設定錯誤風險。
保護網域名稱服務 (DNS)
使用 Azure DNS 來裝載 DNS 網域。 保護 DNS 區域和記錄免於不良動作專案。 基於該目的,建議使用 Azure 角色型存取控制 (Azure RBAC) 和資源鎖定。 如需詳細資訊,請參閱防止 DNS 項目懸置並避免子網域接管。
以身分識別作為周邊
Azure 會透過 Microsoft Entra ID 提供身分識別控制。 應用程式有許多功能,例如單一登錄、強身份驗證、受控識別和條件式存取。 如需架構設計選項的相關信息,請參閱 Azure Spring Apps 登陸區域加速器的身分識別考慮。
下一節說明這些選項的安全性層面。
與集中式身分識別系統整合
Azure 登陸區域會使用 Microsoft Entra 識別碼作為預設身分識別和存取管理服務。 若要控管工作負載服務,建議使用集中式Microsoft Entra ID。 集中式Microsoft Entra標識碼包括存取組織的網路資源、Azure 儲存體、金鑰保存庫,以及其他應用程式相依的服務。
如果您想要授與 Azure Spring Apps 數據平面的存取權,請使用 Azure Spring Cloud Data Reader 內建角色。 此角色提供唯讀許可權。
建議使用下列Microsoft Entra 功能:
應用程式身分識別。 應用程式可能需要存取其他 Azure 服務。 例如,如果想要從 Azure 金鑰保存庫 擷取秘密。
搭配 Azure Spring Apps 使用 受控識別 ,讓應用程式可以使用 Microsoft Entra 識別碼向其他服務驗證自己。 請避免針對此目的使用服務主體。 受控識別驗證程式不會使用原始碼或組態檔中硬式編碼的認證。
如果您需要搭配憑證認證使用服務主體並回復至用戶端密碼,建議您使用 Microsoft Entra ID,在 資源層級建立具有限制許可權的服務主體 。
在這兩種情況下,金鑰保存庫 可以搭配 Azure 受控識別使用。 運行時間元件,例如 Azure 函式,可用來從 金鑰保存庫 擷取秘密。 如需詳細資訊,請參閱 Azure 金鑰保存庫 中的驗證。
Microsoft Entra 單一登入 (SSO) 。 建議Microsoft Entra SSO ,從雲端或內部部署中執行的其他應用程式或裝置驗證應用程式存取權。 SSO 為內部和外部使用者提供身分識別管理,例如合作夥伴或廠商。
強身份驗證控件。 Microsoft Entra ID 支援透過多重要素驗證 (MFA) 和強密碼無密碼方法的強身份驗證控制。 對於系統管理員和特殊許可權使用者,請使用最高層級的強式驗證方法,以在發生缺口時減少爆炸半徑。 然後將適當的強身份驗證原則推出給其他使用者。 如需詳細資訊,請參閱 在 Azure 中啟用 MFA 和 無密碼驗證選項,以取得 Microsoft Entra ID。
資源的條件式存取。 Azure Spring Apps 支援 Microsoft Entra 條件式存取 ,以取得更細微的訪問控制,其依據使用者定義條件。 您可以設定條件,以包含特定IP範圍需要使用 MFA 登入的使用者登入。 這些 條件式存取原則 只會套用至驗證至 Microsoft Entra ID 的用戶帳戶,以存取和管理應用程式。 這些原則不適用於用來連線至工作負載資源的服務主體、金鑰或令牌。
特殊權限存取。 實作 Microsoft Entra Privileged Identity Management,以確保整個 Azure 環境中的最低權限存取和深入報告。 Teams 應該開始週期性存取權檢閱,以確保正確的人員和服務原則具有目前且正確的授權等級。
數據控制件
網路和身分識別控制會限制對應用程式的存取,但數據必須受到保護。 加密可確保數據完整性,而且是必須套用以減輕威脅的重要安全性功能。
傳輸中資料
傳輸的數據容易受到頻外攻擊,例如流量擷取。 使用加密來確保攻擊者無法輕易讀取或修改該數據。 Azure 提供 Azure 資料中心之間傳輸數據的加密。
Azure Spring Apps 支援使用傳輸層安全性 (TLS) v1.2 或更高版本進行加密。 TLS 透過身分識別和信任提供安全通訊,並加密所有類型的通訊。 您可以使用任何類型的 TLS 憑證。 例如,證書頒發機構單位所發行的憑證、延伸驗證憑證、支援任意數目子域的通配符憑證,或開發及測試環境的自我簽署憑證。
加密對於外部和公用網路上的流量而言非常重要。 根據預設,所有公用端點都必須針對輸入流量使用 HTTPS。 透過 Azure Resource Manager API 呼叫設定 Azure Spring Apps 服務的管理呼叫必須透過 HTTPS。
針對 HTTP 流量,請確定連線到 Azure 資源的用戶端可以交涉 TLS v1.2 或更新版本。 請勿使用過時的版本或通訊協定。 停用弱式加密。
針對遠端管理,而不是使用未加密的通訊協定,請使用適用於 Linux 的安全殼層 (SSH) 或適用於 Windows 的遠端桌面通訊協定 (RDP) 和 TLS。
待用資料
工作負載需要來源和成品、組態伺服器設定、應用程式設定和記憶體的存放區狀態。 待用伺服器端數據會受到加密 Azure 儲存體 保護。 儲存體會自動使用Microsoft管理的金鑰來加密內容。
設定伺服器快取、從上傳的來源建置的運行時間二進制檔,以及應用程式存留期期間的應用程式記錄會儲存至 Azure 受控磁碟。 此數據 會自動加密。 從用戶上傳的來源建置的容器映像會加密並儲存在 Azure Container Registry 中。
針對支援案例,Microsoft需要存取相關客戶數據時,請使用 客戶加密箱Microsoft Azure ,因為您的小組或組織必須核准存取權。
監視和警示帳戶異常
建議 適用於雲端的 Microsoft Defender 接收可疑活動的警示,例如訂用帳戶中過多的失敗驗證嘗試或已淘汰的帳戶。
Azure Spring Apps 與 Microsoft Entra ID 整合,可追蹤登入活動,包括具風險的登入。您可以使用稽核記錄來偵測Microsoft Entra 識別碼內任何資源的變更。 數據會與 Azure 監視器整合,並可匯出至 sentinel Microsoft。
如需詳細資訊,請參閱
- Microsoft Entra 識別碼中的稽核活動報告
- 檢視Microsoft Entra 具風險的登入
- 在 適用於雲端的 Microsoft Defender 中監視使用者的身分識別和存取活動
- 適用於雲端的 Microsoft Defender 威脅情報防護模組中的警示
治理原則
名為 Azure Spring Cloud 的 Azure 內建定義應該使用網路插入 ,讓您強制執行 網路控制。
- 從因特網偵測應用程式的隔離界限實作。
- 讓 Azure Spring Apps 能夠與其他虛擬網路中的內部部署數據中心或 Azure 服務中的專用網通訊。
- 控制 Azure Spring Apps 虛擬網路的輸入和輸出網路通訊。
憑證管理
與後端服務或內部部署系統通訊時,應用程式可能需要公用 TLS 憑證。 您可以在 金鑰保存庫 中上傳憑證。
若要從 金鑰保存庫 安全地載入憑證,Spring Boot 應用程式會使用受控識別和 Azure 角色型存取控制 (RBAC)。 Azure Spring Apps 使用提供者服務主體和 Azure 角色型訪問控制。 此安全載入是使用 Azure 金鑰保存庫 Java 密碼編譯架構 (JCA) 提供者所提供。 如需詳細資訊,請參閱適用於 Java 的 Azure 金鑰保存庫 JCA 用戶端連結庫。
如果您的 Spring 程式代碼、Java 程式代碼或開放原始碼連結庫,例如 OpenSSL,依賴 JVM 預設 JCA 鏈結以隱含方式將憑證載入 JVM 的信任存放區,您可以將 TLS 憑證從 金鑰保存庫 匯入 Azure Spring Apps。 在應用程式中使用這些憑證。 如需詳細資訊,請參閱 在 Azure Spring Apps 中使用應用程式中的 TLS/SSL 憑證。
認證掃描
實作認證掃描器,以識別可存取程式代碼、組態和保存數據的認證。 認證掃描器鼓勵您將探索到的認證移至更安全的位置,例如 金鑰保存庫。
針對 GitHub,您可以使用原生秘密掃描功能來識別程式代碼中的認證或其他形式的秘密。
如需詳細資訊,請參閱