GitLab 专家分享|关于 DevSecOps ,你需要知道这几点

news2024/11/15 4:52:27

本文来源:about.gitlab.com

译者:极狐(GitLab) 市场部内容团队

❔ 灵魂拷问:

你的安全测试,能否跟上现代软件开发模式的步伐?

GitLab 预测到,2023 年企业会将更多的时间和资源投入到持续的安全左移上,是时候完成从 DevOps 到 DevSecOps 的演变了。

详情请戳👉:重磅!GitLab 提出五大预测,洞见 2023 年 DevSecOps 发展趋势

本文将继续讨论为何现代软件需要新的应用程序安全方法——DevSecOps。

在传统研发模式中,安全,往往在软件开发生命周期的后期才被介入。当代码不可避免地返回给开发人员修复时,就增加了成本和时间。

DevSecOps 将安全集成到完整软件开发生命周期中,是一种将研发、安全和运营/运维融合在一起的软件开发方法。

DevSecOps >> Dev+Sec+Ops


与传统流程相比,DevOps 将研发和运维融合在一起,以此来提高软件开发和交付的效率、质量及安全性,而更加灵活的软件研发周期,将为企业及其客户带来更多竞争优势。

DevOps 可以描述为在保证研发速度前提下,让多个角色良好协同,一起构思、构建和交付软件。DevOps 实践能够让研发 (Devs) 和运维 (Ops) 通过自动化、协作、快速反馈以及持续改善四个方面来加速软件交付。

尽管 DevSecOps 只是在 DevOps 中间嵌入 Sec 字样,但其产生的效果大于 Dev + Sec + Ops 的总和。

DevSecOps 是 DevOps 的演进,通过工具和方法来保护和监控实时应用程序的部署,将应用程序安全实践融入软件开发的每个阶段,包括新的攻击面,诸如容器和编排器,必须要与应用程序本身一起监控和保护起来。

DevSecOps 工具通过自动化安全流程,创建让研发和安全团队双双受益的流程,进而打破 “部门墙” 并改善协作。通过将安全嵌入到软件开发流程中,始终确保快速研发和迭代过程的安全,在不牺牲质量的情况下提高效率

💡  什么是应用程序安全?

应用程序安全是使用软件、硬件和过程方法来保护应用程序免受外部威胁。现代方法包括安全左移,或在软件研发早期发现并修复安全漏洞,以及通过安全右移在生产环境中保护应用程序的基础设施即代码的安全。

保护软件开发生命周期本身是一项能力要求。这种将安全高效整合进研发和运维流程中的安全构建方式,让你从 DevOps 演进到 DevSecOps。而一个端到端 DevOps 平台可以很好地实现这个目标。

DevSecOps 基本要求,自动化+协作+策略保障+可见性


被奉为 DevOps 圣经的书籍——《凤凰项目》中描述了自动化、一致性、度量和协作的重要性。DevSecOps 方法同样也是应用这些技术来打造软件,同时在整个过程中嵌入安全功能,而不是在一个单独的、孤立的过程中开展安全保障措施。

尽管研发和安全团队都能够发现漏洞,但是通常需要研发人员去修复这些漏洞。让研发在编写代码的同时发现并修复漏洞,是非常有意义的。不仅仅是安全扫描,而是在正确的时间、正确的背景即上下文,将结果及时反馈给正确的人,以便快速采取行动。

DevSecOps 的基本要求包括自动化、协作以及策略保障可见性

自动化

GitLab 2022 年 DevSecOps 调研报告显示,大多数 DevOps 团队定期运行静态应用程序安全测试(SAST)、动态应用程序安全测试(DAST)或者一些其他的常规安全扫描,但仅有不到三分之一的开发者能够在他们的工作流中获得这些结果。很多团队在改进这一现状,大部分安全专家表示,他们的 DevOps 团队正在执行安全左移,47% 的团队实现了完全测试自动化。

协作

安全漏洞报告和修复策略的单一可信源,为安全和研发团队提供了急需的透明度。它可以简化周期、减少摩擦和不必要的工具转换。

策略保障

每个企业对于风险的认知都不同。安全策略将反映了什么对于企业来说是正确的,而企业必须要遵守的监管要求,也将对企业采取何种安全策略产生影响。与自动化携手并进,策略保障可以确保企业的安全和合规策略的有效性

可见性

一个端到端的 DevSecOps 平台,可以让审计员有一个清晰的视角来审视软件研发生命周期从头到尾的变更情况,诸如变更时间、人员、范围以及变更原因等。利用单一可信源,还能够让企业更早地了解应用程序风险。

实践 DevSecOps 有何收益?


主动发现及修复漏洞

与安全滞后的传统研发不同,DevSecOps 在软件开发生命周期早期就嵌入安全。

在整个研发流程中,通过审核、扫描以及测试代码中的安全问题等方法,团队可以在引入外部依赖或代码被发布至客户之前,主动识别安全问题并立即修复它们,提升客户体验。

更快地发布更安全的软件

如果直到项目末期才发现安全漏洞,研发需要在最后一刻争先恐后地修复问题,很可能导致项目交付延期。

但是在 DevSecOps 模式下,研发人员可以在编码时发现和修复漏洞,促进研发人员编写安全的代码,并减少反复的安全审核次数。这不仅可以帮助组织更快地发布软件,还可以确保软件更安全和更具成本效益。

与现代软件研发模式保持同步

客户及业务团队都要求软件快速发布、安全可靠。为此,研发团队需要采取新的协作方式和安全措施,包括自动化安全测试、CI/CD 以及漏洞补丁等。

DevSecOps 就是通过改善研发、安全和运维团队之间的协作来提升组织效率,让团队腾出时间聚焦在更具业务价值的工作上。

DevSecOps 适合您的团队吗?


DevSecOps 的收益非常明显:速度、效率、协作。但您怎么知道 DevSecOps 是否适合您的团队?

如果您的团队正在经历以下任何一个挑战,那么 DevSecOps 或许是一个不错的选择:

1. 研发、安全及运维团队是仓筒式的,相互孤立。如果研发和运维与安全问题是隔离的,就不可能构建安全的软件;如果安全团队不参与研发过程,就无法正确识别安全风险。DevSecOps 将团队聚集在一起,共同改进流程和分享想法。通过这个改变,组织甚至能看到员工满意度和留存率的提升。

2. 较长的研发生命周期难以满足客户和业务团队的诉求。安全可能是拉长研发生命周期的主要原因。而 DevSecOps 在软件研发生命周期的每一个阶段都实现了安全,这意味着研发流程中不需要特意停下来进行安全测试就可以建立坚固的安全防护,加速了软件研发速度。

3. 正在上云(或者正在考虑)。迁移到云上通常意味着引入新的研发流程、工具及系统。是时候让流程更快、更安全了,而 DevSecOps 可以轻松地实现这一切。

如何创建 DevSecOps 文化?


DevSecOps 转型可以帮助组织实时应对安全威胁,但变革不是一蹴而就的。正确的思维意识与实现这一飞跃发展的工具集同样重要。希望以下 5 步法,可以帮助您和您的团队快速拥抱 DevSecOps:

1. 请记住,安全和安全专业人员是非常宝贵的资产而不是瓶颈或障碍。不要忽视这个事实:在研发流程中,越晚发现安全问题,其修复难度越大,成本越高

2. 小步快跑。通过小量、频繁提交代码,将更快检测到安全漏洞。

3. 人人贡献。建立这样一个规范:每个人都可以对代码及流程添加评论和给出改善建议。鼓励团队中的所有人提交变更,开启良好协作,让每个人对于流程改进充满责任感。

4. 随时准备接受审计。确保团队的每个人都了解合规的重要性,并建立收集和更新合规信息的规范。

5. 对全员进行安全实践培训。通过提供详细的安全指南和实践培训,提升开发和运维团队的安全意识和知识。

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

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

相关文章

Day08-网页布局实战表单和表格

文章目录网页布局实战一 表单案例1-表单前后端交互案例2-常用表单元素知识点input的属性总结:type属性的其他值(了解):按钮label标签二 结构伪类选择器三 表单布局案例案例1贯穿案例-登录页面制作案例2贯穿案例-注册页面制作四 表格案例1-表格设计案例2-…

taobao.item.propimg.upload( 添加或修改属性图片 )

¥开放平台基础API必须用户授权 添加一张商品属性图片到num_iid指定的商品中 传入的num_iid所对应的商品必须属于当前会话的用户 图片的属性必须要是颜色的属性,这个在前台显示的时候需要和sku进行关联的 商品属性图片只有享有服务的卖家(如&a…

JVM对象实例化详解

1、对象创建方式你知道几种呢?new:最常见的方式、Xxx的静态方法,XxxBuilder/XxxFactory的静态方法Class的newInstance方法:反射的方式,只能调用空参的构造器,权限必须是publicConstructor的newInstance(XXX…

maven 私服nexus安装与使用

一、下载nexus Sonatype公司的一款maven私服产品 1、官网下载地址:https://help.sonatype.com/repomanager3/product-information/download 2、csdn下载地址:https://download.csdn.net/download/u010197591/87522994 二、安装与配置 1、下载后解压如…

【Rust日报】2023-02-28 Rust 和 WASM 如何驱动 1.1.1.1

为什么用 Rust 构建原生 UI 程序这么困难Rust 正被用于构建 Linux 内核和 Android 操作系统,也被 AWS 用于关键基础设施,以及用于 ChromeOS 和Firefox。尽管 Rust 很有前景,但它在 GUI 原生开发领域还有所欠缺。在 2019 年,GUI 是…

【Springboot】Springboot集成 Druid

Springboot集成 Druid 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringData的方式进行统一管理,添加大量的自动配置,屏蔽了很多设置。引入了各种XxxTemplate和XxxRepository来简化我们队数据访问层的操作。 Sp…

FCT: The Fully Convolutional Transformer for Medical Image Segmentation 论文解读

The Fully Convolutional Transformer for Medical Image Segmentation 论文:The Fully Convolutional Transformer for Medical Image Segmentation (thecvf.com) 代码:Thanos-DB/FullyConvolutionalTransformer (github.com) 期刊/会议:W…

性能调优,看过的都说会了...

在展开今天的内容之前,我们先来看一下,是不是任何一个测试都可以学习性能测试。 如果说需求、开发、DB、运维、测试是单一一门学科,那么性能就是综合学科,它包含了需求分析、DB、开发、测试、运维的所有学科。 所以说&#xff0…

深度学习在耐火砖项目的一些思考

1.项目概述 年前,产品经理找到我,让我去测试3D视觉耐火砖拆垛项目。大概就是这种转 2. 实际情况 去了现场,采集图像,标定相机和机器人。发现客户不是要顶点的中心点坐标,而是要侧面中心点坐标。因为他们是从侧面抓…

Spring中Emable和Import相关操作

05-SpringBoot自动配置-Enable注解原理 SpringBoot不能直接获取在其他工程中定义的Bean 演示代码: springboot-enable工程 /*** ComponentScan 扫描范围:当前引导类所在包及其子包** com.itheima.springbootenable* com.itheima.config* //1.使用Compo…

mysql数据库之sql优化

一、插入数据时的优化。 1、批量插入。 insert into tb_test values(1,Tom),(2,Cat),(3,Jerry); 2、手动提交事务。 start transaction; insert into tb_test values(1,Tom),(2,Cat),(3,Jerry); insert into tb_test values(4,Tom),(5,Cat),(6,Jerry); insert into tb_test…

【Web服务部署】使用gunicorn部署django程序并一键更新

Web服务部署 【Linux防火墙】网络ip和端口管理 Windows云服务器使用IIS搭建PythonDjangoMysql网站,以及如何部署多个网站 WindowsIIS部署多个Django网站 文章目录Web服务部署前言一、Gunicorn是什么?二、Gunicorn基本使用1.引入库2.常用命令3.gunicorn快…

【Servlet篇2】Servlet的工作过程,Servlet的api——HttpServletRequest

一、Servlet的工作过程 二、Tomcat的初始化 步骤1:寻找到当前目录下面所有需要加载的Servlet(也就是类) 步骤2:根据类加载的结果创建实例(通过反射),并且放入集合当中 步骤3:实例创建好之后,调用Servlet的init()方…

SpringBoot接口+Redis解决用户重复提交问题

前言 1. 为什么会出现用户重复提交 网络延迟的情况下用户多次点击submit按钮导致表单重复提交;用户提交表单后,点击【刷新】按钮导致表单重复提交(点击浏览器的刷新按钮,就是把浏览器上次做的事情再做一次,因为这样也…

前后端分页查询好大的一个坑(已解决)

前言:如果你在做前后端的分页查询,找不到错误,请你来看看是否是和我一样的情况?情况:做了一个前后盾UI的项目,有一个页面是查询系统日志,要进行分页查询;第一页的:第5页的…

MYSQL 基础篇 | 02-MYSQL基础应用

文章目录1 MySQL概述2 SQL2.1 SQL通用语法2.2 SQL分类2.3 DDL2.3.1 数据库操作2.3.2 表操作2.4 DML2.4.1 添加数据2.4.2 修改数据2.4.3 删除数据2.5 DQL2.5.1 基础查询2.5.2 条件查询2.5.3 聚合查询2.5.4 分组查询2.5.5 排序查询2.5.6 分页查询2.5.7 综合练习2.6 DCL2.6.1 管理…

SQLMAP使用

SQLMAPSQLMAP是什么SQLMAP可以对URL做什么?SQLMAP支持的注入技术SQLMAP检测注入漏洞流程:SQLMAP的误报检测机制SQLMAP基本使用常见用法常见参数tamper参数操作系统权限参数文件读写参数SQLMAP是什么 SQLMAP是一个开源的自动化SQL注入工具,主…

SAP 生产订单/流程订单中日期的解释

SAP 生产订单/流程订单中日期的解释 基本开始日期:表示订单的开始日期 基本完成日期:表示订单的完成日期 我们在输入基本开始日期和基本完成日期时需要关注 调度 下面的“类型”,其中有向前、向后、当天日期等: 调度类型 为向前…

上海交大陈海波教授、夏虞斌教授领衔巨作上市:《操作系统:原理与实现》

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

java 进阶—线程的常用方法

大家好,通过java进阶—多线程,我们知道的什么是进程,什么是线程,以及线程的三种创建方式的选择 今天,我们来看看线程的基础操作 start() 开启线程 public class Demo implements Runnable {Overridepublic void run…