从 Dev 和 Ops 视角出发,聊聊 DevSecOps 的 What / Why / How

news/2024/7/5 4:11:23

近日,极小狐和 TA 的朋友们相聚上海,开展了一场技术 Meetup,从 DevSecOps 的 What、Why、How 出发,通过分享真实应用案例,与参会者交流 DevSecOps 的实践过程和落地经验。

本文整理自极狐(GitLab) 资深云原生架构师郭旭东在会上分享的内容,从 Dev 视角和 Ops 视角聊了聊企业引入 DevSecOps 能解决什么问题,并基于极狐GitLab 的实践经验,分享 DevSecOps 如何落地。Enjoy~

DevSecOps 是覆盖软件开全生命周期的一种安全防护体系,也是一种集众多安全手段于一体的方法。

工具是手段,不是目的” 这是我们一再申明的观点。DevSecOps 最终目的是为了尽早的发现、挖掘软件中潜在的安全问题,以直观的方式呈现给软件开发生命周期上的相关人员,包括 Dev、Ops、Sec、QA 等。

为什么需要 DevSecOps ?


Dev 视角 👀

Dev(研发人员)不小心写了 bug,造成安全漏洞,给研发人员和公司都会带来损失。

为了避免这样的 “悲剧”,研发希望在开发过程中,就进行充分的安全验证,「安全左移」由此而生。

相较于传统「右侧防护」的安全模式,「安全左移」把各种安全实践内建到软件开发的各个关键节点之中,通过尽早引入安全实践以及快速获取安全反馈的方式,从问题的源头着手避免安全问题的产生。

而 DevSecOps 是安全左移的最佳实践:DevSecOps 的关键是将安全性嵌入到整个软件开发生命周期中,从而确保应用程序的安全性能够得到持续不断地改进和维护。

实施 DevSecOps,Dev 会面临什么变化?

一方面,是需要学习新知

  • 安全知识:例如常见的攻击类型、安全漏洞、安全措施等;

  • 工具和技术:例如持续集成和持续交付工具、自动化测试工具、容器化技术等;

  • 测试方法和流程:例如自动化测试、集成测试、安全测试等;

  • DevOps 文化和实践:例如敏捷开发、持续集成和交付、自动化和可观测性等。

另一方面,可能也会面临一些心智负担

  • 压力:例如需要快速响应问题、持续改进工作流程等;

  • 复杂性:可能会增加一定的复杂性,例如需要对多个工具和技术进行整合、需要处理多个团队的反馈等;

  • 变化:例如需要改变工作方式、角色和责任等;

  • 沟通和协作:需要更频繁地进行沟通和协作,需要团队成员具备良好的沟通和协作能力。

Ops 视角 👀

从 Ops 视角看,DevSecOps 的关键在于:确保应用程序的安全性得到持续不断地监控、检测和响应,以保护应用程序在生产环境中的安全性和稳定性。

实施 DevSecOps,Ops 面临什么变化?

一方面,将更加关心自动化和标准化

  • 自动化:DevSecOps 实践中的许多任务都可以通过自动化来实现,例如构建、测试、部署、监控和恢复等。通过自动化,可以实现更快速、更可靠的交付流程,减少人为错误和故障,并提高生产效率和质量;

  • 标准化:标准化可以帮助团队建立统一的流程和规范,以确保开发、测试、部署和运维过程的一致性和可重复性,帮助团队减少错误和风险,提高效率和质量;

  • 流程优化:自动化和标准化可以帮助团队优化整个交付流程,从而更快速、更可靠地交付高质量的软件和服务。流程优化可以使团队更加敏捷和创新,更好地适应快速变化的业务需求。

另一方面,需要更加关注安全和合规性

  • 安全:在 DevSecOps 中,安全是开发和交付流程中必须考虑的关键因素;

  • 合规:开发和交付过程必须符合适用的法规、标准和政策;

  • 安全与合规的融合:在 DevSecOps 中,安全和合规应该融入到整个开发和交付生命周期中,而不是单独的流程,以确保软件和服务在设计和交付时满足安全和合规标准。

实践 DevSecOps 的难点与挑战


难点 1:文化变革

DevSecOps 要求不同团队之间更紧密的协作,这需要打破传统的部门隔离和沟通壁垒,需要进行文化上的变革,提升团队之间的信任和协作能力。

难点 2:工具种类繁多

我们让 ChatGPT 帮忙罗列了一些 DevSecOps 工具,可见之多。

选择适合业务需求的 DevSecOps 工具是一项艰巨的任务。因为每家企业的安全需求不同,团队首先要了解所需安全产品类型及其细分产品;选定细分类别产品后,经过下载、试用和充分比对,才能在众多产品中,挑选出合适的。

难点 3:成本和资源限制

DevSecOps 的实施需要投入大量的人力、物力,这对于小型团队或者资源有限的组织来说可能是一个挑战。

如果防御成本比被攻破之后损失的成本更高的话,防御就没有意义了。因此需要对成本和资源进行合理的规划和管理,以确保 DevSecOps 的成功实施和持续发展。

难点 4:风险与合规管理

DevSecOps 需要考虑到安全风险管理和合规要求,需要对应用程序的整个生命周期进行细致的监控和管理,深入了解各种合规标准和监管要求

难点 5:获取支持

要解决以上几点困难,首先需要的就是获取支持,包括获取领导的支持,争取更多的时间与资源来实践 DevSecOps;获取同事的支持,互相信任,共同完成既定目标。

实践落地难?极狐GitLab 来帮忙


极狐GitLab 提供一站式开箱即用的 DevSecOps 方案,帮助用户发现问题、追踪问题、解决问题。

  • 七大安全功能:密钥检测、静态应用安全测试(SAST)、动态应用安全扫描(DAST)、容器镜像扫描、依赖项扫描、License合规、模糊测试;

  • 全员参与:研发工程师、测试工程师、运维工程师、安全工程师均参与其中,互相协作,共建安全。

  • 安全流程自动化:将安全最佳实践集成到DevOps工作流中,通过流水线自动化执行,迅速提升认知,形成反馈闭环。

三步完成 DevSecOps 配置,低学习成本和心智负担

只要熟悉极狐GitLab CI 的使用,就可以快速上手,仅需几行代码,就可以收获一个开箱即用的 DevSecOps。

  • Step 1 导入:极狐GitLab  DevSecOps 七大安全功能都有各自的 Template,用户各取所需,导入即可;

  • Step 2 自动识别:自动识别提交代码的语言,进行扫描;

  • Step 3 MR:漏洞报告直接显示在 Merge Request 中。

更进一步,极狐GitLab 还提供了 UI 配置, 即使不熟悉安全功能的 Template,也可以低门槛轻松上手。

如下图 SAST 配置,填写字段后,点击「创建合并请求」,即可自动生成 MR,查看结果。

漏洞详情一目了然,高效杜绝代码安全隐患

以往工作流程中,安全工程师测试后,将漏洞报告发送到工作群,请研发工程师逐个修改。但研发工程师只看到了漏洞,而具体的漏洞所在的位置等信息全然不知,修复起来十分低效和繁琐。

极狐GitLab 提供的漏洞详情和报告如下图,清晰展示了漏洞所在项目、在哪个文件的第几行、漏洞级别等信息;针对需要修复的漏洞,安全工程师一键「创建议题」,研发工程师即可 “对症下药” 开始追溯和修复漏洞,高效明了。

支持自定义配置,灵活匹配用户需求

每个扫描器有不同的配置, 在极狐GitLab 中,可以通过 Variables 来自定义配置,来达到定制部分扫描配置的目的。


http://lihuaxi.xjx100.cn/news/1049380.html

相关文章

flask中使用jsonify和json.dumps的区别

flask提供了jsonify函数供用户处理返回的序列化json数据,而python自带的json库中也有dumps方法可以序列化json对象,那么在flask的视图函数中return它们会有什么不同之处呢? 想必开始很多人和我一样搞不清楚,只知道既然框架提供了方法就用,肯定不会错。 但作为开发人员,…

Linux学习记录——이십 进程间通信(2)共享内存

文章目录 1、system V共享内存1、原理2、模拟实现关联共享内存 3.共享内存大小4、共享内存特点 1、system V共享内存 system是一套标准,独立于文件系统之外,是系统专门为通信而设计出来的内核模块,称之为system V的IPC通信机制。 共享内存的…

[java]String类

String表示字符串类型。 注意c中没有表示字符串的类型。 String内部包含如下两个变量。 java中String结尾没有/0,java不需要/0标注结束位置。 str2代表指向的对象内容为空,str3代表不指向任何对象。 str1和str2指向对象不一样,所以不相等 可…

机器学习——TensorFlow2

1.创建矩阵 1. 全零矩阵:tf.zeros(shape, dtypeNone, nameNone) - shape参数指定了矩阵的形状,可以是一个整数列表或元组。 - dtype参数指定了生成矩阵的数据类型,默认为tf.float32。 2. 全1矩阵:tf.ones(shape, dtypeNone, name…

基于matlab使用 CSI-RS 的 NR 下行链路发射端波束细化

一、前言 此示例演示了使用 5G 工具箱中的信道状态信息参考信号 (CSI-RS) 的下行链路发射端波束细化过程。该示例展示了如何在散射环境中向不同方向传输多个CSI-RS资源,以及如何根据参考信号接收功率(RSRP)测量结果选择…

( “树” 之 DFS) 337. 打家劫舍 III ——【Leetcode每日一题】

337. 打家劫舍 III 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。…

Java版本的工程项目管理系统源代码之工程项目管理系统面临的挑战

​ ​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承包…

vba:文件夹和文件夹的处理,dir

Option Explicit 1 判断文件夹是否存在 dir函数的第二个参数是vbdirectory时可以返回路径下的指定文件和文件夹,如果结果为"",则表示不存在。 Sub w1() If Dir(ThisWorkbook.path & "\2011年报表2", vbDirectory) &q…