如何在 SDLC 中使用SBOM

news/2024/7/10 21:37:30 标签: 开源

今天,我们看到更多的企业开始优先使用软件材料清单(SBOM)。但是对于许多人来说,SBOM 主要是作为一个可选项生成的,在SDLC全流程中很难看到作用。

这就错过了在整个软件开发生命周期(SDLC)中集成 SBOM 的重要机会。通过正确的步骤,组织可以利用 SBOM 数据来理解和管理各种风险,包括软件供应链安全性和开源许可证遵从性。

本文中,我将介绍我们在UniSCA中看到的帮助组织使用 SBOM 在整个软件开发生命周期中管理风险的工具、过程和策略。

计划阶段的 SBOM

软件开发生命周期的计划和定义阶段是产品和工程团队一起决定下一个版本的软件: 特性、特性定义和接受标准。这也是确保您拥有适合您的产品的 SBOM 工具的好时机。

目前市场上有许多 SBOM 工具,其中许多工具非常善于支持 SBOM 生命周期的特定部分。很难找到一种解决方案,可以满足您提出和使用第一方和第三方 SBOM 数据以及获得真正的安全好处的所有需要。

我们的目标是找到一些工具,使您能够最大限度地、几乎是机械地覆盖您所使用的语言和技术。我所说的机械是指,如果您必须以一种方式为特定的生态系统或语言创建 SBOM,而以另一种方式为另一种语言或生态系统创建 SBOM,那么您将得到不一致且可能不准确的结果。

我还要指出,今天的 SBOM 讨论主要集中在第一方软件——您和您的组织正在创建的软件。但是,软件供应链的本质是,您也使用了许多其他公司正在开发的软件。因此,我们看到越来越多的组织优先考虑能够将第三方 SBOM 导入到系统中的工具,在这种系统中,您可以理解并管理许可证遵从性和安全性。  

其他工具考虑因素包括:

  1. 您想使用哪些 SBOM 格式和规范,例如 SDPX 或 CycloneDX?
  2. 您希望如何交付 SBOM?您是否希望将 SBOM 作为构建过程的一部分签入源代码?或者当一个实际的交付工件或释放出去的时候包括它?

最终,您对这些问题的回答将大大有助于帮助您确定满足组织需求的最佳 SBOM 工具。

设计和构建阶段的 SBOM

在设计和构建阶段,我们真正看到产品和工程涉众一起工作,以确保在开发软件时,您了解与使用某些组件相关的风险。

问题的关键在于,如果你花了六个月的时间构建一个依赖于某种开源依赖的组件,但后来发现存在一个关键的漏洞或许可风险,使得它无法使用该组件。对每次提交进行这种检查可以确保您有一个快速的反馈周期,以便在过程的更早阶段改变、替换或考虑其他选项。

这是我们建议在构建过程中生成 SBOM 的一个重要原因。如果您在构建完成后立即运行 SBOM 报告,那么在解析这些依赖项时,您将获得最准确、最新的依赖项列表。

一旦有了依赖项列表,就可以开始分析它们了。这就是像 FOSSA 这样的工具非常有用的地方。FOSSA 提供了许多不同类型的依赖元数据,我们根据对 SBOM 数据的分析标记了许可问题和安全漏洞问题。

部署和测试阶段的 SBOM

您已经设置了 SBOM 程序,生成了一个最新的依赖项列表,并标记了安全和许可问题。现在,是激活进程门的时候了,这个进程门将防止出现严重漏洞或许可证遵从风险的发货软件。

这些流程大门通常是法律、安全和工程涉众之间就以下主题进行对话的结果:

  1. 我们是否应该允许在给定的产品中使用有版权许可的组件? 该产品是如何分发的?
  2. 如果存在安全漏洞,而且每个生产的软件都有漏洞,我们现在需要解决哪些问题?我们可以把哪个留到下一个版本?

