DevSecOps 是“开发、安全和运营”的缩写,它可在软件开发生命周期的各个阶段自动集成安全性 - 从最初的设计到集成、测试、部署,一直到软件交付。
DevSecOps 代表着开发组织实施安全性的自然且必要的发展过程。 过去,安全性总是由单独的安全团队在开发周期结束时(几乎是事后)添加到软件中,并由单独的质量保证 (QA) 团队进行测试。
如果每年只发布一两次软件更新,这种方法还能够应付。 但是,随着软件开发人员采用了敏捷和 DevOps 实践,软件开发 周期缩短到几周甚至几天,传统的“添加式”安全方法就造成了让人无法接受的瓶颈。
DevSecOps 可将应用和基础架构安全性无缝集成到敏捷和 DevOps 流程和工具中。 它可以在安全问题一出现就解决这些问题,处理起来更加得心应手、速度更快,且成本更低,并且不会将这些问题带入生产环境。 此外,DevSecOps 使应用和基础架构安全性成为开发、安全和 IT 运营团队的共同责任,而不仅仅是安全团队一方的责任。 它支持“更安全、更迅速地交付软件”- 这是 DevSecOps 的座右铭,可在不减慢软件开发周期的情况下自动交付安全的软件。
DevSecOps 的两个主要优势就是速度和安全性。 开发团队可以更快地交付更安全的代码,因此成本也更低。
《DevSecOps 宣言》的合著者 Shannon Lietz 解释道:“DevSecOps 的目的和意图是建立每个人都对安全负责的理念,目标是在不牺牲必要安全性的情况下,快速、安全、大规模地将安全决策分配给那些拥有最高背景级别的人。"
在非 DevSecOps 环境中开发软件时,安全问题会导致时间上的巨大延迟。 修复代码和安全问题既十分耗时又成本高昂。 DevSecOps 的快速安全交付可节省时间并减少成本,尽可能地避免在事后重复执行流程来解决安全问题。
由于集成安全性避免了重复审查和不必要的重新构建,从而产生了更安全的代码,因此 DevSecOps 更高效,成本效益也更高。
DevSecOps 从开发周期一开始就引入了网络安全流程。 在整个开发周期中,会对代码进行审查、审计、扫描和测试,积极查找安全问题。 一旦发现问题,就会立即处理。 解决安全问题之后,才会引入其他依赖项。 如果在周期中尽早确定和实施防护技术,就可以降低安全问题的修复成本。
此外,开发、安全和运营团队之间更密切的协作有助于改进组织对所发生事件和问题的响应情况。 DevSecOps 实践有助于缩短漏洞修补时间,并使安全团队能够专注于更高价值的工作。 这些做法还可确保并简化合规性,使应用开发项目不必为实现安全性而重新改造。
DevSecOps 的一个主要优势在于,它能够快速管理新发现的安全漏洞。 随着 DevSecOps 将漏洞扫描和补丁集成到发布周期中,发现和修补常见漏洞和风险 (CVE) 的能力逐渐退出舞台。 这限制了威胁制造者在面向公众的生产系统中利用漏洞的时间窗口。
如果组织使用持续集成/持续交付管道来交付他们的软件,那么可以将网络安全测试集成到运营团队的自动化测试套件中。
安全检查自动化很大程度上取决于项目和组织目标。 自动化测试可确保整合的软件依赖项处于适当的补丁级别,并确认软件通过安全单元测试。 此外,在最终更新升级到生产环境之前,它可以使用静态和动态分析来测试和保护代码。
随着组织逐步成熟,其安全布局也日趋成熟。 DevSecOps 将自身实施为可重复、自适应的过程。 这确保在环境中一致地应用安全性,随着环境发生变化,安全性也会适应新要求。 DevSecOps 的成熟实施将实现可靠的自动化、配置管理、业务流程、容器、不可变的基础架构,甚至是无服务器计算环境。
DevSecOps 可将安全控制自然融入开发、交付和运营流程。
“左移”是一条 DevSecOps 准则:它鼓励软件工程师将安全性从 DevOps(交付)流程的右侧(结束)移动到左侧(开始)。 在 DevSecOps 环境中,安全性从一开始就成为开发流程不可分割的组成部分。 使用 DevSecOps 的组织会将网络安全架构师和工程师纳入开发团队。 他们的工作是确保堆栈中的每个组件和每个配置项都经过修补、安全配置且记录在案。
左移让 DevSecOps 团队能够及早发现安全风险,并确保立即解决这些安全威胁。 开发团队不仅要考虑高效地构建产品,还在构建时实施安全性。
安全性是工程与合规性的结合。 组织应在开发工程师、运营团队和合规团队之间形成联盟,确保组织中的所有人都了解公司的安全状况,且遵循相同的标准。
参与交付过程的每个人都应该熟悉应用安全性的基本原则、开放式 Web 应用安全项目 (OWASP) 提出的十大安全风险列表、应用安全测试和其他安全工程实践。 开发人员需要了解线程模型和合规检查,知道如何衡量风险和暴露情况以及如何实施安全控制措施。
出色的领导阶层能够促进良好的企业文化,推动组织内的变革。 在 DevSecOps 中,传达流程和产品所有权的安全职责至关重要。 只有这样,开发人员和工程师才能成为流程负责人,为其工作承担责任。
DevSecOps 运营团队可使用适合其团队和当前项目的技术和协议,创建适当的系统。 通过支持团队创建适合自身需求的工作流程环境,他们成为投资于项目成果的利益相关方。
通过在 DevSecOps 流程中实现可跟踪性、可审计性和可见性,最终可获得更深入的洞察,建立更安全的环境: