Skip to main content

授予安全功能访问专用注册表的权限

如果组织使用专用注册表,则可以通过改进 code scanning 分析结果,并通过设置 Dependabot 对这些注册表的访问权限来维护更多依赖项。

在本文中

关于提供专用注册表访问权限的重要性

当存储库中的代码具有存储在专用注册表中的依赖项时,某些安全功能需要访问注册表才能使其有效工作。 如果无法访问存储库的所有依赖项,则Code Quality(公共预览版)的有效性,以及默认设置code scanning和Dependabot,将受到限制。

          Code scanning 默认设置对专用注册表的访问

如果未定义对组织使用的专用注册表的访问权限,则 code scanning 只会从公共注册表中可用的依赖项收集必要的数据。 大多数情况下,这足以发现大部分漏洞。 但是,在某些情况下,缺少访问权限可能会导致假阴性结果。 换句话说, code scanning 无法检测代码中的漏洞,因为它没有分析代码所需的所有信息。 例如,可能无法检测到某些数据流路径,因为步骤是在依赖项中定义的,这些依赖项不可访问,并且 code scanning 不知道如何解释它们。

配置对组织中使用的专用注册表的访问权限时, code scanning 可以访问它所需的所有信息,并且不太可能错过漏洞。

          Code scanning 默认设置支持以下注册表类型:
语言注册表类型
C#NuGet 源
GoGOPROXY 服务器,Git 源
JavaMaven 存储库

提示

每个组织可以为每种类型的注册表定义一个访问配置。 如果组织中的代码库使用给定类型的多个注册表,则应设置统一的访问点,或定义对该组织中的代码库最重要的注册表的访问。

定义默认设置的 code scanning 注册表访问权限

你需要是组织所有者才能在用户界面中设置专用注册表的访问权限。 还可以将 REST API 与组织所有者或 {read,write}_org_private_registries 权限一起使用。

  1. 在组织的“设置”**** 选项卡中,向下滚动到“安全”部分,选择“机密和变量”****。
  2. 在展开的机密和变量列表中,选择“专用注册表”,显示“专用注册表”**** 页面。
  3. 单击“新建专用注册表”****,添加专用注册表的访问详情。
  4. 使用“URL”**** 和“类型”**** 字段定义注册表的位置和类型: * URL 是访问专用注册表的位置。 例如,若要在 NuGet 中使用GitHub Packages注册表:https://nuget.pkg.github.com/ORGANIZATION/index.json,其中ORGANIZATION是您在GitHub上的组织名称。 * 类型指注册表的类型。
  5. 根据身份验证方法,选择“令牌”**** 或“用户名和密码”****,然后在相应字段中输入数据。 某些类型的身份验证令牌(例如 a GitHubPersonal Access Token)绑定到特定的用户标识。 为这些选项选择 “用户名和密码 ”选项,并将相关用户名输入为 “用户名 ”,并将令牌输入为 “密码”。
  6. 定义组织中的哪些存储库可以使用这些详情访问该专用注册表:所有存储库、专用和内部存储库,或仅选定的存储库。
  7. 完成专用注册表的定义后,单击“添加注册表”**** 保存注册表信息。

提示

向组织添加专用注册表时,令牌或密码将以加密机密的形式存储。 注册表创建后,将无法再次查看令牌或密码。

启用 code scanning 默认设置以使用注册表定义

为存储库或存储库组启用 code scanning 默认设置时, GitHub 检查存储库是否有权访问任何现有的专用注册表。 如果任何专用注册表可用于存储库, code scanning 将在分析期间使用相关定义。

首次配置专用注册表时,需要为想要使用新定义的任何存储库禁用并重新启用 code scanning 默认设置。 后续运行时将自动应用新的或修改后的配置。

对于支持专用包注册表的语言, code scanning 默认设置将生成有关 工具状态页的信息。 这显示了哪些专用注册表配置可用于分析,但无法确定 code scanning 默认设置是否能够成功从中下载私有依赖项。 有关 工具状态页 的详细信息,请参阅 Use the tool status page for code scanning

或者,可以通过查看操作日志文件来确认专用注册表是否通过 code scanning 分析成功使用,请参阅 代码扫描日志

          Code scanning 高级设置访问专用注册表

          Code scanning 高级设置使用可用的任何私有注册表来运行使用 `codeql-action` 的分析的工作流。 它无法访问默认设置所用的组织级专用注册表。

对于编译型语言,codeql-action 必须监视代码的构建过程。 你可以修改现有的构建工作流以同时运行 codeql-action,或创建新的工作流,用于构建代码的生产版本并运行 codeql-action

构建过程所用的所有专用注册表也必须允许运行 codeql-action 的工作流访问。 有关高级设置的更多信息,请参阅 Configuring advanced setup for code scanning

          Dependabot 更新对专用注册表的访问

          Dependabot 可以使用任何组织级专用注册表,也可以使用在存储库的 `dependabot.yml` 文件中定义的任何专用注册表。

          Dependabot 无法检查专用注册表中存储的代码的安全或版本更新,除非它可以访问注册表。 如果未配置对专用注册表的访问权限,则 Dependabot 无法引发拉取请求以更新注册表中存储的任何依赖项。

配置对一个或多个专用注册表的访问权限时, Dependabot 可以提出请求来升级易受攻击的依赖项或维护依赖项,请参阅 为 Dependabot 配置对专用注册表的访问权限针对 Dependabot 的专用注册表配置指南

          Code Quality 对专用注册表的访问

注意

GitHub Code Quality 当前正处于 公共预览版 阶段,并可能会发生变化。 在 公共预览版期间,Code Quality 不会计费,尽管 Code Quality 扫描将使用 GitHub Actions 分钟。

          GitHub Code Quality 可以使用为存储库启用该注册表时可用的任何组织级专用注册表。

如果将新注册表添加到组织,则需要禁用并重新启用 Code Quality ,以确保分析检测和使用新的注册表。

若要为组织设置专用注册表访问权限,请参阅 定义代码扫描默认设置的注册表访问权限