基礎結構即程式代碼的 DevSecOps (IaC)
解決方案構想
本文說明解決方案概念。 您的雲端架構師可以使用本指南,協助視覺化此架構的一般實作的主要元件。 以本文為起點,設計符合您工作負載具體要求的完善解決方案。
此解決方案概念說明使用 GitHub 作為程式代碼 (IaC) 的 DevSecOps 管線。 它也會說明如何控管營運卓越、安全性和成本優化的工作流程。
Terraform 是 Hashicorp 的商標。 使用此標記時不會隱含任何背書。
架構
下載此架構的 Visio 檔案。
資料流程
下列數據流對應至上圖:
使用測試驅動開發,在 GitHub 存放庫中檢查基礎結構定義的程式代碼變更,例如 IaC 範本。 您同時開發單元測試、整合測試和原則作為程序代碼 (PaC),以測試 IaC 的品質。
提取要求會透過 GitHub Actions 觸發自動化單元測試。
設定 GitHub Actions 工作流程程式,以使用本機部署的基礎結構狀態和方案來測試 IaC。
設定 GitHub Actions 以掃描程式代碼品質和安全性問題。 建立您自己的自定義 GitHub CodeQL 查詢,以分析 IaC 範本並偵測潛在的安全性弱點。 如果偵測到弱點,GitHub 會將警示傳送給組織或存放庫擁有者和維護者。
IaC 工具會藉由量身打造大小、實例計數和其他屬性來布建和修改每個環境的資源。 您可以在布建的資源上執行 IaC 的自動化整合測試。
當需要手動更新基礎結構時,指定的系統管理員存取權會提升為執行修改。 修改之後,會移除提升許可權的存取權。 您也應該記錄 GitHub 問題,以進行 IaC 的對帳。 對帳步驟和方法取決於特定的 IaC 工具。
SecOps 會持續監視並防範安全性威脅和弱點。 Azure 原則 強制執行雲端治理。
偵測到異常時,會自動記錄 GitHub 問題,以便加以解決。
元件
GitHub 是版本控制和共同作業的程式代碼裝載平臺。 在此架構中,它會儲存 IaC 範本,並作為開發、測試和治理工作流程的中央 儲存庫 。
GitHub Actions 是一種持續整合和持續部署 (CI/CD) 自動化工具,可讓工作流程直接從 GitHub 存放庫建置、測試和部署程式碼。 在此架構中,GitHub Actions 可自動執行 IaC 管線的單元測試、安全性掃描和基礎結構佈建。
GitHub Advanced Security 是一套安全功能,包括儲存在 GitHub 中的程式碼的靜態分析和漏洞偵測。 在此架構中,它透過掃描範本並引發有關錯誤配置或風險的警報來增強 IaC 安全性。
CodeQL 是語意程式碼分析引擎,可讓自訂查詢偵測程式碼中的弱點和設定錯誤。 在此架構中,CodeQL 會掃描存放庫成品,以在部署之前識別潛在的安全性問題。
Terraform 是由 HashiCorp 開發的開源基礎設施自動化工具,可實現跨雲環境的聲明式配置。 在此架構中,Terraform 會根據 IaC 定義佈建和修改 Azure 資源,並支援測試驅動開發工作流程。
適用於雲端的 Microsoft Defender 是一個安全性管理平台,可跨混合式雲端工作負載提供威脅防護。 在此架構中,它會持續監控已部署的基礎結構是否有漏洞。
Microsoft Sentinel 是雲端原生安全性資訊和事件管理 (SIEM) 以及安全性協調流程自動回應 (SOAR) 解決方案,可使用 AI 和分析來偵測和回應威脅。 在此架構中,Microsoft Sentinel 會監視基礎結構活動,並在偵測到異常時引發警示或 GitHub 問題。
Azure 原則 是治理服務,可跨 Azure 資源強制執行規則和合規性。 在此架構中,Azure 原則 會根據組織和工作負載標準驗證 IaC 部署,並封鎖不符合規範的設定。 例如,如果您的專案即將部署具有無法辨識 SKU 的虛擬機器,Azure 原則 會警示您並停止部署。
Azure 監視器 是遙測和可觀測性平台,可從 Azure 資源收集效能計量和活動記錄。 在此架構中,Azure 監視器會偵測基礎結構中的不規則狀況,並觸發警示,以便開始分級和補救。
案例詳細資料
從概念上講,適用於 IaC 的 DevSecOps 類似於 Azure Kubernetes Service (AKS) 上的應用程式程式代碼 DevSecOps。 但是,您需要一組不同的管線和工具,以管理和自動化 IaC 的持續整合和持續傳遞。
當您採用 IaC 時,請務必在開發程式代碼時建立自動化測試。 這些測試可減少工作負載調整時測試 IaC 的複雜性。 您可以使用本機基礎結構組態狀態,例如 Terraform 狀態和 測試驅動開發計劃。 這些組態狀態會模擬實際的部署。 您可以使用 Azure Resource Graph REST API,在實際基礎結構部署上執行 IaC 的整合測試。
PaC 是傳遞符合法規和公司治理之基礎結構的另一個重要方法。 您可以將PaC工作流程新增至管線,以自動化雲端治理。
在開發階段早期保護基礎結構,可降低設定錯誤的基礎結構風險,以在部署後公開攻擊點。 您可以使用 GitHub 的 CodeQL 掃描基礎結構程式代碼中的安全性弱點,來整合 Synk 或 Aqua Security tfsec 等靜態程式代碼分析工具。 此程式類似於靜態應用程式安全性測試。
部署基礎結構並運作時,雲端設定漂移可能會難以解決,特別是在生產環境中。
設定專用的服務主體,以部署或修改生產環境的雲端基礎結構。 然後移除允許手動設定環境的其他所有存取。 如果您需要手動設定,請提高指定系統管理員的存取權,然後在進行變更之後移除提高許可權的存取權。 您應該將 Azure 監視器設定為引發 GitHub 問題,讓開發人員能夠協調變更。 盡可能避免手動設定。
請務必持續監視雲端環境是否有威脅和弱點,以協助防止安全性事件。 您可以使用威脅防護和 SIEM 工具來偵測異常流量。 這些工具會自動警示安全性系統管理員,並引發 GitHub 問題。
潛在使用案例
您是 IaC 開發人員的中央小組的一部分,該小組使用虛構公司 Contoso 的多雲端策略。 您想要使用適用於 IaC 的 DevSecOps,將雲端基礎結構部署到新的 Azure 登陸區域,以協助確保部署的安全性和品質。 您也想要追蹤和稽核基礎結構的所有修改。
參與者
本文由 Microsoft 維護。 下列參與者撰寫本文。
主要作者:
- Vito Chin |資深雲端解決方案架構師
- Yee Shian Lee |資深雲端解決方案架構師
若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。
下一步
- 請考慮用於 DevSecOps 的慣 用 IaC 工具 ,並確保它們隨附擴充功能來執行 IaC 安全性掃描。
- 請考慮 Azure 上慣用的 IaC 語言或範本 Bicep 或 Terraform。
- 組織的 GitHub 指南
- 使用 GitHub Actions 連線到 Azure
- GitHub 動作
- 我們對零信任合規性有何意義?
- 適用於 Azure Resource Manager 樣本的 AzOps
- Terraform 登陸區域模組和解決方案
- 使用 Bicep 的 IaC 簡介