Skip to main content

了解 GitHub 机密类型

了解 GitHub 机密的使用、范围和访问权限。

在本文中

Dependabot 秘密

Dependabot 机密用于存储要在 Dependabot 中使用的凭据和敏感信息。

Dependabot 机密在存储库的 dependabot.yml 文件中被引用。

Usage

Dependabot 密钥通常用于 Dependabot 进行身份验证以访问专用包注册表。 这允许 Dependabot 打开拉取请求以更新专用存储库中易受攻击或过时的依赖项。 用于身份验证,这些 Dependabot 机密在存储库 dependabot.yml 的文件中引用。

Dependabot 机密还可能包括由 Dependabot 启动的工作流所需的机密。 例如, Dependabot 在创建拉取请求以更新依赖项时,可以触发 GitHub Actions 工作流,或对拉取请求的注释。 在这种情况下,如果工作流是由Dependabot事件触发的,就可以从工作流文件(Dependabot)中引用机密。

Scope

可以在以下位置定义 Dependabot 机密:

  • 存储库级别
  • 组织级别

Dependabot 在组织级别设置时,可以在存储库之间共享机密。 必须指定组织中的哪些存储库可以访问机密。

访问权限

Dependabot 机密可供 Dependabot 访问,以便向专用注册表进行身份验证,从而更新依赖项。

在 Dependabot 启动工作流的触发器事件时,GitHub Actions 机密可供 Dependabot 工作流访问。 这是因为,当工作流启动 Dependabot时,只有 Dependabot 机密可用 - 操作机密不可访问。 因此,这些工作流所需的任何机密都必须存储为 Dependabot 机密,而不是 Actions 机密。 pull_request_target 事件还有其他安全限制。 请查看限制和局限

用户访问权限

存储库级机密:

  • 具有存储库 管理员访问权限 的用户可以创建和管理 Dependabot 机密。
  • 对存储库具有 协作者访问权限 的用户可以使用机密 Dependabot。

组织级机密:

  • 组织所有者 可以创建和管理 Dependabot 机密。
  • 若用户具有存储库的协作者访问权限并可访问每个机密,则可以将机密用于 Dependabot。

局限和限制

对于由其 Dependabot启动的工作流,事件 pull_request_target 处理方式与其他事件不同。 对于此事件,如果拉取请求的基本引用由 Dependabot (github.event.pull_request.user.login == 'dependabot[bot]') 创建:

  • 该工作流接收只读 GITHUB_TOKEN
  • 机密不适用于该工作流****。

此额外限制有助于防止 Dependabot 启动的请求可能引发潜在安全风险。

Dependabot 机密不会被传递给分叉。

操作机密

Actions 机密用于在工作流中存储敏感信息(例如 API 密钥、身份验证令牌和其他凭据)。

Usage

工作流文件 (.github/workflows/*.yml) 中会引用 Actions 机密。

Scope

可以在以下级别定义 Actions 机密:

  • 存储库级别
  • 环境级别
  • 组织级别

环境级机密特定于某个特定环境,例如生产环境或过渡环境。 如果在组织级别设置,则可以跨存储库共享 Actions 机密。 可以使用访问策略来控制哪些存储库有权访问机密。

访问权限

操作机密仅在 GitHub Actions 工作流中可用。 尽管在 Actions 上运行, Dependabot 但无权访问 Actions 机密。

对于由Dependabot启动的工作流,Actions 机密信息不可用。 这些工作流机密必须存储为 Dependabot 机密,才能访问工作流。

存储 Actions 机密的位置决定了其可访问性:

  • 存储库机密:存储库中的所有工作流都可以访问该机密。
  • 环境机密:只有引用该特定环境的作业才可访问该机密。
  • 组织机密:存储库中由组织授予访问权限的所有工作流都可以访问组织机密。

用户访问权限

存储库级机密和环境机密:

  • 对存储库具有“管理员访问权限”的用户可以创建和管理 Actions 机密****。
  • 对存储库具有“协作者访问权限”的用户可以使用机密****。

组织级机密:

  • 组织所有者可以创建和管理 Actions 机密。
  • 对有权访问每个机密的存储库具有“协作者访问权限”的用户可以使用该机密****。

局限和限制

  • Actions 密钥不适用于由Dependabot启动的工作流。
  • Actions 机密不会传递给由分叉中的拉取请求触发的工作流。
  •           GitHub Actions 会自动修订打印到工作流日志的所有 GitHub 机密的内容。
    
  • 最多可以存储 1,000 个组织机密、100 个存储库机密和 100 个环境机密。 密码大小限于 48 KB。 有关详细信息,请参阅机密的限制

延伸阅读