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

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

Microsoft Sentinel
Azure Monitor
GitHub

解决方案构想

本文介绍了一种解决方案构想。 云架构师可以通过本指南来帮助可视化此体系结构的典型实现的主要组件。 以本文为起点,设计一个符合工作负荷特定要求的架构合理的解决方案。

此解决方案理念说明了将 GitHub 用于基础结构即代码的 DevSecOps 管道(IaC)。 它还介绍如何管理卓越运营、安全性和成本优化的工作流。

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

体系结构

显示适用于 IaC 的 DevSecOps 的体系结构的关系图。

下载此体系结构的 Visio 文件

数据流

以下数据流对应于上图:

  1. 使用体验驱动开发将基础结构定义(如 IaC 模板)的代码更改检查到 GitHub 存储库中。 同时开发单元测试、集成测试和策略作为代码(PaC),以测试 IaC 的质量。

  2. 拉取请求通过 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 提供了一套生成和发布工作流,涵盖持续集成、自动化测试和容器部署。

  • 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 类似于 Azure Kubernetes 服务(AKS)上的应用程序代码 DevSecOps。 但是,你需要一组不同的管道和工具来管理和自动化 IaC 的持续集成和持续交付。

如果采用 IaC,务必在开发代码时创建自动化测试。 工作负载缩放时,这些测试可降低测试 IaC 的复杂性。 可以使用本地基础结构配置状态(如 Terraform 状态)和 测试驱动开发计划。 这些配置状态模拟实际部署。 可以使用 Azure Resource Graph REST API 针对实际基础结构部署运行 IaC 的集成测试。

PaC 是交付符合法规和公司治理的基础结构的另一个重要方法。 可以将 PaC 工作流添加到管道中以自动化云治理。

在开发阶段早期保护基础结构可降低配置错误的基础结构的风险,这些基础结构在部署后暴露了攻击点。 可以通过使用 GitHub 的 CodeQL 扫描基础结构代码中的安全漏洞,集成 Synk 或 Aqua Security tfsec 等静态代码分析工具。 此过程类似于静态应用程序安全测试。

部署基础结构并运行时,可能难以解决云配置偏移问题,尤其是在生产环境中。

设置专用的服务主体来部署或修改生产环境的云基础结构。 然后,删除允许手动配置环境的其他所有访问权限。 如果需要手动配置,请提升指定管理员的访问权限,然后在更改后删除提升的访问权限。 应将 Azure Monitor 配置为引发 GitHub 问题,以便开发人员能够协调更改。 如果可能,请避免手动配置。

请务必持续监视云环境是否存在威胁和漏洞,以帮助防止安全事件。 可以使用威胁防护和 SIEM 工具来检测异常流量。 这些工具会自动提醒安全管理员并引发 GitHub 问题。

可能的用例

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

作者

Microsoft维护本文。 以下参与者撰写了本文。

主要作者:

若要查看非公开的LinkedIn个人资料,请登录LinkedIn。

后续步骤