什么是DevSecOps?
随着大家都在向云端迁移,DevOps 也备受追捧,人们纷纷称赞它能让流程更快、更便捷、更高效。作为一名开发者,我当然乐见一切变得更轻松。但作为一名安全从业者,我却担忧云端安全迁移的现状。于是,DevSecOps 应运而生。
DevSecOps 的核心在于将安全机制更早地引入软件开发生命周期 (SDLC)。其目标是通过让 SDLC 中的所有参与者都承担安全责任,从而开发出更安全的应用程序。我非常喜欢这个理念。让业务、技术和安全团队携手合作,共同打造安全的产品,简直是梦想成真。或许好得令人难以置信?让我们深入探究,看看 DevSecOps 是否真的能成为我们构建安全产品所需的灵丹妙药。
首先,我们来谈谈为什么需要DevSecOps。多年前,软件产品遵循瀑布式开发方法,这是一种线性顺序的产品开发方法,最终以“大爆炸”式的发布结束。
随着云计算和资源动态配置的兴起,开发者在应用开发的速度、规模和成本方面获得了诸多优势。这些优势与DevOps理念完美契合。DevOps大力倡导在软件开发生命周期(SDLC)的各个阶段进行自动化和监控。其目标是缩短开发周期、提高部署频率并实现更可靠的版本发布,所有这些都与业务目标保持一致。正如我之前所说,作为一名开发者,我非常喜欢这种理念。但是,稳定的基础设施和应用并不等同于安全的基础设施和应用。这让我感到担忧。在传统的瀑布式开发流程中,安全检查被安排在产品发布前的最后阶段。安全被视为一道障碍,是通往生产环境的最后一道关卡。尽管应用开发方式发生了诸多变化,但人们对安全的看法却依然如故。
如今,大多数团队都采用敏捷方法进行软件开发。在敏捷环境中,重点在于快速交付。通过迭代计划和反馈,团队可以持续地将产品交付物与业务需求保持一致。这种对不断变化的需求的适应性对于交付有意义的产品至关重要,但如果您每周都发布新版本,那么何时进行安全漏洞测试呢?遗憾的是,传统的安全流程并未跟上敏捷/DevOps环境的步伐,导致安全成为软件开发中的一大障碍,通常被忽略。即使不忽略,开发团队也往往没有足够的时间在产品上线前解决所有问题,这意味着一个不安全的应用程序将存在于互联网的某个角落。讽刺的是,为了避免错过截止日期而忽视安全,实际上会给应用程序带来更大的风险。软件开发生命周期(SDLC)中的安全缺陷可能导致严重的漏洞,例如由糟糕的代码引起的安全漏洞。这就是我们需要DevSecOps的原因。
在DevSecOps中,看似对立的两个目标——“交付速度”和“代码安全”——被融合到一个精简/自动化的流程中。DevSecOps的宗旨是秉持“人人为安全负责”的理念,将安全左移并实现核心安全任务的自动化。还记得碧昂丝的歌曲《Irreplaceable》吗?我知道这首歌有点老了,但碧昂丝唱的“向左,向左”确实很有道理。
我们希望将安全工作提前到软件开发生命周期(SDLC)的早期阶段,以确保应用程序安全从代码编写之初就得到保障。通过这种左移,团队可以快速发现和分析漏洞,并调整代码以缓解这些漏洞。
DevSecOps 使开发人员能够专注于编写高质量、安全的代码,从而使团队能够发布性能卓越的应用程序。其优势显而易见:
- 从一开始就采取安全措施可以最大限度地降低漏洞出现的可能性。
- 在流水线中运行自动化安全工具,可以让安全团队成员专注于最容易解决的问题。
- 开发团队和安全团队之间需要更好的协作和沟通
- 提升安全和企业运营效率
然而,DevSecOps 也面临着一些挑战。即使安全机制已融入流水线,仍然存在绕过安全检查点的方法。例如,假设使用漏洞扫描器来阻止构建/部署,一旦发现特定漏洞就会停止。作为开发人员,您知道漏洞是什么,也知道您的代码中存在该漏洞,但您确实需要发布此版本。因此,您想办法隐藏那些您知道无法通过安全扫描的代码片段,从而成功构建。另一种常见情况是,团队决定在发现一个或多个特定严重级别的漏洞时中断构建。例如,团队可能会表示,除非发现的漏洞级别为高或严重,否则他们不想中断构建。虽然这确实有助于立即识别和解决高优先级问题,但其后果是,中等和低优先级的漏洞最终会进入生产版本。
既然我们已经讨论了DevSecOps的优缺点,那么究竟该如何实施呢?传统的DevOps工具,例如Jenkins和Git,是构建DevOps流水线基础的必备工具。市面上有很多安全工具,从开源到专有解决方案应有尽有。其中许多工具都可以集成到你现有的流水线中。以下是我根据经验和网络资源整理的一份清单:
- Checkmarx:一款 SAST(静态应用程序安全测试)工具,用于分析应用程序代码中的缺陷,这些缺陷表明存在安全漏洞。
- WhiteSource:一款开源漏洞扫描器,可在后台自动持续运行,跟踪开源组件的安全性、许可和质量,并将其与 WhiteSource 的综合开源存储库数据库进行匹配。
- Zaproxy:OWASP Zed Attack Proxy (ZAP) 是一款易于使用的集成渗透测试工具,用于查找 Web 应用程序中的漏洞。
所以DevSecOps是解决我们所有问题的灵丹妙药吗?也许不能解决所有问题,但对我以及许多其他人来说,它是不可替代的,我已经准备好登上这趟热潮列车,一路追随到底。
这是我的“什么是”科技博客系列的第十一篇文章。我每周都会在这里和我的博客上更新!
文章来源:https://dev.to/aditichaudhry92/what-is-devsecops-gge


