解決方案構想
本文說明解決方案概念。 您的雲端架構師可以使用本指南,協助視覺化此架構的一般實作的主要元件。 以本文為起點,設計符合您工作負載具體要求的完善解決方案。
此解決方案構想展示了使用 GitHub 作為基礎架構即程式碼(IaC)的 DevSecOps 管線。 透過將基礎設施定義視為真實來源,工作負載能在整個部署生命週期中自動化驗證、安全掃描、治理與合規。
標準化部署模式、AI 輔助開發、程式碼安全與組態掃描、政策驅動治理及生命週期管理,有助於提升安全性、提升營運效率、減少配置漂移,並提供可靠的雲端環境。
架構
下載此架構的 Visio 檔案。
數據流
以下資料流程對應前述圖表:
開發者利用 AI 輔助、測試驅動的開發來建立與維護基礎設施程式碼、可重複使用的模組、測試及部署工作流程。 他們會撰寫單元測試、整合測試,以及政策即程式碼(PaC)檢查,並與基礎設施定義一併完成。
開發者會先將 IaC、測試及檢查項目簽入 GitHub 儲存庫,以驗證品質、安全性和合規性,然後再提交 Pull Request。
拉取請求會觸發 GitHub Actions 中的自動測試。 此工作流程會在部署前產生並驗證部署預覽。
GitHub Advanced Security 提供倉庫層級的安全檢查。 檢查包括在適當情況下執行程式碼掃描或相依性審查工作流程,並在存放庫上啟用祕密掃描和推送保護,以偵測外洩的祕密。
一個已設定的 DevOps 安全行動會掃描基礎設施定義中的錯誤設定,並將發現回報給 適用於雲端的 Microsoft Defender 中的 DevOps 安全部門。 適用於雲端的 Defender 將這些發現與雲端安全態勢洞察相連結,協助在部署前優先處理修復。
部署管線會使用源自已核准基礎結構定義的可重複使用 IaC 成品(例如 Azure 已驗證模組(AVM)),來佈建或更新 Azure 資源。 Azure 部署堆疊有助於維持部署資源與原始碼控制定義之間的一致性,而部署拒絕設定則透過限制頻外變更來減少組態漂移。 核准的手動變更會被記錄並透過來源控制進行核對,以維持 Git 作為權威的真實來源。
DevSecOps 持續監控並防禦安全威脅與漏洞。 Azure 原則 強制執行雲端治理。
配置自動化會在監控或資安服務偵測異常時產生 GitHub 問題。 例如,適用於雲端的 Defender 可能會識別一個公開暴露、違反安全要求的資源。 Azure 監視器 動作群組或 Microsoft Sentinel 自動化規則可以呼叫 Azure Logic Apps 工作流程,建立一個 GitHub 議題以供檢視與修復。
元件
GitHub 是版本控制和共同作業的程式代碼裝載平臺。 在此架構中,GitHub 將 IaC 範本儲存在中央倉庫,供開發、測試、治理工作流程及 GitHub Copilot 的 AI 輔助開發使用。
GitHub Actions 是一種持續整合和持續部署 (CI/CD) 自動化工具,可讓工作流程直接從 GitHub 存放庫建置、測試和部署程式碼。 在此架構中,GitHub Actions 可自動執行 IaC 管線的單元測試、安全性掃描和基礎結構佈建。
GitHub Advanced Security 提供儲存庫層級的安全功能,包括秘密掃描與相依性漏洞偵測。 在此架構中,GitHub Advanced Security 協助識別暴露憑證、脆弱的開源依賴及其他倉庫安全風險,然後再合併並部署程式碼。
適用於雲端的 Defender 中的 DevOps 安全將 DevOps 的安全發現集中於中心,並與雲端情境相關聯。 在此架構中,配置好的 Microsoft 安全性 DevOps GitHub 動作會掃描 IaC 產物是否有錯誤設定,並將發現回報給 適用於雲端的 Defender 以進行優先排序與修復。
Azure 驗證模組(AVM)是由 Microsoft 維護的預先建置 IaC 模組。 在此架構中,工作負載使用 AVM 部署可重用的資源與模式模組,符合 Azure Well-Architected Framework 指引。
Azure 部署堆疊使工作負載能以單一生命週期管理單元來管理已部署的資源。 Azure 部署堆疊有助於維持部署資源與原始碼控制基礎設施定義之間的一致性,支援生命週期管理,並透過治理控制與拒絕設定來減少配置漂移。
適用於雲端的 Defender 是一款安全管理平台,能在混合雲工作負載中提供威脅防護。 在此架構中,它持續監控已部署基礎設施的漏洞與威脅,並以執行時的安全洞察補充 DevOps 的安全發現。
Microsoft Sentinel 是雲端原生安全性資訊和事件管理 (SIEM) 以及安全性協調流程自動回應 (SOAR) 解決方案,可使用 AI 和分析來偵測和回應威脅。 在此架構中,Microsoft Sentinel 監控基礎設施活動,並在偵測異常時發出警示或 GitHub 問題。
Azure 原則 會根據組織與工作負載標準評估 Azure 資源。 根據分配的政策效果,Azure 原則 可以稽核、修改、修復或拒絕不合規的設定。 例如,具有
deny效果的政策定義可以封鎖部署 SKU 不在允許範圍內的虛擬機器。Azure 監視器 是遙測和可觀測性平台,可從 Azure 資源收集效能計量和活動記錄。 在此架構中,Azure 監視器 偵測不正常的基礎設施狀況並觸發警示,以便開始分流與修復。
案例詳細資料
當你採用 IaC 時,在開發程式碼時建立自動化測試。 產生部署計畫與基礎設施配置狀態,以模擬實際部署。 測試驅動開發可在工作負載擴增時降低 IaC 測試的複雜性。
透過使用 Azure SDK 與 API、Azure Resource Graph、工作負載專用驗證工具或自動化測試框架,對已部署的 Azure 資源執行整合測試。 這些測試有助於驗證資源配置、連接性、安全控制及作戰準備狀態。
PaC 是傳遞符合法規和公司治理之基礎結構的另一個重要方法。 您可以將PaC工作流程新增至管線,以自動化雲端治理。
在開發生命週期早期保護基礎設施,可降低部署後安全與合規問題的風險。 將 GitHub Advanced Security 與 適用於雲端的 Defender DevOps 安全整合進 DevSecOps 工作流程中,以識別 IaC 程式碼中的漏洞、程式碼品質問題、政策違規、秘密外洩及設定風險。 此方法類似於應用程式碼的靜態應用程式安全測試(SAST)。
當基礎設施部署並運作時,特別是在生產環境中,配置漂移可能較難解決。 使用 GitHub Actions 搭配 OpenID Connect(OIDC)及 Microsoft Entra Workload Identity Federation,在不儲存憑證的情況下配置和管理 Azure 資源。 透過最小權限的 Azure 角色基礎存取控制(Azure RBAC)指派和環境保護控制來限制部署權限。 若要進行卓越的手動變更,請使用即時特權存取,記錄變更,並自動建立 GitHub Issue 以透過原始碼控制來對應基礎架構定義。 盡量避免手動設定,並將 Git 視為基礎設施狀態的權威來源。
為了防止源頭漂移,當一組在範本中定義的 Azure 資源共享生命週期時,可以使用 Azure 部署堆疊。 考量 部署堆疊的限制,並套用適當的拒絕設定以限制帶外控制平面的變更。 在原始碼控制中保持 IaC 定義的版本化。
為防止安全事件發生,持續監控雲端環境的威脅與漏洞。 使用 適用於雲端的 Defender、Microsoft Sentinel、Azure 監視器 以及其他威脅防護和 SIEM 工具來偵測異常活動。 這些工具能自動提醒安全管理員,並提出 GitHub 問題以進行調查與修復。
潛在使用案例
中央平台工程團隊可作為經批准的黃金路徑,提供可重複使用的 GitHub Actions 工作流程、PaC 控制及 Azure 部署堆疊給應用程式、資料與 AI 團隊。 GitHub Copilot 協助開發者建立基礎架構定義、測試及部署工作流程。 設定的 Microsoft 安全性 DevOps 行動會在部署前驗證基礎設施安全與設定,並將發現回報給 適用於雲端的 Defender 中的 DevOps 安全。 組織能加速基礎設施交付,同時維持治理、一致性與安全標準。
金融服務、醫療保健、公共部門或受規範企業可利用 DevSecOps for IaC 自動化基礎設施部署、政策執行、安全驗證及合規報告。 Azure 原則、適用於雲端的 Defender、Microsoft Sentinel 及 Azure 部署堆疊有助於維護可稽核的基礎設施變更、減少配置漂移,並支援整個基礎設施生命週期的合規性。 GitHub 是所有基礎設施修改與治理控制的權威真實來源。
貢獻者
本文由 Microsoft 維護。 下列參與者撰寫本文。
主要作者:
- Vito Chin |資深雲端解決方案架構師
- Yee Shian Lee |資深雲端解決方案架構師
若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。
下一步
- 考慮使用哪種 IaC 語言或範本。 Bicep 或 Azure 上的 Terraform 都是可行的選項。
- 設定 Microsoft 安全性 DevOps 掃描你連接的 GitHub 倉庫。