DevSecOps 将安全、工作文化、安全自动化和平台设计融入软件开发与运维之中。它为美国国防部(DoD)、Zoom 以及许多其他关键基础设施组织提供了软件开发和软件供应链的安全保障。DevOps 提供了一种更快交付更优质软件的方法论。它们绝非仅仅是流行词汇,而是推动现代软件开发的重要力量,对于保障软件开发生命周期的安全至关重要。 抛开那些炒作,我们采访了OPSWAT 的高级技术项目经理Vinh Lam,请他分享关于这些热门话题的一线见解。
虽然这两种方法有相似之处,但 "它们有不同的侧重点和方法,"Lam 说,"DevOps 强调开发和运营团队之间的协作,以简化软件开发生命周期,而 DevSecOps 则将安全融入整个流程。
在专家建议的指导下,本文对 DevOps 和 DevSecOps 进行了全面比较,强调了两者的区别,并探讨了向更安全的软件开发流程过渡的过程。
目录
- DevOps 与 DevSecOps:快速比较
- 什么是 DevOps?
- 什么是 DevSecOps?
- DevOps 与 DevSecOps:它们的相似之处
- DevOps 与 DevSecOps:它们有何不同?
- DevOps 与 DevSecOps:选择哪一个?
- 如何从 DevOps 过渡到 DevSecOps
- 软件 构成分析 (SCA):DevSecOps 的基石
- SBOM 在 DevSecOps 中的重要性
- 应用程序安全测试方法
- 常见问题
DevOps 与 DevSecOps:
快速比较
标准 | DevOps | DevSecOps |
|---|---|---|
聚焦 | 简化软件开发(Dev)和IT 运行(Ops)之间的协作。 | 在 DevOps 方法中增加了安全(Sec)维度,在所有软件开发和运行阶段整合安全方面的内容。 |
文化与团队参与 | 鼓励开发团队与运营团队合作。 | 促进开发、运营和安全团队之间的协作。安全是共同的责任。 |
安全集成 | 安全检查通常在开发过程的最后阶段实施,或者作为一个单独的过程实施。 | 从项目一开始就将安全问题纳入其中,并将其贯穿于开发过程的所有阶段("左移")。 |
益处 | 通过高效协作和自动化,实现更快、更可靠的软件交付。 | DevOps 的所有优势,再加上早期和持续识别并缓解安全问题,从而带来更安全可靠的产品。 |
挑战 | 需要进行文化变革和培训,以实现有效协作。团队有时会忽视安全问题。 | 与 DevOps 类似,但在整合安全实践和克服 "人人享有安全 "理念的潜在阻力方面面临更多挑战。 |
工具 | 工具主要是促进 CI/CD 流程。 | 除了 DevOps 工具外,它还使用各种工具来自动化和集成安全检查,如代码分析工具和持续安全监控。 |
什么是 DevOps?
DevOps 的起源与发展
就工程实践而言,软件开发生命周期还很年轻。最初,开发团队采用瀑布式流程进行应用程序开发。这种框架有很多缺点:交付周期长、手动构建容易出错、集成工作令人头疼、测试周期耗时。
开发人员用《敏捷宣言》中广为人知的敏捷模型取代了瀑布式开发流程,并强调了敏捷开发的四大核心价值观:
- 个人和互动胜过程序和工具
- 工作软件和综合文档
- 客户合作高于合同谈判
- 应对变化与遵循计划
敏捷开发将安全团队从瀑布式开发的线性、孤立限制中解放出来,使他们有能力进行协作,并依靠自我组织的团队。
DevOps 是下一个合乎逻辑的步骤,它推动了软件开发的文化变革并提高了效率。它将以前分离的团队整合成一支统一的力量。它通过弥合沟通、协作和集成差距,促进更快、更可靠的软件交付。
了解 DevOps 生命周期
DevOps 生命周期包括几个阶段:规划和编码、构建和测试、部署以及运行和监控。这一循环过程可实现持续集成和持续交付(CI/CD),从而提高速度、效率和适应性。
实施 DevOps 的好处
实施 DevOps 有许多好处。它可以加快软件交付,加强协作和沟通,促进问题的快速发现和解决。从本质上讲,DevOps 支持无缝、高效和面向用户的软件开发生命周期。
DevOps 的挑战和局限性
尽管 DevOps 有很多好处,但它也面临挑战。确保充分的培训、管理文化变革和维护安全,都可能成为有效实施 DevOps 的重大障碍。
Nick ChongZoom 首席服务官
什么是 DevSecOps?
软件 研究所卡内基梅隆大学——从瀑布模型到国防部的DevSecOps
DevSecOps 的出现
DevSecOps 是开发、安全和运营的衍生物,它将安全作为一个基本组成部分添加到软件开发生命周期中。通过将安全实践融入 DevOps 生命周期,DevSecOps 致力于实现 "安全即代码"。
了解 DevSecOps 生命周期
DevSecOps 生命周期与 DevOps 类似,包括规划、编码、构建、测试、部署以及运行和监控等阶段。关键的区别在于,每个阶段都包括强有力的安全检查和实践。
实施 DevSecOps 的好处
DevSecOps 可改善安全态势,提供早期和持续的安全保证,并更好地遵守安全标准。这种积极主动的安全方法有助于及早发现漏洞并降低风险。
DevSecOps 的挑战和局限性
与 DevOps 一样,DevSecOps 也面临着挑战。这些挑战包括文化转变的潜在阻力、全面安全培训的必要性以及不断适应新兴安全威胁的需要。
DevOps vs DevSecOps:
它们的相似之处
虽然 DevOps 和 DevSecOps 有不同的侧重点和方法,但它们也有一些相似之处,这有助于它们在现代软件开发中发挥效力。