使用UniSCA这样的工具来实现这些流程是最简单的,它允许组织自动化实现。例如,如果您的法律和工程团队已经同意某个 SaaS 产品不能使用任何 AGPL 许可的代码,UniSCA可以自动标记该问题并使 CI 构建失败,直到您替换了 AGPL 组件。

这就是 SBOM 能够提供最大价值的地方——您知道软件中的内容以及这些组件带来的风险,因此您可以采取适当的行动来实现组织实现的 SLA。鉴于现代应用程序可能有数百个开放源码依赖项,使用自动化来快速找到这个大海捞针中风险最大的那个是至关重要的。

这个过程同样适用于第三方应用程序 SBOM: 一年多以前,许多组织正在处理 Log4Shell 漏洞,并急切地试图确定这些应用程序是否(以及在哪里)正在使用 Log4J。支持导入第三方 SBOM 的工具可以让你像分析我们自己的代码一样分析这些 SBOM,并且在遇到像 Log4Shell 这样的关键安全漏洞时,立即采取行动,包括提醒供应商升级到安全版本。

使用UniSCA生产SBOM

UniSCA能自动化一键生成SBOM,并支持SPDX在内的数种可定制导出格式,节省团队大量时间,切实有效地维护软件供应链安全。

原文链接:

https://www.codeant.cn/industry_detail?id=c19f49e886e34f4caca216a4e3372076


http://www.niftyadmin.cn/n/5175613.html

相关文章

/etc/init.d/functions: Syntax error: “(“ unexpected (expecting “done“)

一.问题描述: ubuntu系统安装服务时报错: 二.问题解析: Ubuntu安装时默认使用dash,shell脚本命令失败,需要安装bash来运行,长期解决该问题就是重新配置dash 三:问题解决: sudo dpkg-reconfi…

虹科示波器 | 汽车免拆检修 | 2010款奥迪A5车怠速时发动机偶尔自动熄火

一、故障现象 一辆2010款奥迪A5车,搭载CDN发动机,累计行驶里程约为16.3万km。车主进厂反映,发动机怠速偶尔出现抖动,紧接着自动熄火;重新起动,发动机又能正常工作;故障频率较低,有时…

小红书流量怎么提升,小红书流量机制总结!

小红书的流量机制对于品牌营销和运营者来说,都是关注的重点。今天,来马传媒就来分享一下小红书流量怎么提升,小红书流量机制总结! 1.算法展示 小红书通过复杂的算法对用户内容进行分析和评估,为用户个性化展示内容。平…

JL-29 雪深监测仪

技术参数 太阳能功率&#xff1a;10W 电池供电&#xff1a;3.7V/20AH 测量量程&#xff1a;0&#xff5e;5m&#xff08;探头处有15cm的盲区&#xff09; 分 辨 率&#xff1a;1mm 随机误差&#xff1a;1.5mm 非线性误差&#xff1a;<0.7mm 温度误差&#xff1a;<0…

椭圆加密C#实现

使用方法&#xff1a; 调用 Encrypt 方法将明文加密为密文。例如&#xff1a; string ciphertext EllipseEncryption.Encrypt("hello world");。 调用 Decrypt 方法将密文解密为明文。例如&#xff1a; string plaintext EllipseEncryption.Decrypt(ciphertext);。…

数据复现-企业数字化转型与中国实体经济发展分析

数据简介&#xff1a;在当今快速发展的数字化时代&#xff0c;数字技术已经成为企业数字化转型的核心驱动力之一。尤其对于中国这样一个拥有庞大实体经济的国家而言&#xff0c;结合数字技术的应用&#xff0c;可以为企业带来前所未有的巨大机遇和挑战。在中国&#xff0c;实体…

【简单】206. 反转链表

题目 206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示…

解决npm报错Error: error:0308010C:digital envelope routines::unsupported

解决npm报错Error: error:0308010C:digital envelope routines::unsupported。 解决办法&#xff1b;终端执行以下命令&#xff08;windows&#xff09;&#xff1a; set NODE_OPTIONS--openssl-legacy-provider然后再执行 npm命令成功&#xff1a;