基礎結構即程式代碼的 DevSecOps (IaC)

Microsoft Sentinel
Azure 監視器
GitHub

解決方案構想

本文是解決方案概念。 如果您想要使用詳細資訊來擴充內容,例如潛在的使用案例、替代服務、實作考慮或定價指引,請提供 GitHub 意見反應讓我們知道。

此解決方案概念說明使用 GitHub for IaC 的 DevSecOps 管線,以及如何控管卓越作業、安全性和成本優化工作流程。

Terraform 是 Hashicorp 的商標。 使用此標記時不會隱含任何背書。

架構

顯示 IaC DevSecOps 架構的圖表。

下載此架構的 Visio 檔案

資料流程

  1. 透過測試驅動開發,您會將基礎結構定義的程式代碼變更簽入 GitHub 存放庫,例如 IaC 範本。 您同時開發單元測試、整合測試和PaC,以測試IaC的品質。
  2. 提取要求 (PR) 會透過 GitHub Actions 觸發自動化單元測試。
  3. 您可以設定 GitHub Actions 工作流程程式,以使用本機部署的基礎結構狀態和方案來測試 IaC。
  4. 您可以設定 GitHub Actions 來掃描程式代碼品質和安全性問題。 然後使用建置在 GitHub CodeQL 上的安全性掃描工具,掃描 IaC 上的安全性弱點。 如果偵測到弱點,GitHub 會將警示傳送給組織或存放庫擁有者和維護者。
  5. IaC 工具會針對每個環境布建和修改資源、量身打造大小、實例計數和其他屬性。 您可以在布建的資源上執行 IaC 的自動化整合測試。
  6. 當需要手動更新基礎結構時,指定的系統管理員存取權會提升為執行修改。 修改之後,會移除提升許可權的存取權,而且應該登入 GitHub 以對帳 IaC。 對帳步驟和可能性取決於特定的 IaC 工具。
  7. SecOps 會持續監視並防範安全性威脅和弱點。 Azure 原則 強制執行雲端治理。
  8. 偵測到異常時,應該在 GitHub 中自動引發問題以進行修正。

元件

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

案例詳細資料

從概念上講,適用於基礎結構即程序代碼的 DevSecOps (IaC) 類似於 AKS 上的應用程式程式代碼 DevSecOps。 但是,您需要一組不同的管線和工具,以管理和自動化 IaC 的持續整合和持續傳遞(CI/CD)。

當您採用 IaC 時,請務必在開發程式代碼時建立自動化測試。 這些測試可減少工作負載調整時測試 IaC 的複雜性。 您可以使用 Terraform 狀態等本機基礎結構設定狀態,並計劃開發 適用於 IaC 的測試驅動開發 (TDD)。 這些組態狀態會模擬實際的部署。 您可以使用 Azure Resource Graph REST API,在實際基礎結構部署上執行 IaC 的整合測試。

原則即程序代碼 (PaC) 也是傳遞符合法規和公司治理規範基礎結構的重要方法。 您可以將PaC工作流程新增至管線,以自動化雲端治理。

在開發階段早期保護基礎結構,可降低設定基礎結構在部署后開啟攻擊點的錯誤風險。 您可以使用 GitHub 的 CodeQL,整合 Synk 或 Aquasecurity tfsec 等基礎結構的靜態程式代碼分析工具,以掃描基礎結構程式代碼中的安全性問題。 此程式類似於靜態應用程式安全性測試 (SAST)。

部署基礎結構並運作時,雲端設定漂移可能會難以解決,特別是在生產環境中。

設定專用的服務主體,以部署或修改生產環境的雲端基礎結構。 然後移除允許手動設定環境的其他所有存取。 如果您需要手動設定,請提高指定系統管理員的存取權,然後在修改變更後移除提高許可權的存取權。 您應該將 Azure 監視器設定為在 GitHub 中引發問題,讓開發人員協調變更。 不過,如果可能的話,應該避免手動設定。

請務必持續監視雲端環境是否有威脅和弱點,以防止安全性事件。 您可以使用威脅防護和安全性資訊和事件管理 (SIEM) 工具來偵測異常流量。 這些工具會自動警示安全性系統管理員,並在 GitHub 中提出問題以引起注意。

潛在的使用案例

您是 IaC 開發人員的中央小組的一部分,該小組使用虛構公司 Contoso 的多雲端策略。 您想要使用適用於 IaC 的 DevSecOps,將雲端基礎結構部署到新的 Azure 登陸區域,以確保部署的安全性和品質。 您也想要追蹤和稽核基礎結構的所有修改。

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主要作者:

下一步