DevSecOps 参考模型介绍

目录

一、参考模型概述

1.1 概述

二、参考模型分类

2.1 DevOps 组织型模型

2.1.1 DevOps 关键特性

2.1.1.1 模型特性图

2.1.1.2 特性讲解

2.1.1.2.1 自动化

2.1.1.2.2 多边协作

2.1.1.2.3 持续集成

2.1.1.2.4 配置管理

2.1.2 DevOps 生命周期

2.1.2.1 研发过程划分

2.1.2.2 研发阶段划分

2.1.2.2.1 阶段划分图

2.1.2.2.2 阶段划分说明

2.1.2.2.2.1 持续集成

2.1.2.2.2.2 持续交付

2.1.2.2.2.3 持续部署

2.1.3 DevOps 管道与流程

2.1.4 DevOps 模型总结

2.2 Gartner 普适性模型

2.2.1 Gartner对 DevSecOps的贡献

2.2.2 Gartner 安全工具链参考模型

2.2.2.1 DevSecOps 安全工具链模型图

2.2.2.2 Gartner 安全工具链模型与DevOps的比较

2.2.2.2.1 阶段划分

2.2.2.2.2 全程贯穿

2.2.2.2.3 工具支撑

2.2.3 Gartner 推荐的安全工具

2.3 DoD 实践型模型

2.3.1 DoD模型概述

2.3.2 DoD DevSecOps 体系文件构成

2.3.3 DoD DevSecOps 实践价值

2.3.4 DoD模型安全工具链及周边支持生态系统

2.3.4.1 安全工具链及周边生态图和生态说明

2.3.5 DoD模型在实践保障方面的内容

2.3.6 DoD模型持续改进方面的内容

2.3.7 DoD模型总结


一、参考模型概述

1.1 概述

在 DevSecOps的发展过程中,从DevSecOps理论的出现,到如今 DevSecOps 大量实践的落地,先后产生了一系列与DevSecOps有关的模型,这其中比较有代表性的模型分别是:DevOps 组织型模型、Gartner 普适性模型、DoD 实践型模型。

二、参考模型分类

2.1 DevOps 组织型模型

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

2.1.1 DevOps 关键特性

2.1.1.1 模型特性图

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

2.1.1.2 特性讲解
2.1.1.2.1 自动化

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

2.1.1.2.2 多边协作

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

2.1.1.2.3 持续集成

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

2.1.1.2.4 配置管理

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

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

2.1.2 DevOps 生命周期

2.1.2.1 研发过程划分

在DevOps中,研发过程共划分为8个组成部分,如下图所示:

2.1.2.2 研发阶段划分
2.1.2.2.1 阶段划分图

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

2.1.2.2.2 阶段划分说明
2.1.2.2.2.1 持续集成

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

2.1.2.2.2.2 持续交付

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

2.1.2.2.2.3 持续部署

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

2.1.3 DevOps 管道与流程

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

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

2.1.4 DevOps 模型总结

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

2.2 Gartner 普适性模型

2.2.1 Gartner对 DevSecOps的贡献

在 DevSecOps 发展的过程中,一直有着Gartner频频闪现的身影,甚至在关键时间节点上,Gartner 的推波助澜才使得 DevSecOps 真正发展起来。

Gartner对 DevSecOps的主要贡献主要有两个:

  • 一是在业界首先提出了DevSecOps 的概念并加以倡导和细化,使之更易于落地;
  • 另一个是在DevSecOps架构的基础上提出安全工具链指引模型,从普适性层面解决了大多数企业落地中切人点的难题(这也是为什么称它为普适性模型的原因)。

前文中曾提到,DevOps模型对 DevSecOps 更偏向于组织保障,缺少从安全视角对研发过程的深人理解。Gartner给出 DevSeeOps安全工具链的指引恰好弥补了这个缺陷,让广大企业管理者、安全从业人员能从安全的视角,全面地看清安全在DevOps中的实现方式。

2.2.2 Gartner 安全工具链参考模型

2.2.2.1 DevSecOps 安全工具链模型图

Gartner 给出的 DevSecOps 安全工具链模型如下图所示:

