什么是 DevSecOps?

DevSecOps 是应用安全 (AppSec) 领域一个相对较新的术语,通过在 DevOps 活动中扩大开发和运营团队之间的紧密协作,将安全团队也包括进来,从而在软件开发生命周期 (SDLC) 的早期引入安全。这就要求改变开发、安全、测试、运营等核心职能团队的文化、流程和工具。基本上,DevSecOps 意味着安全成为共同的责任,而参与 SDLC 的每个人都有责任在 DevOps CI/CD 工作流中构建安全。[1]

随着发布速度和频率不断增加,传统的应用安全团队已经无法跟上发布的步伐,以确保每个发布都是安全的。

为解决这个问题,组织需要在整个 SDLC 中持续构建安全性,以便 DevOps 团队能够快速、高质量地交付安全的应用。越早地将安全性引入到工作流中,就能越早地识别和补救安全弱点和漏洞。这一概念属于“左移”范畴,将安全测试转移给开发人员,使他们能够几乎实时地修复代码中的安全问题,而不是像在传统开发环境中那样,一直等到 SDLC 结束。

通过 DevSecOps,组织可以将安全性无缝集成到其现有的持续集成和持续交付 (CI/CD) 实践中。DevSecOps 涵盖从规划和设计到编码、构建、测试和发布的整个 SDLC,提供实时连续的反馈循环和见解。



什么是 DevOps?

DevOps 是一种理念,包括组织文化、流程,以及技术和工具三大支柱,旨在帮助开发和 IT 运营团队协同合作,以比传统软件开发流程更快、更敏捷、更迭代的方式构建、测试和发布软件。

根据《DevOps 手册》,“按照 DevOps 理念,开发人员可以收到有关其工作的快速、持续反馈,这使他们能够快速、独立地实现、集成和验证其代码,并将代码部署到生产环境中。”[2]

简而言之,DevOps 旨在消除两个传统上相互独立的团队(开发和运营)之间的障碍。在 DevOps 模型中,开发和运营团队在整个软件应用生命周期内(从开发和测试到部署再到运营)一直保持合作。


What is DevSecOps? | Synopsys

DevOps 对比 DevSecOps

几乎所有现代软件组织现在都使用基于敏捷的 SDLC 来加速其软件版本(包括更新和修复)的开发和交付。DevOps 和 DevSecOps 等开发方法将敏捷框架用于不同用途。DevOps 关注的是应用交付的速度,而 DevSecOps 通过尽可能快地交付尽可能安全的应用来提高速度和安全性。DevSecOps 的目标是促进安全代码库的快速开发。[3]

根据 DevSecOps 的理念,组织应将安全集成到 DevOps 生命周期的各个部分,包括启动、设计、构建、测试、发布、支持、维护等。在 DevSecOps 中,安全是 DevOps 价值链中每个人的共同责任。DevSecOps 涉及开发、发布管理(或运营)和安全团队之间持续、灵活的协作。简而言之,DevSecOps 可帮助您保持速度,同时不影响安全性。


DevSecOps 有何重要性?

归根结底,DevSecOps 之所以重要,是因为它可以更早地、有意识地将安全性融入 SDLC 中。[4] 如果开发组织从一开始就将安全性考虑在代码中,那么在漏洞进入生产环境之前或发布之后发现并修复它们会更容易,成本也更低。多种行业的组织均可实施 DevSecOps,打破开发、安全和运营之间的界限,从而更快地发布更安全的软件:

  • 汽车:在满足 MISRA 和 AUTOSAR 等软件合规标准的同时,缩短较长的周期时间
  • 医疗保健:根据 HIPAA 等法规,在保证敏感患者资料的隐私和安全的同时,实现数字化转型
  • 金融、零售和电子商务:帮助修复 OWASP Top 10 Web 应用安全风险,并保持数据隐私和安全符合 PCI DSS 针对消费者、零售商、金融业务等实体之间交易的支付卡标准。
  • 嵌入式、联网、专用、消费类和 IoT 设备:编写安全代码,以尽量减少 CWE Top 25 最危险软件错误的发生

您需要哪些应用安全工具来实施 DevSecOps?

要实施 DevSecOps,组织应考虑在其 CI/CD 流程中集成各种应用安全测试 (AST) 工具。以下是一些常用的 AST 工具:

  • 静态应用安全测试 (SAST)
  • 软件组件分析 (SCA)
  • 交互式应用安全测试 (IAST)
  • 动态分析测试 (DAST)

SAST

SAST 工具扫描专有代码或自定义代码,查找编码错误和设计缺陷,避免产生可利用的弱点。SAST 工具主要用于 SDLC 的编码、构建和开发阶段。Coverity 就是一种这样的 SAST 工具。

SCA

Black Duck 等 SCA 工具可扫描源代码和二进制文件,以识别开源和第三方组件中的已知漏洞。它们还可提供对安全和许可证风险的洞见,以加快确定优先级和开展补救工作。此外,它们还可无缝集成到 CI/CD 流程中,从构建集成直至生产前的发布,持续检测新的开源漏洞。

IAST

IAST 工具在手动或自动功能测试期间在后台工作,分析 Web 应用的运行时行为。例如,Seeker IAST 工具使用插装来观察应用请求/响应交互、行为和数据流。它可检测运行时漏洞并自动重现和测试结果,为开发人员提供详细洞见,内容具体到发生漏洞的代码行。这可让开发人员将时间和精力集中在解决关键漏洞上。

DAST

DAST 是一种自动黑盒测试技术,它模仿黑客与您的 Web 应用或 API 交互的方式。它通过网络连接和检查应用的客户端渲染来测试应用,就像渗透测试工具一样。[5] DAST 工具不需要访问您的源代码或自定义来扫描堆栈。它们与您的网站交互,从而以较低的误报率发现漏洞。例如,Synopsys DAST 工具可识别 Web 应用和 API 上的漏洞,包括移动后端服务器、IoT 设备和任何 RESTful 或 GraphQL API 等 Web 连接设备。[6]

 

[1] https://www.csoonline.com/article/3245748/what-is-devsecops-developing-more-secure-applications.html

[2] https://itrevolution.com/book/the-devops-handbook/

[3] https://blogs.cornell.edu/react/devops-vs-devsecops-what-is-the-difference/

[4] https://enterprisersproject.com/article/2018/1/why-devsecops-matters-it-leaders

[5] https://jaxenter.com/dast-devops-166973.html

[6] https://www.channele2e.com/investors/exits/synopsys-buys-tinfoil-security/


探索如何在 DevOps 中构建安全