DevSecOps高效实践的五项核心原则
如何在不干扰高效的DevOps流程或降低开发者体验的情况下,提升应用程序的安全性,一直是构建现代应用程序所面临的挑战之一。如今的网络威胁形式严峻,四处充斥着针对整个软件供应链不同环节的复杂攻击。软件供应商门迫切需要一个深度整合安全因素的DevSecOps实践来将安全性贯穿于软件开发生命周期的各个阶段。
然而,重要的是该如何实施高效的 DevSecOps实践。像限制对开发平台的访问、实施彻底的代码审查,以及强制执行繁重的审批流程等,这些措施的确能够在一定程度上提高开发流程和代码的安全性,但同时也阻碍了应用开发团队的灵活运作与创新。针对应用程序的安全测试亦是如此,即使发现了大量的漏洞,但如果开发人员没有足够的时间或解决方案来修复它们的话,最后也无济于事。
从高层次上来看,构建并运行一个DevSecOps实践意味着组织能够操纵一个安全的交付平台,检测软件漏洞,对其进行优先级划分并修复,避免发布不安全的代码,并确保软件及其所有组件的完整性。
然而,建立并运营一个高效的DevSecOps实践就意味着要在相同(或更高)的开发速度和整体开发者满意度水平上实现这些目标。要达到这一点,以下五个指导原则至关重要。
一个蓬勃而高效的文化对于任何团队的成功都是不可或缺的,但同时也是最难把握的要素。这一点在DevSecOps领域尤其明显,最近的一项行业研究显示,“超过一半(51%)的IT决策者认为自己的团队对于变革毫无热情,同时47%的表示其团队缺乏跨团队的合作。
团队文化对于DevSecOps实践的重要性不该被忽略,而文化的形成应该从将安全视为所有利益相关者的首要任务开始。。
使安全成为一种共同责任
对于任何一个生产、销售或使用软件的组织来说,它的每一位员工都需要为组织整体的安全负责,而不仅仅是哪些职位中带有“安全”字样的人员。究其核心,DevSecOps是一种共担责任的文化,同时,以共同的安全导向思维运作也决定了DevSecOps流程如何适应并推动更好地选择DevOps平台、工具以及安全解决方案。
思维模式不会一夜之间改变,但可以通过以下方式来实现安全目标的一致以及安全责任感:
打破职能隔阂,持续协作
由于DevSecOps是软件开发、IT运维和安全的交汇点,因此打破隔阂,积极持续地进行协作对于成功非常关键。对于一个没有建立正式DevSecOps框架的DevOps中心化组织来说,安全团队的介入就像一个不受欢迎的闯入者一样。突然强加的流程变更或工具往往会导致开发流程的阻滞以及开发者不必要的劳动。举一个常见的例子,安全部门往往会要求增加额外的软件安全检查,却没有考虑它们在开发交付流程中的位置,以及处理扫描信息和修复漏洞所需要的工作量,而这些最终都会落到开发人员身上。
推动协作,以作为一个团结的DevSecOps团队运作,要做到以下几点。
应用程序安全事件数量的减少
审计时间的缩短
部署频率的降低
变更失败率的下降
生产环境中漏洞数量的减少
使用SBOM/SLSA部署到生产环境的构件
一谈到DevSecOps,就不可能避开“左移”的说法。安全左移的口号在如今以DevSecOps为导向的文章、博客和营销资料中十分普遍,以至于让人们简单地认为只要将安全检查向软件开发生命周期的上游推进,就能实现一个有效的DevSecOps流程。然而,实际情况是DevSecOps成功与否取决于左移的具体内容。
安全左移基于一个已经被证实的理念,即在软件开发流程中较早进行安全测试(而不仅仅是在生产之前),就会有更好的机会发现已知的代码和组件漏洞,并及时进行修复。然而,如果测试运行、扫描信息的收集、漏洞优先级评定以及漏洞修复等所有工作的负担都落到开发人员身上,那么其所产生的心理负荷和生理疲劳必定会影响生产速度。相反,最佳的方法是遵循以下准则:
在DevOps世界中,一切都发展地很快,也很容易出现差错。即使是细小的错误或遗漏(例如漏掉的CVE或开发流程中未经授权的配置更改),都有可能会带来严重的安全合规风险。因此,在整个开发环境中建立全面治理和严格防护的价值不容小觑。如果一个组织的DevSecOps实践是有效的,那么它一定已经建立了一种安全与合规的文化,使得正确的行为成为标准,而错误的行为则成为例外。以下是实现这一目标的指导意见:
如今,软件开发商会使用各种各样的开源软件(OSS)组件以及其他第三方组件来构建自己的应用程序,使得现代应用程序安全挑战变得越来越复杂。每个组件都会向最终产品引入新的潜在漏洞,使得软件的客户和消费者不得不面临更多的威胁。应用程序整体的安全合规风险取决于所有为其开发和交付软件做出过贡献的代码、人员、系统以及流程,无论这些贡献来源于组织内部还是外部。
正如Solarwinds、Log4j以及Codecov等安全事件所展示的那样,开源软件组件已然成为了攻击者的理想目标。一旦某个组件被挖掘出了漏洞,就会有数十万甚至数百万的最终消费者受到严重威胁。因此,DevSecOps的重点必须从组织的源代码扩展到整个软件供应链,即所有代码、人员、系统和流程的总和,这些都是软件开发与交付所绕不开的要素。
为了确保组织所开发的所有软件的完整性,DevSecOps团队必须采用符合SLSA框架和14028号行政命令的工具与实践。
保护软件供应链需要DevSecOps团队做到以下几点:
如今DevOps已经成为了持续集成和持续部署实践的代名词,所以我们可以理所应当地认为DevSecOps可以肩负起持续安全的重任。一个成功的DevSecOps离不开与应用程序开发速度的同步。虽然一个新兴的DevSecOps计划无疑需要时间来建立敏捷性和有效性,但我们仍可以利用自动化和人工智能等技术来加速DevSecOps成熟度的提升。
以下是如何以及在何处应用它们的几个重要建议:
尽管高效的DevSecOps实践对于软件生产组织至关重要,但关于如何构建一个既能加强整体应用安全态势,又不会增加工作负担或降低开发人员体验的实践标准却很少有明确的规范。
上述的五项原则能够在一定程度上促进DevSecOps团队建立并维护一个坚实的运营基础。随着现代DevOps技术和实践的迅速发展,始终会有全新未知的安全问题需要解决。只要开发人员、DevOps工程师以及安全人员作为一个紧密的团队共同努力,那么通往DevSecOps卓越的道路就会越来越清晰。
DevSecOps的核心在于打破软件开发生命周期中所涉及的不同角色之间的隔阂,并依托底层工具和平台来实现一个安全自动化能力。 DevSecOps意味着将Sec因素贯穿于整个DevOps流程中,这不仅需要开发团队共担起安全重任,同时也要求安全团队确保自己的工作方式与迭代式开发模型相适应,提供实时、同步的安全反馈和支持,尽量在不牺牲敏捷性的前提下实现安全。
* 本文为茉泠编译,原文地址:https://thehackernews.com/2024/05/five-core-tenets-of-highly-effective.html
图片均来源于网络,无法联系到版权持有者。如有侵权,请与后台联系,做删除处理。