以下是这两种方法的一些主要相似之处:
合作与交流
DevOps 和 DevSecOps 都强调团队之间的协作和有效沟通。它们提倡打破各自为政的局面,培养责任共担的文化,让开发人员、运营人员和安全专业人员朝着共同的目标共同努力。
持续改进
DevOps 和 DevSecOps 都崇尚持续改进的文化。它们鼓励团队采用迭代开发周期、收集反馈并逐步改进软件开发和交付流程。持续监控、测试和反馈循环是这两种方法不可或缺的一部分。
共同承担质量责任
质量保证是 DevOps 和 DevSecOps 的共同责任。所有团队成员都有责任确保软件的质量,而不是设立单独的质量保证团队。在整个开发生命周期中整合测试和质量检查,可以尽早发现并解决问题,从而提高软件质量。
以客户为中心的方法
这两种方法都非常重视满足客户需求和提供价值。通过不断将客户反馈和见解纳入开发流程,团队可以根据客户的期望确定功能和改进的优先级,从而开发出更多以客户为中心的产品和服务。
DevOps 与 DevSecOps:
它们有何不同?
DevOps 和 DevSecOps 是软件开发中使用的方法论,虽然它们有许多共同点,但它们的重点和方法各不相同。让我们深入探讨它们的区别:

强调安全流程
DevOps 与 DevSecOps 的主要区别在于安全的整合。DevOps 专注于开发(Dev)和运营(Ops)之间的协作,以简化软件开发生命周期,但本质上并不将安全作为其流程的关键组成部分。
另一方面,DevSecOps 将安全(Sec)作为软件开发和交付流程中一个基础且不可或缺的组成部分。它将安全考量置于首要位置,倡导“安全即代码”理念,以确保开发过程的每个阶段都能考虑到可能存在的安全影响。这种方法旨在主动识别和缓解漏洞,而非在开发完成后或发生安全事件后才加以处理。
文化与团队参与
在 DevOps 环境中,开发人员和IT 运营人员之间的主要协作是确保持续集成和交付(CI/CD)。其目的是创造一种环境,让软件的构建、测试和发布能够更快速、更频繁、更可靠地进行。
相比之下,DevSecOps 将这种协作文化扩展到了安全团队。在这种模式下,SDL 中的每个人都要对安全负责,从根本上打破了开发、运营和安全团队之间的隔阂。DevSecOps 方法倡导 "人人参与安全,人人为安全服务 "的理念,使安全成为共同的责任。
安全集成的时间安排
在传统的 DevOps 模型中,团队通常将安全措施作为独立流程来实施,一般是在软件开发生命周期(SDL)的后期阶段。这种后期整合可能会导致延误和复杂化,尤其是在发现重大安全问题时。
DevSecOps 致力于解决这一问题,从项目一开始就将安全实践融入整个开发的各个阶段。这种 "左移 "的安全方法意味着可以在开发过程中更早地发现和解决潜在问题,从而开发出更安全可靠的最终产品。
工具和自动化
DevOps 和 DevSecOps 都使用各种工具来实现自动化和高效的流程管理,但 DevSecOps 专门使用旨在自动集成安全检查和控制的工具。这些工具包括代码分析工具、自动安全测试以及有助于识别和管理安全威胁的持续监控工具。
DevOps vs DevSecOps:
选择哪一个?
在 DevOps 和 DevSecOps 之间做出选择,最终取决于企业的具体需求、资源和战略目标。这两种方法都具有各自独特的优势,并在改善协作、加快交付周期和提高产品质量的共同目标下运行。但是,它们在安全方法上有很大不同。
如果贵组织的主要重点是加强开发和运营团队之间的协作并加快交付流程,那么 DevOps 就是理想之选。这种方法可以提高效率,打破孤岛,培养持续学习和改进的文化。通过实施 DevOps,您可以减少部署失败,更快地从失败中恢复,并加快开发周期。
另一方面,如果您的企业所处的行业受到严格监管,或者需要处理敏感的客户数据,那么 DevSecOps 可能是更明智的选择。这种方法吸收了 DevOps 的优点,并将安全注入开发生命周期的每个阶段。诚然,过渡到 DevSecOps 最初可能会让人望而生畏,并可能在早期阶段造成轻微的放缓,但它在风险缓解和法规遵从方面带来的好处使其成为值得考虑的投资。
如何从 DevOps 过渡到 DevSecOps
从 DevOps 过渡到 DevSecOps 需要精心策划和实施。以下是一份清单,可指导您完成整个过程:

