1.1.1 DevSecOps的基本概念

DevSecOps是在DevOps的基础上逐渐发展起来的,在业界,虽然不同国家的媒体、世界知名互联网企业、全球公益性组织都在讨论DevSecOps,但关于DevSecOps的定义至今仍没有统一的说法。这里,我们不妨在美国国家标准与技术研究院(NIST)对DevOps定义的基础上,综合信息安全管理体系的定义格式,对DevSecOps做一个概念性描述:

DevSecOps是企业在软件工程领域开展的一项安全工程实践,它的核心在于依托平台和工具构建安全自动化能力,打破软件开发到发布过程中涉及的开发、安全和运维等不同角色或组织之间的协作壁垒,使安全自动化贯穿软件开发、软件交付、基础设施和线上运维等环节,提升软件开发过程中的整体安全效能。

上述的这一段文字里,对DevSecOps概念有4个层次的基本界定。

首先,DevSecOps是一项安全工程实践。和其他的安全框架与模型不同的是,DevSecOps更注重于工程实践,虽然它也包含理论概念、过程文档、操作指南,但它更看重工程化的安全实践,解决实际问题,不只是停留在理论表面。

其次,DevSecOps是软件工程领域的安全实践。它关注的重点是软件工程领域的内容,而不是涵盖所有的IT领域。在实践过程中,如果用它来解决非软件工程领域的问题,往往会南辕北辙,达不到预期的效果。

再次,DevSecOps旨在将安全(Security)融入软件开发(Development)和IT运维(Operations)中,通过安全与开发、运维的融合,提倡内生安全,让安全实践贯穿业务信息系统的全生命周期,提升安全效能的同时,解决业界所熟知的“安全与业务两张皮”的痛点问题。

最后,DevSecOps是依赖安全平台、工具和安全自动化能力,解决组织协同和安全效能问题的。不是简单的组织和流程上的捏合,而是通过平台工具和安全自动化能力,打造软件工程安全生产流水线,贯穿各个组织的日常生产活动和软件生命周期。

用一张图来表示DevSecOps给安全工程实践带来的这种变化,如图1-1所示。

图1-1 DevSecOps给安全工程实践带来的变化

从图1-1我们可以看到,在DevSecOps环境下,安全的职责由各个不同的角色来共同承担,参与软件工程中的开发、测试、部署、运维、质量等角色,依托DevSecOps平台开展安全工作,并对安全结果负责。