依赖列表
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
使用依赖列表来审查您项目或组的依赖项以及这些依赖项的关键信息,包括已知的漏洞。此列表是您项目中依赖项的集合,包括现有的和新发现的漏洞信息。这些信息有时被称为软件物料清单(Software Bill of Materials,SBOM)或 BOM。
概览请参见项目依赖 - 高级安全测试。
设置依赖列表
要列出您项目的依赖项,请在项目的默认分支上运行依赖扫描 或容器扫描。
依赖列表还显示了从最新默认分支流水线上传的任何
CycloneDX 报告中的依赖项。
CycloneDX 报告必须符合 CycloneDX 规范 版本 1.4、1.5 或 1.6。
您可以使用 CycloneDX Web 工具 来验证 CycloneDX 报告。
虽然这不是填充依赖列表的强制要求,但 SBOM 文档必须包含并遵守 GitLab CycloneDX 属性分类法,以提供某些属性并启用某些安全功能。
查看项目依赖项
此功能的可用性由功能标志控制。 有关更多信息,请参见历史记录。
要查看项目或组中所有项目的依赖项:
- 在左侧边栏,选择搜索或跳转至并找到您的项目或组。
- 选择安全 > 依赖列表。
- 可选。如果有传递依赖项,您还可以查看所有依赖路径:
- 对于项目,在位置列中,选择查看依赖路径。
- 对于组,在位置列中,选择位置,然后选择查看依赖路径。
每个依赖项的详细信息都会列出,按漏洞严重程度降序排列(如果有)。您也可以按组件名称、打包程序或许可证对列表进行排序。
| 字段 | 描述 |
|---|---|
| 组件 | 依赖项的名称和版本。 |
| 打包程序 | 用于安装依赖项的打包程序。 |
| 位置 | 对于系统依赖项,此字段列出了扫描的镜像。对于应用程序依赖项,此字段显示了项目中声明该依赖项的特定于打包程序的锁文件链接。如果存在直接依赖项,也会显示它们。如果有传递依赖项,选择查看依赖路径将显示所有依赖项的完整路径。传递依赖项是具有直接依赖项作为祖先的间接依赖项。 |
| 许可证(仅限项目) | 链接到依赖项的软件许可证。包含检测到的依赖项漏洞数量的警告徽章。 |
| 项目(仅限组) | 链接到具有该依赖项的项目。如果有多个项目具有相同的依赖项,将显示这些项目的总数。要访问具有此依赖项的项目,请选择项目数量,然后搜索并选择其名称。 |
过滤依赖列表
您可以过滤依赖列表,只关注部分依赖项。依赖列表可用于组和项目。
对于组,您可以按以下条件过滤:
- 项目
- 许可证
- 组件
- 组件版本
对于项目,您可以按以下条件过滤:
- 组件
- 组件版本
要按组件版本过滤,您必须先精确过滤一个组件。
要过滤依赖列表:
- 在左侧边栏,选择搜索或跳转至并找到您的项目或组。
- 选择安全 > 依赖列表。
- 选择筛选栏。
- 选择一个筛选器,然后从下拉列表中选择一个或多个条件。 要关闭下拉列表,请在列表外选择。要添加更多筛选器,请重复此步骤。
- 要应用所选筛选器,请按 Enter。
依赖列表仅显示与您的筛选器匹配的依赖项。
漏洞
支持与基于 SBOM 的依赖扫描相关的漏洞的功能可用性由功能标志控制。 有关更多信息,请参见历史记录。
如果依赖项有已知漏洞,请选择依赖项名称旁边的箭头或显示存在多少已知漏洞的徽章来查看它们。对于每个漏洞,其严重程度和描述会显示在下方。要查看漏洞的更多详细信息,请选择漏洞的描述。将打开漏洞详细信息页面。
依赖路径
如果组件是临时的并且属于任何支持的包管理器,依赖列表将显示该列出的组件的直接依赖项。
依赖路径仅显示有漏洞的依赖项。
以下包管理器支持依赖路径:
以下包管理器仅在使用 dependency-scanning 组件时支持依赖路径:
许可证
导出
您可以以以下格式导出依赖列表:
- JSON
- CSV
- CycloneDX 格式(仅限项目)
要下载依赖列表:
- 在左侧边栏,选择搜索或跳转至并找到您的项目或组。
- 选择安全 > 依赖列表。
- 选择导出,然后选择文件格式。
当导出的详细信息可用时,您将收到一封电子邮件。要下载导出的详细信息,请选择电子邮件中的链接。
故障排除
许可证显示为 ‘unknown’
特定依赖项的许可证可能由于几个可能的原因显示为 unknown。本节介绍如何确定特定依赖项的许可证是否因已知原因显示为 unknown。
上游许可证为 ‘unknown’
检查依赖项上游指定的许可证:
- 对于 C/C++ 包,检查 Conancenter。
- 对于 npm 包,检查 npmjs.com。
- 对于 Python 包,检查 PyPI。
- 对于 NuGet 包,检查 Nuget。
- 对于 Go 包,检查 pkg.go.dev。
如果上游许可证显示为 unknown,预计 GitLab 也会将该依赖项的许可证显示为 unknown。
许可证包含 SPDX 许可证表达式
不支持 SPDX 许可证表达式。包含 SPDX 许可证表达式的依赖项显示为许可证为 unknown。SPDX 许可证表达式的示例是 (MIT OR CC0-1.0)。更多信息请参见 issue 336878。
包版本不在包元数据库中
依赖项包的特定版本必须存在于包元数据库中。如果不存在,该依赖项的许可证将显示为 unknown。关于 Go 模块的信息,请参见 issue 440218。
包名称包含特殊字符
如果依赖项包的名称包含连字符 (-),许可证可能显示为 unknown。当手动将包添加到 requirements.txt 或使用 pip-compile 时,可能会发生这种情况。这是因为 GitLab 在获取依赖项信息时,没有按照 PEP 503 中关于规范化名称的指导来规范化 Python 包名称。更多信息请参见 issue 440391。