每个 Dependabot 更新作业都通过 HTTP/HTTPS 代理运行。 代理会检查每个出站请求的主机是否在 出站允许列表 中。 它会阻止向未列于其中的主机发出的请求。
这样可以降低恶意依赖项或生成脚本可以将存储库内容或注册表凭据发送到未经批准的目标的风险。 它不会阻止将数据发送到允许或泄露的主机。
大多数作业不受影响。 允许列表已涵盖支持生态系统的公共注册表、镜像、CDN 和下载主机,以及 GitHub基础结构。 为某个作业配置并引用的注册表也会被自动允许。
只有当你在 dependabot.yml 文件中的顶级 registries 键下声明该注册表时,它才算已配置。 仅在生态系统原生配置文件中(例如 .npmrc、nuget.config、pip.conf 或 Maven 的 settings.xml)定义注册表,无法指定其主机。 包管理器从该文件读取注册表,并尝试访问它,但代理会阻止请求。
在作业日志中标识阻止的请求
当代理阻止某个请求时,它会向更新作业返回 403 Forbidden。 失败通常显示为包管理器的网络或身份验证错误。 检查作业日志中与代理相关的条目,以确认具体原因。 有关如何打开作业日志,请参阅 查看 Dependabot 作业日志。
阻止的请求如下所示:
proxy | 2026/09/24 20:58:15 [052] GET https://packages.example.com:443/v2/my-package/tags/list
proxy | 2026/09/24 20:58:15 [052] * egress not allowlisted packages.example.com
proxy | 2026/09/24 20:58:15 [052] 403 https://packages.example.com:443/v2/my-package/tags/list
proxy | 2026/09/24 20:58:15 [052] Remote response: Forbidden
代理中的行具有 proxy |前缀,并且 [052] 是对单个请求的行进行分组的请求编号。 该 egress not allowlisted 行命名了检查失败的确切主机。 使用该主机确定下一步要执行的操作。
允许主机的方式
每项作业可配置两组相互独立的主机。
默认主机 包括公共注册表、镜像、CDN 和受支持生态系统的下载主机。 它们还包括 GitHub 和 Dependabot 基础设施。
GitHub 在 dependabot/proxy 存储库中维护此列表,并且它适用于每个作业。
按作业划分的主机来自为特定作业配置的注册表。 在 dependabot.yml 文件中的顶级 registries 键下声明一个注册表,并在 updates 条目中引用它。 随后,无需更改默认设置,即可允许该作业使用该注册表主机。
声明注册表,即使它允许匿名访问。 使主机可达的是 dependabot.yml 中的声明,而不是凭据的存在。
此划分决定被阻止的主机归属到哪里。
- 其他用户的作业可能确实需要的公共注册表或下载主机应属于默认配置。 请参阅 将主机添加到默认值。
- 私有注册表或特定于组织的注册表应写在你的
dependabot.yml文件中,绝不要写在默认配置中。 在registries下进行配置,使其仅对需要它的作业开放。 请参阅“为 Dependabot 配置对专用注册表的访问权限”。
将主机添加到默认设置
如果某个被屏蔽的主机是公共注册表、镜像、CDN 或下载主机,您可以通过向 dependabot/proxy 提交拉取请求,提议将其添加进去。 已接受的添加项适用于所有 Dependabot 更新作业,而不仅仅适用于您组织中的作业。
代码库提供了一项 代理技能,可引导 Copilot 完成这一流程,从检查主机是否应纳入默认配置,到创建拉取请求。 在 dependabot/proxy 仓库中操作时,告知 Copilot 某个主机已被阻止,请求它将该主机加入允许名单,或者粘贴作业日志中被阻止的那些行。 例如,“repo.example.org 被阻止”或“请将 foo.bar.com 加入允许名单”。 否则,请执行以下步骤。
- 确认该主机属于默认配置。 它必须是其他用户的作业可以合法需要的公用主机,而不是特定于组织的主机。 确认谁控制主机以及支持生态系统为何需要访问它。 如果主机特定于组织,请改为在
dependabot.yml文件中对其进行配置。 - 从您的作业日志中验证主机。 注意
egress not allowlisted这一行上标明的确切主机名。 注册表通常会将下载重定向到单独的存储或 CDN 主机,因此请检查是否阻止了多个主机。 - 创建拉取请求,将该确切主机添加到
internal/handlers/egress_allowlist_defaults.yaml的相应部分。 包括一个简短说明,说明谁控制主机及其服务。 按照文件中的注释选择正确的部分并应用其约定。 维护者将审查该更改。
如果你不确定应将被屏蔽的主机添加到默认设置中,还是在你的 dependabot.yml 文件中进行配置,请在 dependabot/proxy 仓库中提问。