在谈及DevSecOps落地的场景时经常会用到此图。从上图中可以看出,Gartner对DevSecOps有着自己的理解,而不是完成对应DevOps,主要体现在以下几点。

2.2.2.2 Gartner 安全工具链模型与DevOps的比较
2.2.2.2.1 阶段划分

在介绍DevOps时,曾提及把研发过程划分为8个组成部分。在上图中,Gartner 把研发过程按照安全的视角一共划分了10个组成部分,并且在开发阶段和运维阶段都添加了安全监控与分析。同时,对每一个组成部分的命名也是从安全视角出发的,如检测(Detect)、响应(Response)。从这一点上说,Gartner认为安全需要融人 DevOps 流程,但并不完全一致,而是从安全管理的要求出发,将其中的组成部分拆分出更细粒度的组成模块。

2.2.2.2.2 全程贯穿

DevOps模型中对安全能力的引入通常更多的是指安全测试验证,而Gartner在设计此模型时,将安全能力分散到不同的研发活动中去,这与安全左移责任共担、多边协作的理念是一致的。

2.2.2.2.3 工具支撑

这个模型图中,很大一部分内容被各种安全工具所占据。从另一个侧面也表明,Gartner 认可安全工具在整个DevSecOps工作的关键作用。将安全工具对应到 DevOps 管道和流程上,更易于与既有流程和平台的整合,加速DevSecOps 的本地化落地。

2.2.3 Gartner 推荐的安全工具

在上节的模型图中,Gartner推荐了诸多的安全工具。需要大家注意的是,这里的工具不是仅仅指具体的某个软件产品,而是指解决安全问题的方式或手段,类似于项目管理中提及的工具的概念。如果将上节模型图按照表格的形式进行呈现,则如下表所示。

从表中可以看出、Gartner推荐的工具链很多是安全活动实践,在当前市场上,有一部分已被标准化成网络安全产品,有些还停留在人工安全活动实践阶段。它们更多的是想说明在不同的研发阶段采用什么样的实践方式解决当前阶段的安全问题。同时,表中也给初次了解 DevSecOps的读者提供了一种很好的技术实践指引,知道不同的安全活动或工具适合在研发过程的哪个阶段引人,如何通过安全左移达到安全治理的目的。

2.3 DoD 实践型模型

2.3.1 DoD模型概述

DoD是美国国防部英文名称Department of Defense的缩写,2019年美国国防部为了推动国防部企业 DevSecOps的落地,发布了一系列的DevSecOps实践规范。因为它是一套独立的、成体系化的指导 DevSecOps落地的文件,所以在这里把它归类为DevSecOps的实践型参考模型。

2.3.2 DoD DevSecOps 体系文件构成

在美国国防部的官网上,对外公开了其DevSecOps体系文件的目录,从这份目录来看一下其文件构成,如下图所示。

从上图的目录结构可以看出,整个体系文件由DevSecOps V2.1规范说明、DevSecOps 实施指南、DevSecOps 参考设计、云原生接入、开源软件安全5个部分组成,每一个部分又分别包含不同的文件。从体系文件管理上来看,DevSecOps V2.1规范说明属于一级文件,定义了 DevSecOps总体方针、策略和基本操作要求;DevSecOps实施指南属于二级文件,主要定义了 DevSecOps 中的关键活动、工具及操作指导;DevSecOps设计参考、云原生接人、开源软件安全均属于三级文件,为具体的安全设计提供参考指引。

从当前业界已公开的DevSecOps资料来看,DoD DevSecOps体系文件具有很高的实践参考价值,可以作为大多数企业开展DevSecOps 工作的首选指导书。

2.3.3 DoD DevSecOps 实践价值

美国国防部为了能够更迅速地应对安全战争与威胁,让新功能快速进场,通过内嵌安全到应用程序来解决此类问题,决定使用DevSecOps模型。意图通过DevSecOps文化,改变国防部IT部门中各个不同组织之间的协作流程、生产制造和运营维护,统一标准和要求,以加快从需求分析到成品交付的过程。

