安全部署做法建議
適用於此 Power Platform Well-Architected 卓越運營清單建議:
OE:10 | 明確定義工作負載的安全部署做法。 強調小型、增量、品質控制的發佈方法的理想。 使用現代部署模式來控制風險。 考慮常規部署和緊急或修補程式部署。 |
---|
本指南介紹了使用安全部署做法的建議。 安全部署程序和程序定義如何安全地對工作負載進行變更和部署。 實施這些策略需要您從管理風險的角度來考慮部署。 通過實施這些做法,您可以最大限度地降低部署中人為錯誤的風險,並限制有問題的部署對用戶的影響。
關鍵設計原則
實施安全部署做法時,需要牢記以下重要準則:
- 安全性和一致性:對生產工作負載的所有更改本質上都存在風險,必須以安全性和一致性為重點進行。
- 運行狀況模型:部署必須通過運行狀況檢查,然後才能開始漸進式公開的每個階段。
- 問題檢測:檢測到問題時,應立即停止部署並啟動恢復。
以下各節針對每一點提供了詳細建議。
安全性和一致性
無論您是將更新部署到應用程式代碼、基礎設施即代碼 (IaC)、功能標誌還是配置,都會給工作負載帶來風險。 沒有低風險的生產部署。 每個部署都必須遵循標準模式,並且應該自動化以強制一致性並最大限度地減少人為錯誤的風險。 您的工作負載供應鏈和部署管線必須可靠、安全且具有明確定義的部署標準,這一點至關重要。 將每個部署視為可能的風險,並對每個部署進行相同等級的風險管理。
雖然存在風險,您仍應繼續對工作負載進行定期變更。 未能部署定期更新會帶來其他風險,例如必須透過部署解決的安全漏洞。 在設計工作負載開發供應鏈 的建議中瞭解更多資訊。
頻繁的小型部署優於不頻繁的大型部署。 當出現問題時,小的更改更容易解決,並且頻繁的部署可以幫助您的團隊在部署過程中建立信心。 當您在部署期間遇到異常情況時,透過檢查工作負載流程來從生產中學習也很重要。 您可能會發現基礎架構或部署的設計有弱點。 當部署期間出現問題時,請確保無指責的事後分析是捕獲事件經驗教訓的過程的一部分。
健康情況模型
開發強大的健康情況模型,做為可觀測性監控平台和可靠性策略的一部分。 您的健康情況模型應該提供對工作負載的元件和整體健康狀況的深入可見性。 在推出后密切監控運行狀況指標。 如果您在推出期間收到有關運行狀況更改的警報,請立即調查問題並確定下一步操作,例如回滾更改。 如果使用者未報告問題並且所有運行狀況指示器都保持綠色,則應繼續推出。 請務必在運行狀況模型中包含使用情況指標,以幫助確保缺少使用者報告的問題和負面運行狀況信號不會隱藏問題。 在執行故障模式分析 的建議中瞭解更多資訊。
問題偵測
當您的部署導致其中一個轉出群組出現問題時,必須立即停止轉出。 收到警報後立即調查問題的原因和影響的嚴重性。 從問題中恢復可以包括:
- 通過撤銷在部署中所做的更改並恢復到上一個已知的工作配置來回滾 。
- 通過在推出期間解決問題來前 滾。 您可以透過應用修補程式或以其他方式最大程度地減少問題來解決推出過程中的問題。
- 使用上一個已知的工作配置部署新的基礎設施 。
復原更改可能會很複雜,尤其是資料庫、架構或其他有狀態元件更改。 安全部署實踐指南應提供有關如何根據工作負載的數據資產設計處理數據更改的明確說明。 同樣,必須仔細處理前滾,以確保不會忽視安全的部署過程,並確保安全地執行修補程式或其他最小化工作。
一般建議
在組建成品中實作版本控制,以協助確保您可以在必要時復原和推進。
使用發佈流程或基於主幹的分支結構,而不是 Gitflow 或基於環境的分支結構,這可以在整個開發團隊中強制執行緊密同步的協作。
盡可能多地自動化您的安全部署實踐。 在實施自動化 的建議中瞭解更多資訊。
使用持續整合 (CI) 實踐定期將程式碼變更整合到儲存庫中。 CI 做法可以幫助您識別整合衝突並減少大型、有風險的合併的可能性。 在持續集成的 Recommendations 中瞭解更多資訊。
使用功能標誌選擇性地啟用或停用新功能或生產中的變更。 功能標誌可以幫助您控制新程式碼的暴露,並在出現問題時快速回滾部署。
將變更部署到反映生產環境的暫存環境。 做法環境可讓您在部署到實際環境之前在受控設定中測試變更。
建立部署前檢查,包括程式碼審查、安全掃描和合規性檢查,以協助確保變更可以安全部署。
實施斷路器以自動停止流向遇到問題的服務的流量,並説明防止系統進一步降級。
應急協定
建立規範性協定,定義如何針對修補程式或緊急問題 (如安全漏洞或漏洞暴露) 調整安全部署流程。 例如,您的應急協定可能包括:
- 提升審批階段加速
- 冒煙測試和集成測試加速
- 減少烘焙時間
在某些情況下,緊急情況可能會限制品質和測試門,但門仍應像帶外練習一樣盡快執行。 確保您定義誰可以在緊急情況下批准安全部署加速,以及必須滿足哪些條件才能批准加速。 將您的應急方案與應急 回覆計劃 對齊,以幫助確保所有緊急情況都按照相同的方案處理。
考量因素
元件和維護安全部署做法非常複雜。 您能否成功地全面實施穩健的標準,取決於您在軟體開發的許多領域的實踐的成熟度。 使用自動化、僅 IaC 進行基礎設施更改、分支策略的一致性、功能標誌和其他做法有助於確保安全部署。 使用本指南來最佳化您的工作量,並隨著您的做法發展告知您的改進計劃。
Power Platform 簡易化
管道旨在通過 Power Platform 將 ALM 自動化以及持續集成和持續交付 (CI/CD) 功能引入服務,為 Power Platform Dynamics 365 客戶實現應用程式生命週期管理 (ALM) 的大眾化。
Microsoft Power Platform Build Tools for Azure DevOps 可用於自動執行與所構建 Power Platform應用程式相關的常見構建和部署任務。
GitHub Actions 使 Power Platform 開發人員能夠構建自動化的軟體開發生命週期工作流。 借助 Microsoft Power Platform 的 GitHub 動作,您可以在存放庫中建立工作流程,用來組建、測試、打包、發佈及部署應用程式;執行自動化以及管理機器人和 Power Platform 所建立的其他元件。
ALM Accelerator 是一個開源工具,由一組應用程式、腳本和管道組成,旨在自動化持續集成/持續交付過程。
使用 Azure Pipelines 自動執行測試。
解決方案 中的環境變數存儲參數鍵和值,然後用作其他應用程式對象的輸入。 將參數與取用物件分開可在同一環境中或將解決方案移轉到其他環境時變更值。
Power Platform 環境 提供可説明您回滾的時間點還原功能。