基礎結構即程式代碼的 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 是版本控制和共同作業的程式代碼裝載平臺。 GitHub 原始檔控制 存放庫 包含所有項目檔及其修訂歷程記錄。 開發人員可以共同合作,在存放庫中參與、討論和管理程序代碼。
GitHub Actions 提供一套組建和發行工作流程,涵蓋持續整合、自動化測試和容器部署。
GitHub 進階安全性 提供保護 IaC 的功能。 它需要另一個授權。
CodeQL 提供在靜態程式代碼上執行的安全性掃描工具,以偵測基礎結構設定錯誤。
Terraform 是由 HashiCorp 開發的合作夥伴產品,可讓 Azure 和其他環境上的基礎結構自動化。
適用於雲端的 Microsoft Defender 提供跨混合式雲端工作負載的整合式安全性管理與進階威脅保護。
Microsoft Sentinel 是雲端原生安全性資訊和事件管理 (SIEM) 和安全性協調流程自動化回應 (SOAR) 解決方案。 其使用進階 AI 和安全性分析來協助您偵測及響應整個企業的威脅。
Azure 原則 使用可強制執行雲端資源規則的原則定義,協助小組管理及防止IT問題。 例如,如果您的專案即將部署具有無法辨識 SKU 的虛擬機,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 簡介