关于依赖关系图
依赖项关系图是存储在存储库中的清单和锁定文件以及使用 依赖项提交 API(beta 版本)提交给存储库的任何依赖项的摘要。 对于每个存储库,它显示 依赖关系,即它所依赖的生态系统和包。
GitHub Enterprise Server 不检索依赖项的授予许可信息,也不计算有关依赖项、存储库和依赖于存储库的包的信息。
向 GitHub Enterprise Server 推送提交以更改支持的清单或锁定文件或将其添加到默认分支时,依赖项关系图会自动更新。有关支持的生态系统和清单文件的信息,请参阅下面的“支持的包生态系统”。
此外,可以使用 依赖项提交 API(beta 版本)从所选的包管理器或生态系统提交依赖项,即使依赖项关系图不支持使用该生态系统进行清单或锁定文件分析也是如此。 依赖项关系图将显示按生态系统分组的已提交依赖项,但与从清单或锁定文件解析的依赖项是分开的。有关 依赖项提交 API 的详细信息,请参阅“使用依赖项提交 API”。
当创建包含针对默认分支的依赖项更改的拉取请求时,GitHub 使用依赖关系图向拉取请求添加依赖项审查。 它们指示依赖项是否包含漏洞,如果是,则指示已修复漏洞的依赖项版本。 有关详细信息,请参阅“关于依赖项评审”。
如果至少具有对存储库的读取访问权限,则可以通过 GitHub UI 或 GitHub REST API,将存储库的依赖项关系图导出为与 SPDX 兼容的软件物料清单 (SBOM)。 有关详细信息,请参阅“导出存储库的软件物料清单”。
依赖关系图可用性
企业所有者可以为企业配置依赖项关系图和Dependabot alerts。 有关详细信息,请参阅 “为企业启用依赖项关系图”和 “为企业启用 Dependabot”。
有关依赖项关系图配置的详细信息,请参阅“配置依赖项关系图”。
包含的依赖项
依赖项关系图包含支持的生态系统中的清单和锁定文件(或等效文件)中详述的存储库的所有依赖项,以及使用 依赖项提交 API(beta 版本)提交的任何依赖项。 这包括:
- 直接依赖项,清单或锁定文件中显式定义或者是使用 依赖项提交 API(beta 版本)提交的直接依赖项
- 这些直接依赖项的间接依赖项,也称为过渡依赖项或子依赖项
仅当在锁定文件中定义间接依赖项从锁定文件 测试和调试代码。 如果生态系统没有锁定文件,则可以使用预创建操作来解析许多生态系统的可传递依赖项。 有关详细信息,请参阅“使用依赖项提交 API”。
有关 GitHub Enterprise Server 如何帮助你了解环境中的依赖项的详细信息,请参阅“关于供应链安全性”。
使用依赖关系图
您可以使用依赖关系图:
- 浏览代码所依赖的存储库。 有关详细信息,请参阅“探索仓库的依赖项”。
- 查看和更新仓库中有漏洞的依赖项。 有关详细信息,请参阅“关于 Dependabot 警报”。
- 查看拉取请求中有漏洞依赖项的相关信息。 有关详细信息,请参阅“审查拉取请求中的依赖项更改”。
支持的包生态系统
建议的格式明确定义哪些版本用于所有直接和所有间接依赖项。 如果使用这些格式,依赖项关系图会更准确。 它还反映当前的生成设置,并且使依赖项关系图能够报告直接和间接依赖项中的漏洞。
程序包管理器 | 语言 | 推荐格式 | 所有支持的格式 |
---|---|---|---|
Cargo | Rust | Cargo.lock | Cargo.toml 、Cargo.lock |
编辑器 | PHP | composer.lock | composer.json 、composer.lock |
NuGet | .NET 语言(C#、F#、VB)、C++ | .csproj 、.vbproj 、.nuspec 、.vcxproj 、.fsproj | .csproj 、.vbproj 、.nuspec 、.vcxproj 、.fsproj 、packages.config |
GitHub Actions 工作流程 | YAML | .yml 、.yaml | .yml 、.yaml |
Go 模块 | Go | go.mod | go.mod |
Maven | Java、Scala | pom.xml | pom.xml |
npm | JavaScript | package-lock.json | package-lock.json 、package.json |
pip | Python | requirements.txt 、pipfile.lock | requirements.txt 、pipfile 、pipfile.lock 、setup.py |
酒馆 | Dart | pubspec.lock | pubspec.yaml 、pubspec.lock |
Python Poetry | Python | poetry.lock | poetry.lock 、pyproject.toml |
RubyGems | Ruby | Gemfile.lock | Gemfile.lock 、Gemfile 、*.gemspec |
Yarn | JavaScript | yarn.lock | package.json 、yarn.lock |
注意:
-
如果你在
setup.py
文件中列出你的 Python 依赖项,我们可能无法分析和列出你项目中的每个依赖项。 -
GitHub Actions 工作流必须位于要识别为清单的存储库的
.github/workflows/
目录中。 使用jobs[*].steps[*].uses
或jobs.<job_id>.uses
语法引用的任何操作或工作流都将被分析为依赖项。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。 -
Dependabot 只会为使用语义版本控制的易受攻击的 GitHub Actions 创建 Dependabot alerts。 你将不会收到有关使用 SHA 版本控制的易受攻击操作的警报。 如果将 GitHub Actions 与 SHA 版本控制配合使用,建议为存储库或组织启用 Dependabot version updates 以保留更新到最新版本的操作。 有关详细信息,请参阅“关于 Dependabot 警报”和“关于 Dependabot 版本更新”。
可以使用 依赖项提交 API(beta 版本)将所选的包管理器或生态系统中的依赖项添加到依赖项关系图,即使生态系统不在上述受支持的生态系统列表中也是如此。 依赖项关系图将显示按生态系统分组的已提交依赖项,但与从清单或锁定文件解析的依赖项是分开的。
你只会收到来自 GitHub Advisory Database 支持的生态系统之一的依赖项的 Dependabot alerts。 有关 依赖项提交 API 的详细信息,请参阅“使用依赖项提交 API”。
其他阅读材料
- Wikipedia 上的“依赖项关系图”
- "探索仓库的依赖项"
- "查看和更新 Dependabot 警报"
- "漏洞依赖项检测疑难解答"