第一步:评估当前的 DevOps 实践
评估现有的 DevOps 流程、工具和文化。确定可以更有效地整合安全实践的领域。
第二步:了解安全要求
确定适用于贵组织的具体安全要求和合规标准。这些见解将有助于确定过渡所需的安全集成级别。
第三步:提高安全意识
通过对团队成员进行有关 SDL 安全重要性的教育和培训,培养安全意识文化。确保每个人都了解自己在维护安全环境中的角色。
步骤四:让安全专家参与进来
在过渡过程的早期,让安全专业人员和专家参与进来。他们的专业知识将有助于识别潜在的漏洞,并制定符合贵组织目标的安全策略。
步骤五审查和更新政策
审查并更新您的安全策略,使其与 DevSecOps 的原则保持一致。将安全实践纳入现有政策,并确保将其有效传达给整个团队。
第六步:将安全融入整个生命周期
将安全实践转移到开发流程的左侧,在从规划、编码到部署和运行的每个阶段嵌入安全控制和检查。强调积极主动的安全措施,而不是仅仅依赖被动的方法。
步骤七:实施安全测试
纳入全面的安全测试,包括静态和动态代码分析、漏洞扫描和渗透测试。将这些安全测试自动化,作为 CI/CD 管道的一部分,以确保持续的安全性。
第八步自动化安全控制
利用自动化工具持续执行安全控制和策略。自动进行安全检查、配置管理和监控,确保持续的安全性和合规性。
步骤九持续监控和事件响应
对系统、应用程序和网络实施持续监控,以便及时发现和应对安全事件。制定事件响应协议,并根据经验教训定期更新。
步骤 10:协作和跨团队交流
促进开发、运营和安全团队之间的合作。鼓励开放沟通渠道,分享安全相关信息、最佳实践和经验教训。
步骤 11:评估和改进
定期评估 DevSecOps 实施的有效性。收集反馈、监控关键指标并进行安全审计,以确定需要改进的地方并相应调整流程。
软件 构成分析 (SCA):DevSecOps 的基石
软件 构成分析(SCA)是当代应用程序安全计划的基础要素。开放源码组件的激增虽然在功能和快速开发方面大有裨益,但也带来了一系列安全挑战。

要知道,并非所有 SCA 工具都具有相同的功效或洞察力,这一点至关重要。软件开发环境的不断变化要求 SCA 解决方案采用以开发人员为中心的方法。
从根本上说,SCA 工具要想在当今快节奏的开发环境中真正发挥作用,就必须满足两个主要利益相关者的需求:
开发团队
SCA 解决方案必须提供直观、对开发人员友好的工具,并能轻松集成到现有工作流程中。这可以确保开发人员继续利用开源组件的强大功能,同时对潜在漏洞保持警惕。
安保团队
虽然开发人员在确保安全编码实践方面发挥着关键作用,但安全团队也应具备指导、培训和协助他们的监督和能力。现代 SCA 工具应促进这种协作,为安全团队提供所需的洞察力,帮助开发人员将安全协议无缝地融入整个 SDLC。
开发与安全相互交织,SCA 已成为应用程序安全的关键。然而,与所有工具一样,SCA 解决方案的功效在很大程度上取决于其对现代工作流程的适应性。
SBOM 在 DevSecOps 中的重要性
软件 物料清单(SBOM)是 DevSecOps 范式的重要组成部分。SBOM 提供了应用程序中使用的所有组件(从开源库到商业组件)的详细清单。这种透明度至关重要,原因有以下几点:

有了完整的 SBOM,企业就能迅速确定自己是否使用了存在已知漏洞的组件,从而及时进行修复。

SBOM 可确保企业遵守软件组件的许可条款,避免潜在的法律纠纷。

随着供应链攻击日益猖獗,全面的 SBOM 有助于验证软件组件的完整性,确保它们未被篡改。

准确的 SBOM 可帮助企业更好地了解其风险状况,从而就组件的使用和风险接受度做出明智的决策。
从本质上讲,SBOM 将透明度、控制和前瞻性安全管理引入 DevSecOps 流程,确保安全高效的软件开发。
应用程序安全测试方法
开发团队可以利用这些方法进行应用程序安全测试。
静态应用程序安全测试 (SAST)
静态应用程序安全测试(SAST)通常称为 "白盒 "测试,是一种在不执行应用程序本身的情况下分析应用程序源代码、字节码或二进制代码安全漏洞的测试方法。SAST 的主要目标是在开发生命周期的早期发现漏洞,以确保在应用程序投入生产前解决这些问题。
动态应用安全测试 (DAST)
动态应用程序安全测试(DAST)是一种安全测试技术,它通过主动扫描和测试运行状态下的软件应用程序来评估其安全性。DAST 侧重于从外向内评估应用程序,模拟真实世界中的攻击,分析应用程序的行为和响应,以找出漏洞。
值得注意的是,DAST 有一些局限性。由于应用程序的动态特性和准确模拟所有可能攻击场景的挑战,它可能会产生假阳性或假阴性。因此,我们建议将 DAST 与静态应用安全测试 (SAST) 和交互式应用安全测试 (IAST) 等其他安全测试技术相结合,以进行全面的安全评估。
交互式应用程序安全测试 (IAST)
IAST 是一种安全测试技术,它结合了动态应用安全测试 (DAST) 和静态应用安全测试 (SAST) 的各个方面,可识别软件应用程序中的漏洞和安全缺陷。
与传统的安全测试方法不同,IAST 利用应用程序内的仪器或监控功能,在运行期间提供有关安全弱点的实时反馈。它主动监控和分析应用程序的行为、输入和输出,以识别潜在的安全漏洞。
IAST 是企业应用程序安全测试战略的重要补充,有助于识别漏洞并加强软件应用程序的安全态势。
结论
在软件开发领域,DevOps 和 DevSecOps 之间的选择取决于企业的独特需求和优先事项。DevOps 强调协作和效率,能够加快交付速度并提高质量。DevSecOps 则更进一步,将安全融入整个开发流程,主动识别并减少漏洞。
DevOps 和 DevSecOps 并不是相互排斥的选择。企业可以在采用 DevOps 的同时,随着安全变得更加优先,逐步过渡到 DevSecOps。
在协作、效率和安全之间取得适当的平衡,是释放软件开发流程的全部潜力并提供安全、高质量解决方案的关键。
常见问题(FAQ)
问:DevOps 和 DevSecOps 能否共存?
答:完全正确。事实上,DevSecOps 本质上就是更强调安全性的 DevOps
问:DevSecOps 比 DevOps 更好吗?
答:不一定。这不是好坏的问题,而是适合贵组织需求和能力的问题。如果安全对您的企业至关重要,那么 DevSecOps 可能更适合您。
问:DevSecOps 需要哪些技能?
答:DevSecOps 需要深入了解 DevOps 原则和各种安全实践。自动化、CI/CD、云安全和威胁建模方面的技能尤为重要。
问:为什么安全在开发过程中如此重要?
答:安全漏洞会给公司造成巨大的财务和声誉损失。企业可以通过将安全融入开发流程来大大降低风险。
问:DevOps 如何促进软件开发?
答:DevOps 通过促进开发和运营团队之间的协作、实现流程自动化以及实施持续集成和交付,来加强软件开发。
问:DevSecOps 如何改进 DevOps?
答:DevSecOps 在 DevOps 的基础上进行了改进,将安全因素纳入开发流程的每一个步骤。这降低了安全问题的风险,并降低了解决这些问题的成本。
问:DevOps 和 DevSecOps 中使用的顶级工具有哪些?
A:Jenkins、Docker、Kubernetes 和 Puppet 是 DevOps 和 DevSecOps 领域中广泛使用的顶级工具。