这套文件的技术栈是为美国国防部定制的,从上小节图中公开的文件目录中包含云原生接入点、K8s、AWS等也可以看出,此技术栈不是面向公众全员的,仅是面向美国国防部企业的,但这份文件中涉及的技术概念、DevSecOps能力构成、落地保障措施等都将对DevSecOps 的大范围应用产生深远的影响。

2.3.4 DoD模型安全工具链及周边支持生态系统

2.3.4.1 安全工具链及周边生态图和生态说明

DoD模型文件中首次对 DevSecOps 生态系统做了更具体的解释,除了包含一直被业界推崇的黄金管道之外,还有软件工厂、安全工具链及周边支持生态系统,如下图所示。

在工具链方面,文件中直接用DevSecOps替代DevOps,或者说在这份文件里认为DevOps的未来就是 DevSecOps。它给出更大范围的活动与工具选择的概览,以及活动的输人、输出、活动收益等,涵盖计划、开发、构建、测试、发布、交付、部署、操作和监控的每个阶段。

2.3.5 DoD模型在实践保障方面的内容

在实践保障方面,文件中阐述了组织、流程、技术和治理为DoD DevSecOps的四大支柱,如下图所示:

2.3.6 DoD模型持续改进方面的内容

在持续改进方面,文件定义了DoD DevSecOps的成熟度模型,对DevSecOps的能力一共划分为9个层级,如下图所示:

2.3.7 DoD模型总结

总之,作为第一份业界公开的 DevSecOps落地实践资料,DoD DevSecOps 实践型模型为业界提供了详细的参考资料,并从文件体系构建,技术路线选择、DevSecOps平台选型等多个方面为业界提供最佳实践参考样例

好了,本次内容就分享到这,欢迎大家关注《DevSecOps》专栏,后续会继续输出相关内容文章。如果有帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode刷题(剑指offer)54.螺旋矩阵

54.螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示例 2: 输入:ma…

Java基础-集合框架

集合框架: 内存层面可考虑的数据存储容器:数组,集合 数组的特点:长度,存储元素类型确定,既可以放基本数据类型,也可以放引用数据类型 缺点:长度不可变,存储元素特点单…

从零开始 Linux(一):基础介绍与常用指令总结

从零开始 Linux 01. 概念理解 1.1 什么是 Linux? Linux 是一个开源免费的 操作系统,具有很好的稳定性、安全性,且有很强的处理高并发的能力 Linux 的应用场景: 可以在 Linux 下开发项目,比如 JavaEE、大数据、Python…

3D词云图

工具库 tagcanvas.min.js vue3&#xff08;框架其实无所谓&#xff0c;都可以&#xff09; 实现 <script setup> import { onMounted, ref } from vue; import ./tagcanvas.min.js;const updateFlag ref(false);// 词云图初始化 const initWordCloud () > {let …

RabbitMQ快速实战

目录 什么是消息队列&#xff1f; 消息队列的优势 应用解耦 异步提速 削峰填谷 总结 主流MQ产品特点比较 Rabbitmq快速上手 创建用户admin Exchange和Queue Connection和Channel RabbitMQ中的核心概念总结 什么是消息队列&#xff1f; MQ全称Message Queue&#xf…

Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入)

Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入) 反转(转移)控制(IOC Inverse of Control) 控制&#xff1a;对于成员变量赋值的控制权 反转控制&#xff1a;把对于成员变量赋值的控制权&#xff0c;从代码中反转(转移)到Spring⼯⼚和配置⽂件中完成好处&#xff1a;…

七、并发工具(上)

一、自定义线程池 1&#xff09;背景&#xff1a; 在 QPS 量比较高的情况下&#xff0c;我们不可能说所有的访问都创建一个线程执行&#xff0c;这会导致内存占用过高&#xff0c;甚至有可能出现 out of memory另外也要考虑 cpu 核数&#xff0c;如果请求超过了cpu核数&#…

【bitonicSort学习】

bitonicSort学习 什么是Bitonic Sort核心 什么是Bitonic Sort https://zhuanlan.zhihu.com/p/53963918 这个是用来并行排序的一个操作 之前学过一些CPU排序&#xff0c;快排 冒泡 归并啥的&#xff0c;有一些能转成并行&#xff0c;有一些不适合 像快排这种二分策略就可以考虑…

