什么是DevSecOps?开发人员如何为安全而左移

在IT流行语的字母组合中,DevSecOps是一个很容易让人混淆的缩写。

DevSecOps是一个特定工具吗?

是否有DevSecOps流程或最佳实践?

DevSecOps 应该成为内部 IT 部门的优先事项,还是更广泛的公司理念?

如果一个公司已经利用了DevOps的流程和技术栈,那么它应该升级到DevSecOps吗?或者这只会让已经超负荷的流程变得更复杂吗?

DevSecOps不仅仅是一个流行的词,它已经成为成熟组织在全面开发过程中演进的下一步。

 

 

DevOps从传统软件开发生命周期的自然演变

DevOps(开发-运营)作为一种集成的流程理念在2008年左右出现了发展势头。

传统上,软件开发生命周期(SDLC)遵循结构化的瀑布方法。依赖于某个部分的完成会导致瓶颈,从而导致应用程序、修复和更改的交付速度变慢。

为了满足市场需求和提高内部开发速度,IT运营和软件开发部门需要更快地发布代码。产品需要在没有重大障碍的情况下快速实施。

随着对速度的需求不断增加,新的敏捷开发方法获得普及。随着团队一起开发和测试,这个过程涉及更频繁地发布和调整。

通过协作和自动化,这种更快的交付方式导致了持续的开发过程,从而形成了今天的集成DevOps过程。

为什么DevOps必须向左移动以确保安全

然而,现代 DevOps 流程的速度和自动化可能会增加风险以及更多漏洞和缺陷。

在传统的 DevOps 流程中,安全评估在开发流程结束时进行。这种安全至上的方法:

通过其被动的、强制性的安全方法减慢开发生命周期。

导致开发人员和安全团队产生间隙,因为他们需要重新处理几乎交付的代码来修复本可以更早发现和解决的安全问题。

因此,组织已经开始向左转移,即主动将安全性引入开发生命周期本身,而不是在最后一刻进行安全修复。

尽管安全性的重要性得到了普遍认可,因为这种额外的责任会影响开发人员推出新代码的效率。

此外,开发人员不是安全专家。他们如何知道应该优先考虑哪个漏洞?为什么他们要负责解释没有上下文的数据可能存在的安全风险?

开发也不是唯一需要增加安全集成的过程。运营团队也必须包括在新的安全优先级中,因为操作系统、数据库、Web 服务器和技术基础设施的其他部分经常包含许多潜在的漏洞和缺陷。

最终,DevSecOps在允许开发敏捷性和速度之间取得了很好的平衡,同时保持了安全的应用程序和操作环境。这种全面的协作过程需要所有三个团队之间的意识和自动化:开发、运营和安全。

开发人员需要认识到安全性的重要性,而不是将其视为降低生产力效率的阻力,并主动将风险评估和修复纳入开发生命周期本身。

安全性和运营必须通过提高效率和确定漏洞和弱点的优先级来确保和促进持续的开发生命周期。

没有通用的DevSecOps工具

坦率地说,在一个持续集成/持续交付(CI/CD)管道中,没有一个工具或解决方案能够解决许多不同的需求。

DevSecOps 涵盖了太多不同的专业和潜在挑战,单一的技术或应用无法覆盖所有领域。作为有效的DevSecOps协议的一部分,组织可以进行:

基础设施扫描

动态应用程序和静态代码扫描

第三方漏洞扫描

自动化渗透测试

API模糊测试

当然,这只是技术要求的一部分。

不要忘记许多其他必须综合、整合和采取行动的漏洞信息来源。

在不增加额外工作的情况下优先考虑DevSecOps理念

最终,DevSecOps并不是开发过程中的一次性工具或单点,而是关于自动化、协作和集成。

毕竟,左移不仅仅是一个用来描述开发人员单独考虑安全性的过程的术语。向左转移要求整个团队从项目的一开始就考虑潜在的漏洞、弱点和风险。

这种转变需要在开发过程中通过SAST、SCA等工具扫描代码,并在出现问题时作为整体操作的常规、集成部分进行修复。自动化安全测试应该与软件开发并行执行,在代码审查期间合并,并添加到验收测试标准中。

而且,如果要将安全性直接纳入一般运营和开发流程的一部分,那么漏洞和弱点数据的汇总和优先级排序就变得至关重要。

成熟的DevSecOps项目的自动化、集成技术栈

虽然DevSecOps没有一个工具可以涵盖流程的每个部分,但必须有一个强大的工具集来跟踪跨团队的工作并协调关键任务,以便在代码公开之前消除代码中的安全漏洞。

开发人员倾向于使用特定工具(例如 Jira)来管理他们的工作负载。另一方面,运营团队可能使用服务管理解决方案,安全团队通常拥有不同的工具套件,如通过WuKong静态软件安全测试工具检测代码缺陷和漏洞,SCA扫描开源组件安全等,它们可能集成也可能不集成。

许多实施DevSecOps流程的组织发现,将这些信息自动化和集中到一个普遍可访问的集成中心,使所有团队(开发、运营和安全等)能够在正确的时间处理正确的任务,同时实现跨部门的测量和对关键KPI进行报告。

通过DevSecOps赋能开发周期

最后,DevSecOps是关于增强开发、安全和运营团队之间的协作。

开发人员和运营人员接受有关安全意识的培训,并配备适当的工具和流程以促进早期的安全重点。通过授权团队在DevOps生命周期中承担安全责任,DevSecOps使开发、安全和运营团队能够更快地发现和修复安全问题。

posted @ 2022-05-24 13:45  中科天齐软件原生安全  阅读(471)  评论(0编辑  收藏  举报