DevSecOps实践:如何在研发过程中做好供应链安全

news2024/11/20 1:36:32

DevSecOps与供应链安全

很多企业都建立了DevOps流程,但安全基本还处在流程之外,没有融入传统DevOps流程,导致安全一直都是敏捷交付的瓶颈。本篇内容我们将从DvSecOps和软件供应链安全的角度来谈谈研发过程中的安全问题。

01 DevSecOps——供应链安全治理基石

在很多企业寻求DevSecOps解决方案的背景下,安全左移的理念愈发重要。美国国防部白皮书中也提到DevSecOps落地的核心就是安全左移,但其中强调的安全左移是在研发阶段做安全测试,这样的左移并不彻底。真正实施安全左移比较彻底的是微软的SDLC理念,强调安全应该在更早期阶段介入

经过近几年的不断实践,DevSecOps已经做到了比较深度的安全左移,并不只是在研发阶段做安全测试,而是在需求阶段就考虑安全,甚至是在立项阶段就介入安全。

安全左移的价值不容忽视,我们知道在不同阶段发现并修复问题的成本是呈几何增长的。如果在研发阶段发现并且修复问题的成本是“1”,在测试阶段修复问题的成本就是“2”,在发布阶段修复问题的成本就变成了“10”,在运行阶段发现并修复问题的成本就会是“100”,甚至于对业务运营的影响难以估量,因为有些安全问题就是一个企业的生命线。

02 供应链安全治理落地难点

供应链安全治理环节分散。在编码、编译、部署等环节都容易出问题。

研发修复成本高、安全问题修复滞后,频繁回归

供应链安全治理依赖多工具能力。单一工具难以覆盖供应链安全所有的治理对象,现在提到供应链治理工具基本都是SCA,但是像操作系统、中间件这些都是在供应链治理过程中需要考虑的治理对象。

安全是孤岛而不是流程。安全工具独立使用,安全漏洞只存在于安全工具内,没有跟研发、测试、安全、运维流程打通,没有融入流程,进而导致安全工作只能阶段性介入,影响交付节奏和周期。

缺乏全流程治理经验。基于安全木桶理论,补足安全短板,做到供应链安全的全面治理也有赖于安全经验

没有供应链资产管理。这一块主要是针对SBOM解决方案而言,SBOM只是一个静态的软件物料清单,如果发现0day安全问题,扫描所有代码仓库的效率显然太低,而且扫描之后能否快速呈现有问题的软件,也是需要去考虑的,从资产管理以及事后盘查等角度出发。

03 交付管道

CI/CD交付管道,也就是流水线,现在的安全工具基本都是采用编排的形式接入到流水线中。因为安全工具种类繁多,不可能每一个都登录进去制定扫描计划,加上现在很多核心系统都实现了服务化改造,在每个工具上针对每个服务应用去创建检测任务的工作量对安全团队来讲几乎无法完成,所以现在的安全检测工具已经上升到了编排的维度。

值得一提的是,尽管在流水线中可以同时发起多个检测工具进行检测,但在实际情况中并不会这样来编排流水线。如果是研发测试环境的流水线,通常会将安全检测全部靠后,因为此时要做的事情是快速把应用构建起来进行部署,然后让研发和测试去验证功能。验证完功能之后,再去看安全检测工具检测到的漏洞,因为在部署之后,安全检测工具同时开启检测,功能测试与安全检测工作几乎可同时完成。

如果是针对上线的流水线,所有安全检测工具编排会尽量靠前,而且此时安全检测工具必须要有安全卡点的能力,也就是在每个工具中设置一个安全阈值,比如针对SCA工具,定义它的超危组件不能超过一个,否则不允许执行后续的流水线。通过这种方式,就能实现质量一致性保障通道。所谓质量一致性保障,就是无论在何种业务研发背景下,每次通过流水线交付出去的制品都符合质量要求。这就能形成一种文化,即研发人员在提交代码时就会思考能否过安全卡点,如此思考安全问题的方式也就得以改变。

此外,现在针对安全工具的很多解决方案是在流水线里写一个脚本,把代码提交到白盒检测工具中扫描,然后去拿检测结果,但是现在很多微服务应用少则几十个,多则成百上千个。面对上千个应用,每天提交一次代码到流水线中检测,任何一款白盒工具能无法支撑。所以将安全工具放到流水线中,常态化、自动化执行对于安全工具的技术要求也发生了根本性的变化。它并不是在流水线中简单写个脚本去调用检测工具的检测接口,然后获取数据,而是要考虑每一种检测工具的检测能力是分布式的。

所以在DevSecOps流水线中可以衍生很多跟现在企业实施思路不一样的地方,我们可能要评估现在的流水线能否承载核心系统未来的业务发展,整个安全执行的效率是否达到要求。无论在什么状态下,软件质量都要符合风险可接受的范围。

DevSecOps安全能力体系建设

DevSecOps有两个发展方向,一个是One by one,一个是All in one。

One by one就是基于Jira、Jenkins、GitLab的解决方案,组合在一起形成一个自动化流程。All in one是一体化平台,它不是简单地将工具集成进来,而是在平台上重新开发。

01 DevSecOps一体化平台

DevSecOps是效率的代名词,之所以很多企业一直在提倡它,是因为供应链治理工作的复杂性,除了供应链治理以外,还要考虑云原生安全、应用安全、数据安全、合规安全等,企业要想做好这些安全工作比较困难。White Hat组织在2021年针对全美公共事业部的互联网应用发布了一份安全调研报告,报告显示制造业有60%以上的企业存在可利用漏洞,暴露窗口期在365天以上,金融行业有40%以上的企业存在此类问题。由此可见,国内的在线运营系统,其安全状况也不容乐观,在这种情况下一体化平台将是发展的必然趋势。

根据GitLab和Jenkins的官网介绍,GitLab的配置文件叫gitlab-ci.yml,是解决持续集成的问题;Jenkins的配置文件是Jenkinsfile,是持续部署的解决方案。国外的CI/CD流水线比较严谨,CI与CD的功能更加明确,但是简单的将GitLab与Jenkins相加并不等同于CI/CD,所以真正在做CI/CD时必然是向一体化的趋势发展。

在一体化的平台框架之下,可以进行大量的数据挖掘。需求从邮件列表提出来,进入到需求中心,到产研环境,再到预发环境,然后上线。需求这一数据对象流经很多工具,每一个工具停滞的时间都由不同角色的工作来决定。DevOps讲究高效的端到端价值流交付,但是像需求平均交付周期、需求流负载、产研周期等指标都统计不出来,就不能算真正的DevOps,只是一个自动化流程而已,这也是很多企业的现状。所以一体化的DevOps,也将是未来研发效能的发展趋势。

02 DevSecOps安全能力体系

DevSecOps安全能力体系,就是针对整个研运流程去做安全能力抽象。比如在设计阶段做威胁建模,但现在做威胁建模的企业并不多,因为它的落地非常依赖于负责人丰富的经验,除了要懂安全,还要懂渗透、攻击、研发、架构、业务等等,才能考虑怎样去解决这些风险。

在供应链这一方面需要做很多检测,大部分方法是直接引用第三方组件,我们在供应链中经常会提到开源软件,即开源组件或第三方组件,因为开源软件的范围太泛了。比如Redis缓存,从第三方组件的角度来考虑,就是在代码里引入了一个Redis的调用组件,这个组件可能有问题,但是Redis部署的服务可能也有问题,所以开源软件治理的范围从组件和软件两个角度来讲,就有两个不同的维度需要去治理。

Redis的环境基本上都要进行基线扫描,甚至要人工去做安全配置检查,所以安全不能只想着引入工具和如何使用它,而是这个工具能解决什么问题,接下来要怎么把它放到流程里面,自动化建立起来。

接下来,如果要做供应链安全治理,只需要建立一个视图即可,能查到所有应用资产下面的组件漏洞信息,以及每一个部署环境的信息。所有的检测任务或者漏洞的修复情况,只需在流程中完成即可。

DevSecOps实践落地

实践一:IDE安全自测

一旦建立流程之后,必须确保让研发有一个高效的流程可以提前感知,因为研发会考虑提交的代码要过安全卡点,否则会影响KPI考核。而且代码提交到线上之后触发CI流程比较耗时,如果在IDE层面有检测插件,研发就可以快速自测,知道自己引入了哪些有问题的包,经修改检测无误就可以将代码上传。

实践二:创建安全私服

如果使用第三方私服,或者不对内部的私服做任何安全管控,在做软件构建之后就需要依赖大量检测。如前所述,在测试阶段发现漏洞的修复成本是研发阶段的两倍,因此为避免在研发阶段投入更多成本,可以在所有的第三方组件进入私服时进行安全审计,只有符合安全要求才能进入私服。其实这也是SCA工具的一个功能,它开放了一个网络代理,当我们去公共的组件仓库下载组件时,组件会经过代理的检查,检查通过再将其放到仓库中;如果检查有问题,可以有不同的处理策略,比如先放到一个缓存队列中去做评估或者直接拒绝。在具体实施时,可以再配置外部私服,然后动态去做入库检测以及构建的动作。

实践三:建立一致性质量内循环

CI/CD是两个阶段的流程,但是现在企业能做到CD的并不多,因为CD有不同的理解,一个是持续交付,一个是持续部署。持续部署是一个技术行为,跟CI差不多,但是持续交付则需要非常多的能力来支撑。CI环节也不是一个过程,因为在不同的环节有不同的流水线去做安全工作,整个安全工作已经实现了一个常态化自动化,敏捷的特点就是小步快走,检测到增量漏洞后快速修复,这个增量漏洞并不只是定义到修复超危漏洞,而是低危漏洞也要一起修复。这是进入了一个比较好的状态,质量内循环建立起来会非常高效,软件安全的质量控制也会更加高效。

实践四:建立安全管控机制

安全管控机制,就是前面说到的安全工具卡点,现在几乎是没有哪一个安全工具有卡点能力。一般做安全卡点,都是自己通过写脚本,然后去判断当前的安全漏洞数据情况。现在的工具可以去配置添加不同的卡点阈值要求,然后去选择执行策略,比如说终止或继续,同时还可以快速通知到相关的责任人。

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

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

相关文章

Self-Instruct 论文解读:利用大模型自己给自己生成指令数据,指令数据自动生成

总览 大规模“指令调整”的语言模型,即指令微调的LLM,已经表现出非凡的零样本能力,尤其是推广新任务上。 然而,这些模型严重依赖于人类编写的指令数据,而这些数据通常在数量、多样性和创造力方面受到限制,…

Elasticsearch:result

排序 es支持对搜索结果排序,默认是根据相关度算分(_score)来排序。可以排序的字段类型有:keyword、数值、地理坐标、日期等类型。 语法 GET /indexName/_search {"query": {"match_all": {}},"sort": [{"FIELD&quo…

视频融合平台EasyCVR迁移数据库报错1146是什么原因?该如何解决?

EasyCVR视频融合平台基于云边端协同架构,具有强大的数据接入、处理及分发能力。平台支持多协议接入,包括:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等,对外可分发多格式视频流,包括RTSP、…

SSM 开放式实验管理系统 -计算机毕设 附源码78512

SSM 开放式实验管理系统 摘 要 我国高校开放式实验管理普遍存在实验设备使用率较低、管理制度不完善,实验设备共享程度不高等诸多问题。要在更大范围推行开放式实验管理,就必须在开放式实验教学管理流程中,通过引入信息化管理加大信息技术在其中的应用,才能真正发挥这种教学模…

datax插件开发HdfsReader支持parquet

数据仓库HIVE存储数据一般采用parquet格式,但Alibaba datax开源版不支持parquet格式,在网上查了很多资料,写的大多不完整,特此总结出完整版记录一下,供大家参考。 操作步骤 1.从gitee 拉取datax代码,对hd…

一、云尚办公系统:搭建环境

云尚办公系统:搭建环境 B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布,并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步!!&#x…

前端第一期工作梳理总结:实现基础界面

目前前后端总体框架搭建并打通,除了文本检索功能外,均正常实现,后期将进行单元测试、集成测试和功能、性能测试。具体界面展示如下: ①注册、登录、忘记-找回密码 - 注册 - 登录 - 注销,退出当前账号。 - 忘记密码…

word转pdf实现

写一下笔记&#xff0c;以便在以后工作中用到&#xff1a; 导包&#xff1a; <!--word 转 pdf--> <dependency><groupId>com.documents4j</groupId><artifactId>documents4j-local</artifactId><version>1.0.3</version> &l…

油烟机语音方案:NV040D语音芯片,支持MCU输入UART指令

随着人们生活水平的提高和厨房使用频率的增加&#xff0c;油烟机成为现代家庭生活中必不可少的一种家用电器&#xff0c;而语音智能化技术的发展也使得油烟机功能更加智能化。九芯电子的NV040D语音芯片是一种具备MCU输入UART指令功能的专业语音芯片&#xff0c;可以广泛应用于油…

实现微服务中的数据一致性:成功的策略

微服务架构已经彻底改变了我们构建和扩展应用程序的方式&#xff0c;提供了诸多优势&#xff0c;如提高了灵活性、可扩展性和故障隔离性。然而&#xff0c;由于微服务的分散性&#xff0c;跨服务维护数据一致性可能面临重大挑战。在本文中&#xff0c;我们将探讨不同的方法来解…

itextpdf实现word模板生成文件

前言 使用word模板生成文件&#xff0c;如下图&#xff0c;将左侧的模板生成为右侧的填充word文档。 操作方式 引入依赖 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><arti…

多串口数据采集网关有什么功能

数据采集网关是一种通信终端设备&#xff0c;也称物联网网关&#xff0c;它具备数据采集、存储、传输等功能。物通博联WG系列数据采集网关提供多种数据传输方式和接口通道&#xff0c;包括有线、无线和串口传输等&#xff08;5G、4G、WIFI、以太网&#xff09;&#xff0c;可以…

ModaHub魔搭社区:向量数据库Milvus性能调优教程(二)

目录 索引 其他 存储优化 常见问题 索引 向量索引的基本概念请参考 向量索引概述。 选择合适的索引需要在存储空间、查询性能、查询召回率等多个指标中权衡。 FLAT 索引 FLAT 是对向量的暴力搜索&#xff08;brute-force search&#xff09;&#xff0c;速度最慢&#…

Qt/C++编写监控实时显示和取流回放工具(回放支持切换进度)

一、前言 现在各个监控大厂做的设备&#xff0c;基本上都会支持通过rtsp直接取流显示&#xff0c;而且做的比较好的还支持通过rtsp回放取流&#xff0c;基本上都会约定一个字符串的规则&#xff0c;每个厂家都是不一样的规则&#xff0c;比如回放对应的rtsp地址还要带上时间范…

Spring专家课程Day02_Spring-DI

文章目录 一、依赖注入_Autowired1.配置类中Bean 方式注入1.1&#xff09;注入实例1.2&#xff09;自动注入的匹配原则 2.组件扫描实现自动注入 Autowired3.set方法注入 二、接口解耦_自动注入规则1&#xff09;利用接口解耦2&#xff09;Autowired的注入规则3&#xff09;Qual…

学高性能计算难吗?猿代码科技国内首家专注高性能计算人才培养与推荐 ...

高性能计算&#xff08;HPC&#xff09;作为一门专业领域&#xff0c;涉及到复杂的计算架构、并行计算模型和算法优化等方面的知识。因此&#xff0c;学习高性能计算可能对一些人来说是一项挑战。然而&#xff0c;随着正确的学习方法和适当的资源&#xff0c;掌握高性能计算并不…

【UCOS-III】自我学习笔记→第35讲→软件定时器实验

文章目录 前言实验步骤1.复制消息队列工程&#xff0c;并创建单次定时器和周期定时器&#xff0c;并删除task3及其相关内容2.添加task1按键处理和软件定时器超时函数3.查看串口现象 测试代码工程文件总结 前言 无&#xff0c;仅作记录&#xff0c;不具有参考价值&#xff0c;所…

【MATLAB第43期】基于MATLAB的BO-NAR贝叶斯优化动态神经网络NAR时间序列股票预测模型

【MATLAB第43期】基于MATLAB的BO-NAR贝叶斯优化动态神经网络NAR时间序列股票预测模型 一、效果展示 二、模型介绍 1.数据情况 一列数据&#xff0c;499个值 ratio 0.9;% 训练集比例 MaxEpochs 600;% 最大训练次数 % % 导入股票数据 xall importdata(数据.xlsx);2.优化参…

MySQL MMM 双主架构 主主复制 高可用

MMM&#xff08;Master-Master replication manager for MvSQL&#xff0c;MySQL主主复制管理器&#xff09; 是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发&#xff0c;主要用来监控和管理 MySQL Master-Master &#xff08;双主&#xff09;复制&…

全志V3S嵌入式驱动开发(windows平台镜像烧入)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于很多第一次学习嵌入式linux和开发板的同学来说&#xff0c;如何烧入镜像文件常常成为他们要面对的第一个难题。从拿到板子开始&#xff0c;他们…