Vue3的自定义指令怎么迁移到nuxt3

一、找到Vue3中指令的源码 const DISTANCE 100; // 距离 const ANIMATIONTIME 500; // 500毫秒 let distance: number | null null,animationtime: number | null null; const map new WeakMap(); const ob new IntersectionObserver((entries) > {for (const entrie…

草图导入3d后模型贴材质的步骤?---模大狮模型网

3D模型在导入草图大师后出现混乱可能有多种原因&#xff0c;以下是一些可能的原因和解决方法&#xff1a; 模型尺寸问题&#xff1a;如果3D模型的尺寸在导入草图大师时与画布尺寸不匹配&#xff0c;可能导致模型混乱。解决方法是在3D建模软件中调整模型的尺寸&#xff0c;使其适…

FreeRTOS使用计数信号量进行任务同步与资源管理

FreeRTOS使用计数信号量进行任务同步与资源管理 介绍 在多任务系统中&#xff0c;任务之间的同步和对共享资源的管理是非常重要的。FreeRTOS 提供了丰富的同步机制&#xff0c;其中计数信号量是一种强大的工具&#xff0c;用于实现任务之间的同步和对资源的访问控制。 什么是…

figure方法详解之清除图形内容

figure方法详解之清除图形内容 一 clf():二 clear():三 clear()方法和clf()方法的区别&#xff1a; 前言 Hello 大家好&#xff01;我是甜美的江。 在数据可视化中&#xff0c;Matplotlib 是一个功能强大且广泛使用的库&#xff0c;它提供了各种方法来创建高质量的图形。在 Mat…

unity 拖入文件 窗口大小

目录 unity 拖入文件插件 设置窗口大小 unity 拖入文件插件 GitHub - Bunny83/UnityWindowsFileDrag-Drop: Adds file drag and drop support for Unity standalong builds on windows. 设置窗口大小 file build

Iceberg从入门到精通系列之二十一:Spark集成Iceberg

Iceberg从入门到精通系列之二十一&#xff1a;Spark集成Iceberg 一、在 Spark 3 中使用 Iceberg二、添加目录三、创建表四、写五、读六、Catalogs七、目录配置八、使用目录九、替换会话目录十、使用目录特定的 Hadoop 配置值十一、加载自定义目录十二、SQL 扩展十三、运行时配置…

电子电器架构——车载网关转发buffer心得汇总

电子电器架构——车载网关转发buffer心得汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力…

vue2父组件向子组件传值时,子组件同时接收多个数据类型,控制台报警的问题

最近项目遇到一个问题,就是我的父组件向子组件(公共组件)传值时,子组件同时接收多个数据类型,控制台报警的问题,如下图,子组件明明写了可同时接收字符串,整型和布尔值,但控制台依旧报警: 仔细检查父组件,发现父组件是这样写的: <common-tabletooltip :content=…

2024 springboot Mybatis-flex 打包出错

Mybatis-flex官网&#xff1a;快速开始 - MyBatis-Flex 官方网站 从 Mybatis-flex官网获取模板后&#xff0c;加入自己的项目内容想打包确保错&#xff0c;先试试一下方法 这里改成skip的默认是true改成false&#xff0c;再次打包就可以了

Git系列---标签管理

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.理解标签2.创建标签…

MySQL原理(一)架构组成之物理文件组成

目录 一、日志文件 1、错误日志 Error Log 1.1、作用&#xff1a; 1.2、开启关闭&#xff1a; 1.3、使用 2、二进制日志 Binary Log & Binary Log Index 2.1、作用&#xff1a; 2.2、开启关闭&#xff1a; 2.3、Binlog还有一些附加选项参数 &#xff08;1&#x…

verilog编程之乘法器的实现

知识储备 首先来回顾一下乘法是如何在计算机中实现的。 假设现在有两个32位带符号定点整数x和y&#xff0c;我们现在要让x和y相乘&#xff0c;然后把乘积存放在z中&#xff0c;大家知道&#xff0c;两个32位数相乘&#xff0c;结果不会超过64位&#xff0c;因此z的长度应该为64…