DevSecOps 中的开发和测试

DevSecOps 中的开发和测试决定了安全是成为日常工程工作的一部分,还是仍然只是团队在为时已晚时才去处理的事情。 编写代码、工具、集成和测试方面的强做法可帮助团队在编写代码时发现并解决问题。

此功能区域介绍了团队如何编写安全代码、使用批准的工具和组件加速开发,以及集成和测试其工作。 这是决定安全究竟是融入日常工程实践,还是沦为事后补救的关键节点。

随着组织不断成熟,开发和测试会从分散且缺乏管理的活动,逐步转向针对个体开发人员进行优化的环境。 安全测试实现持续化,AI 和开源从缺乏治理转向符合企业安全要求且目标明确,而测试也从周期性、手动转向自动化和左移。

核心功能区域

DevSecOps 中的开发和测试侧重于三个子功能:

  • 代码安全性:如何在编写和审阅代码时将安全工具和测试应用到代码。

  • 开发加速器:如何管理 AI、开放源代码 和可重用组件并用于加快交付速度。

  • 集成和测试:如何管理存储库、分支、生成和自动化测试。

阶段

开发和测试经历五个成熟度阶段。 这些阶段展示了 DevSecOps 原则在开发人员活动中如何显示,从非托管试验到优化的代码和测试环境,从而提高开发人员效率。

总体阶段 阶段名称 它的外观
临时 迥异的 不管理资源;快速原型制作和未经约束的探索。
启动 涌现 团队临时建立监管机制,开始向 DevOps 思维转变。
协调 Continuous 通过自动化将标准固化到持续流程中的全面战略。
精简 左移 向左移动意味着问题会更早发现,并降低修正成本。
开创性 已优化 代码和测试环境针对单个开发人员效率进行优化。

分散(临时性)

如果不管理资源或初始编码活动,就有可能进行快速原型制作和未经约束的探索。 这种状态是初创公司和新组织的一个自然起点。

  • 代码安全性:几乎没有或没有一致的代码安全工具使用,这将产生不断增长的风险面。

  • 开发加速器:团队在组织管控之外使用未经批准的 AI 工具,并无序地广泛使用开源软件或社区代码示例。 缺乏策略也会导致一些开发人员完全避免这些工具,从而缺少效率的机会。

  • 集成和测试:工作分散在多个存储库中,并且生成是手动完成的,并且不常使用不同的配置。

新兴(正在启动)

团队开始对资产和方法论进行临时性的管理与监督,由此开启向 DevOps 思维的更广泛转变。

  • 代码安全性:Teams 偶尔使用本地安全测试工具。

  • 开发加速器:团队认识到未经批准的 AI 和开源软件带来的风险,组织内一些部门也开始出台相关政策,包括对复用开发者社区代码的限制或指导意见。

  • 集成和测试:Teams 定义存储库和分支策略。 测试仍主要是定期的、手动的,有时是外包的。 同时,可测试性开始浮出水面,一些团队采用持续集成做法。

持续(编排)

借助自动化支持的全面策略,动态工具和流程有助于将标准融入持续工作流程和监控中。

  • 代码安全性:一些安全测试已到位,安全性成为代码评审的一部分,并按计划运行更深入的安全测试。 采用标准化命名和分支策略。

  • 开发加速器:符合企业安全要求的 AI 和开源内容可根据使用政策提供。 AI 作为编程助手集成到 IDE 中,并集成到改进拉取请求工作流的 DevOps 工具中。

  • 集成和测试:已建立标准化命名、分支策略和测试框架。 自动化测试被引入主要的 CI/CD 流水线中,其中包括一些集成测试。

左移(正在简化)

为左移创建环境意味着更早发现问题,并降低修正成本。

  • 代码安全:团队对高严重级别的安全问题实施准入把关。 IDE 代码工具包括安全功能,包括防止提示注入和数据中毒的保护。

  • 开发加速器:团队使用符合企业安全要求、遵循明确模式和标准的大型语言模型(LLM)。 AI 驱动的软件工程和 DevOps 智能体开始实现工作自动化,并以越来越高的自主性运行。

  • 集成和测试:已实施广泛的测试做法,包括单元测试和集成测试。 自动测试持续运行,并捕获过程中早期的问题。 团队还会使用网络钓鱼模拟。

已优化(正在开拓)

为单个开发人员优化代码和测试环境时,可以创建更个性化的效率。

  • 代码安全性:安全性会持续且受高级可观测性支持。

  • 开发加速器:开发人员使用自己的自定义模式扩展代码助理 LLM。 组件使用是故意的,旨在实现性能、合规性和风险管理的目标。 MCP 服务器和业务流程作为工具链的一部分出现。

  • 集成和测试:测试自动化变得全面,包括性能测试。 Teams 还采用 AI 驱动的威胁检测,并寻求其他机会来改进工程反馈循环。