DevSecOps原理、核心技术与实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.1 DevOps组织型模型

DevSecOps起源于DevOps,熟悉DevOps模型有助于读者理解组织运转、周边协同、流程设置在DevSecOps中的作用。

1. DevOps关键特性

DevOps作为DevSecOps的基础,其本身具有如图1-10所示的4个关键特性,这些特性在DevSecOps落地过程中,为安全活动的执行提供了流程保障和组织保障。

图1-10 DevOps关键特性

自动化。自动化在DevOps模型中是指研发流程的自动化,尤其是在测试和部署阶段,使用自动化测试工具完成测试,并通过自动化构建、自动化发布加快生产部署的过程,提升整体研发效能。

多边协作。多边协作是DevOps模型中倡导的协同文化,促进开发人员和运维人员的合作与整合,责任共担,减少因沟通和信息传递带来的损耗,从而提升生产效率,缩短交付周期。

持续集成。持续集成是指在DevOps中以IT自动化,以及持续集成(CI)、持续部署(CD)为基础,构建程序化的开发、测试、运维等管道化能力,以帮助企业在人工很少干预的情况下,向客户交付应用的效率更高、时间更短,并通过持续的产品质量改进,增加服务功能,实现精益发展。

配置管理。配置管理是指在DevOps中使用配置文件,管理代码、测试环境、生产环境,保证应用程序与资源交互的正确性。在更小、更频繁的版本迭代中,降低变更风险,以应用程序为中心来理解基础设施,管理基础设施。

从DevOps关键特性可以看出,无论是组织层面的多边协作、拉通,管道化的持续集成能力,还是配置管理的自动化能力,都为DevSecOps的落地打下了良好的基础。

2. DevOps生命周期

在DevOps中,研发过程共划分为8个组成部分,如图1-11所示。

图1-11 DevOps研发过程中的8个组成部分

这8个组成部分在DevOps生命周期中,根据包含组成部分的不同,又可以划分为不同的DevOps阶段。这些阶段之中,主要的有持续集成、持续交付、持续部署,它们之间的区别如图1-12所示。

图1-12 DevOps中持续集成、持续交付、持续部署示意图

持续集成是指持续地将所有开发者的代码合并到源码仓库主干上,确保代码合并后的集成测试通过。业界通常称为CI,即Continuous Integration的缩写。

持续交付是指持续地输出可交付产物,与持续集成的不同在于输出产物达到了可交付条件,保证产物在生产环境可用。而可交付产物部署到生产环境,往往通过手工操作完成。业界通常称为CD,即Continuous Delivery的缩写。

持续部署是指通过自动化手段,将持续交付阶段输出的产物自动化部署到生产环境。业界通常称为CD,即Continuous Deploy的缩写。

3. DevOps管道与流程

在DevOps中强调自动化的重要性,而自动化工作的完成主要依赖DevOps管道及其相关工具。一个典型的DevOps管道操作流程如图1-13所示。

图1-13 DevOps管道操作流程示意图

从图1-13可以看出,研发过程中的关键活动在DevOps管道上有相应的信息化系统承载,如代码管理对应源码配置管理平台,构建测试调度对应CI/CD等。通过DevOps管道的流水线作业,将需开发求、编码测试、镜像管理、部署等环节串联了起来,各个不同的角色和岗位人员参与其中,共同推动交付过程。

从上文对DevOps关键特性、DevOps生命周期、DevOps管道与流程的介绍,读者对DevOps模型有了基本的了解。同时,细心的读者也会发现,在DevOps模型中,安全在生命周期中的参与很少,仅靠DevOps管道中当前对安全能力的引入无法真正解决实际所需的安全问题,这也是为什么后面业界提出DevSecOps的原因。但作为DevSecOps从业人员,必须了解DevOps,它是DevSecOps的基础。只有了解了DevOps的关键特性、生命周期、流程管道,在后续的DevSecOps实践中,才能更好地制定既符合组织发展,又兼顾多方利益的、可以落地的安全措施。