为 Spring Boot 依赖项生成 SBOM

问题描述 投票:0回答:1

我正在尝试生成一个 SBOM,其中包含 Spring Boot 的所有默认依赖项。我尝试使用生成的 Maven pom 并删除

<*Management>
标签将所有内容声明为依赖项,然后运行
mvn install
并生成 SBOM,但它不包含所有默认依赖项。

我也尝试过从 Spring Boot 的源生成,但所有依赖项也不包含在那里。基于根项目生成比较好,但也不包含所有依赖项。

以下内容复制自Spring Boot内部CI步骤

./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false \
  --no-daemon --no-parallel --continue build

我正在尝试使用 cyclonedx 生成 SBOM。我尝试使用

makeAggregateBom
(默认)、
makeBom
makePackageBom

我的最终目标是找到覆盖 Spring 默认依赖项的项目。例如,对于 Spring Boot 3.2.3,您应该有

logback-classic:1.4.14
,(此页面未在我能找到的任何地方作为 json 文件发布)。如果您的项目中有不同的版本,那么您通过覆盖默认版本来执行一些次优的操作。

spring-boot maven gradle sbom
1个回答
0
投票

阅读 Thomas Vitale 的“供应链安全:Java 应用程序的 SBOM”,您可以在构建过程中自动生成 SBOM,方法是在项目的 pom.xml 文件中包含 CycloneDX Maven 插件

:它将生成一个 SBOM,然后您可以对其进行分析以识别任何依赖项版本覆盖。

<build> <plugins> <plugin> <groupId>org.cyclonedx</groupId> <artifactId>cyclonedx-maven-plugin</artifactId> <version>2.8.0</version> <executions> <execution> <phase>verify</phase> <goals> <goal>makeAggregateBom</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
使用 

mvn clean verify

 生成 SBOM。

生成 SBOM 后,您现在可以对其进行分析,以识别版本与 Spring Boot 推荐的版本不匹配的任何依赖项。该手动步骤涉及将 SBOM 中列出的版本与

Spring Boot 文档 或特定 Spring Boot 版本的 spring-boot-dependencies

 POM 中指定的默认版本进行比较。

要自动执行识别覆盖的过程,您可以考虑编写一个解决方案脚本来解析生成的 SBOM 并将每个依赖项版本与推荐版本进行比较。这可以使用您选择的语言的 XML 或 JSON 解析工具来完成,具体取决于您的 SBOM 的格式。

© www.soinside.com 2019 - 2024. All rights reserved.