解決方案構想
本文說明解決方案概念。 您的雲端架構設計人員可以使用本指南,協助可視化此架構的一般實作的主要元件。 使用本文作為起點,設計符合您工作負載特定需求的架構良好解決方案。
此解決方案概念說明使用 GitHub for IaC 的 DevSecOps 管線,以及如何控管卓越作業、安全性和成本優化工作流程。
Terraform 是 Hashicorp 的商標。 使用此標記時不會隱含任何背書。
架構
資料流程
- 透過測試驅動開發,您會將基礎結構定義的程式代碼變更簽入 GitHub 存放庫,例如 IaC 範本。 您同時開發單元測試、整合測試和PaC,以測試IaC的品質。
- 提取要求 (PR) 會透過 GitHub Actions 觸發自動化單元測試。
- 您可以設定 GitHub Actions 工作流程程式,以使用本機部署的基礎結構狀態和方案來測試 IaC。
- 您可以設定 GitHub Actions 來掃描程式代碼品質和安全性問題。 然後使用建置在 GitHub CodeQL 上的安全性掃描工具,掃描 IaC 上的安全性弱點。 如果偵測到弱點,GitHub 會將警示傳送給組織或存放庫擁有者和維護者。
- IaC 工具會針對每個環境布建和修改資源、量身打造大小、實例計數和其他屬性。 您可以在布建的資源上執行 IaC 的自動化整合測試。
- 當需要手動更新基礎結構時,指定的系統管理員存取權會提升為執行修改。 修改之後,會移除提升許可權的存取權,而且應該登入 GitHub 以對帳 IaC。 對帳步驟和可能性取決於特定的 IaC 工具。
- SecOps 會持續監視並防範安全性威脅和弱點。 Azure 原則 會強制執行雲端治理。
- 偵測到異常時,應該在 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 維護。 原始投稿人如下。
主要作者:
- Vito Chin |SR 雲端解決方案架構師
- Yee Shian Lee |SR 雲端解決方案架構師
下一步
- 請考慮用於 DevSecOps 的慣 用 IaC 工具 ,並確保它們隨附擴充功能來執行 IaC 安全性掃描。
- 請考慮 Azure 上慣用的 IaC 語言或範本 Bicep 或 Terraform。
- 組織的 GitHub 指南
- 使用 GitHub Actions 連線到 Azure
- GitHub 動作
- 創新安全性
- 適用於 ARM 範本的 AzOps
- Terraform 登陸區域模組和解決方案
- 使用 Bicep 的基礎結構即程式碼簡介