一、平台架构概述
1.1 概述
既然DevSecOps平台建设的需求来源清楚了,那么,接下来以这些需求为出发点,介绍一个DevSecOps平台的基本架构组成。
二、DevSecOps平台架构组成内容
2.1 DevSecOps平台的建设目标
DevSecOps平台的建设目标是保障DevSecOps体系建设在企业内部的落地,它承载着DevSecOps理念和企业业务目标、组织架构、协作流程等在安全领域的实现,是企业安全管理的作业流水线,也是众多安全工作条理化的纲要。平台作为整个体系中的一部分,其定位首先要满足业务的目标或愿景。
如上图所示,在企业内部,DevSecOps平台充当着原始需求和最终交付之间的管道,兼顾研发过程、安全与平台自身,通过度量指标运营与分析,共同推动企业整体研发效能的持续改进。
2.2 DevSecOps平台架构
2.2.1 平台架构图
基于此平台定位之上,典型的DevSecOps平台架构如下图所示。
2.2.2 平台架构组成
从架构图中可以看出,典型的DevSecOps平台架构一般至少包含3个组成部分,分别为:
2.2.2.1 黄金管道子系统
2.2.2.1.1 概念解析
黄金管道子系统,即研发信息化管道,通常为CI/CD系统,它是整个DevSecOps开展工作的基础,不同的角色依托于此管道之上,开展日常的研发活动,如需求分析、代码开发、编译构建、测试验证、发布部署等。
2.2.2.1.2 概念来源
黄金管道是2018年美国RSAC大会上提出的概念,在技术实现上它对应于CI/CD软件研发流水线。通过管道化流程线,标准化软件研发流程,简化软件开发活动,输出持续、稳定、安全的高质量的软件产品。
2.2.2.1.3 DevSecOps 与软件开发模型的关系
在前面文章内容介绍DevSecOps的核心流程时,曾提其与软件开发模型的关系,如下图所示。
2.2.2.1.3 黄金管道核心流程
2.2.2.1.3.1 黄金管道核心流程图
2.2.2.1.3.2 黄金管道核心流程内容
黄金管道就是基于DevOps持续集成、持续交付、持续部署等核心流程之上的技术实现,从开发阶段开始,到部署阶段结束。它基本涵盖软件研发过程中,占用人力资源最多、花费时间最长、也是最为烦琐的研发环节。在开源技术中,其实现和核心流程如上图所示。
基于这样的黄金管道之上,开发人员可以流程化地完成对需求的编码开发到测试后的发布上线。当有多个开发人员并行开发时,其流程是一致的,当有多个角色参与开发活动时,整体的流程也是一致。
关于黄金管道更多的技术细节将在后续文章为大家详细地介绍。篇幅原因,这里就暂时只是提一下。
2.2.2.2 工具链子系统
2.2.2.2.1 概念解析
工具链子系统,通常是指黄金管道及其流程实现依赖的工具,除了安全工具之外,也包含业界常说的DevOps工具。从架构图中可以看出,这些不同的工具在整个链路上承载着不同的业务功能,起到贯穿管理与技术落地的作用。因其是在整个链路的不同阶段或不同层次,故称为工具链。
2.2.2.2.2 安全工具链的分布
2.2.2.2.2.1 安全工具链分布图
在DevSecOps中,重点强调的是安全工具链。安全工具链依附于黄金管道之上,提供管道流程中各个不同环节的安全活动所需要的安全能力,如下图所示。
2.2.2.2.2.2 安全工具链分布说明
在黄金管道CI/CD这条链路上,聚集着不同的安全工具。例如,静态安全检测SAST和软件成分分析SCA适合在开发和构建阶段集成至CI/CD流水线,动态安全检测DAST和交互式安全检测IAST适合在测试阶段集成至CI/CD流水线。在整个DevSecOps平台中,这样的安全工具很多,它们围绕着黄金管道的主流程,呈链状分布,共同保障整个研发生命周期的安全性。
安全工具链的技术细节这里也不展开多说,后续文章为大家详细地介绍。
2.2.2.3 周边生态子系统
2.2.2.3.1 概念解析
周边生态子系统,这里主要是指研发信息化系统。从DevSecOps理念和平台定位上来看,平台既需要起到加强周边协作的作用,也需要为DevSecOps体系建设的持续改进提供数据分析和决策支撑,所以与DevSecOps流程相关的周边信息化系统也需要纳入大的DevSecOps平台中,完成数据对接与打通,以便各个不同的管理角色了解DevSecOps当前态势和变化趋势。
2.2.2.3.2 周边生态子系统的作用
DevSecOps体系建设在实施与运营过程中,需要依赖周边系统的协作来完成整个研发流程,或者通过周边系统的辅助来提高整体研发效率。
2.2.2.3.3 周边生态子系统的组成内容
在这些周边系统里,与DevSecOps体系尤为密切的系统有项目管理系统、代码仓库、组件仓库、镜像仓库等。它们为黄金管道提供基础数据,为研发活动提供服务支撑,是DevSecOps平台中不可或缺的基础设施。
2.2.2.3.4 CMDB在CI/CD中的使用
这里列举一下周边生态子系统的组成CMDB在CI/CD流程中的使用,如下图所示:
CMDB在CI/CD中为整个流程的数字化提供基础数据支撑。
DevSecOps中涉及的诸多周边生态这里也不作过多说明,后续文章会根据流程的不同,分别为大家详细地介绍。
2.3 总结
黄金管理、工具链、周边生态子系统,他们依托基础仓库,对基础设施资源进行调度和管理,一起组成了整个DevSecOps平台的全部。通过平台向用户提供涵盖规划、编码、构建、测试、发布、部署和维护等研发工作的平台能力,向平台管理者提供平台使用率、平台可用性、漏洞平均检测时间、漏洞平均修复时间、自动化覆盖率等管理数据。