你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

基础结构即代码 (IaC) 的 DevSecOps

Microsoft Sentinel
Azure Monitor
GitHub

解决方案构想

本文是一种解决方案构想。 如果你希望我们在内容中扩充更多信息,例如潜在用例、备用服务、实现注意事项或定价指南,请通过提供 GitHub 反馈来告知我们。

此解决方案理念说明了使用适用于 IaC 的 GitHub 的 DevSecOps 管道,以及如何管理工作流以实现卓越运营、安全性和成本优化。

Terraform 是 Hashicorp 的商标。 使用此标志并不意味着认可。

体系结构

该图显示了 IaC 的 DevSecOps 的体系结构。

下载此体系结构的 Visio 文件

数据流

  1. 通过测试驱动的开发,可以将基础结构定义(如 IaC 模板)的代码更改签入 GitHub 存储库。 同时开发单元测试、集成测试和 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 Policy 强制实施云治理。
  8. 检测到异常时,应在 GitHub 中自动引发问题以进行纠正。

组件

  • GitHub 是用于版本控制和协作的代码托管平台。 GitHub 源代码管理存储库包含所有项目文件及其修订历史记录。 开发人员可以在存储库中合作贡献代码,以及讨论和管理代码。
  • GitHub Actions 提供一套生成和发布工作流,其中涵盖了持续集成 (CI)、自动测试和容器部署。
  • GitHub 高级安全性提供了保护 IaC 的功能。 它还需要许可证。
  • CodeQL 提供了在静态代码上运行的安全扫描工具,用于检测基础结构错误配置。
  • Terraform 是由 HashiCorp 开发的合作伙伴产品,它允许在 Azure 和其他环境中实现基础结构自动化。
  • Microsoft Defender for Cloud 跨混合云工作负载提供统一的安全管理和高级威胁防护。
  • Microsoft Sentinel 是云原生 SIEM 和安全业务流程自动响应 (SOAR) 解决方案。 它使用高级 AI 和安全分析来帮助检测和响应整个企业中的威胁。
  • Azure Policy可帮助团队通过策略定义对云资源强制实施规则,从而管理和预防 IT 问题。 例如,如果项目将要部署具有无法识别的 SKU 的虚拟机,则 Azure Policy 将发出有关该问题的警报并停止部署。
  • Azure Monitor 会收集和分析应用遥测数据,例如性能指标和活动日志。 当此服务识别到异常状况时,会向应用和相关人员发出警报。

方案详细信息

从概念上讲,基础结构即代码 (IaC) 的 DevSecOps 类似于 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 Monitor 以在 GitHub 中引发问题,以便开发人员协调更改。 但应尽可能避免手动配置。

持续监视云环境中的威胁和漏洞以防安全事件非常重要。 可以使用威胁防护和安全信息与事件管理 (SIEM) 工具来检测异常流量。 这些工具会自动向安全管理员发出警报并在 GitHub 中引发问题以作提醒。

可能的用例

你是 IaC 开发人员中心团队的一员,为虚构的公司 Contoso 使用多云战略。 你希望将云基础结构部署到新的 Azure 登陆区域,并使用 IaC 的 DevSecOps 来确保部署的安全性和质量。 你还希望跟踪和审核对基础结构的所有修改。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

后续步骤