Skip to main content

工作流执行保护机制

使用工作流执行保护可以控制谁可以触发 GitHub Actions 工作流,以及允许哪些事件在整个组织中运行它们。

注意

工作流执行保护位于 公开预览 且可能会更改。

关于工作流执行保护机制

使用工作流执行保护可以定义允许列表,该列表控制谁可以触发 GitHub Actions 工作流以及允许哪些事件运行它们。 以前,工作流根据触发它的提交中的工作流文件运行,具有存储库访问权限的攻击者可以修改该文件以运行恶意代码。 工作流执行保护会缩小这一差距。 管理员定义规则,并在 GitHub Actions 工作流运行之前对其进行评估,因此未经授权的执行组件或事件永远不会达到执行。

企业、组织和存储库级别提供工作流执行保护。

由规则集提供支持

工作流执行保护基于 GitHub 规则集框架构建,因此你从规则集中已知道的目标也适用于此处。 可以使用规则集应用保护,并使用存储库自定义属性将其限定为特定存储库。 这意味着你可以从一个位置强制实施广泛的保护,而不是单独配置每个工作流文件。 有关规则集的详细信息,请参阅 关于规则集

还可以使用评估模式运行规则,而无需强制执行这些规则。 评估模式显示规则在强制实施之前会阻止的确切内容,以便无需中断现有工作流即可推出策略。

可用规则

事件和参与者是前两个规则,并 GitHub 计划随着时间的推移添加更多规则。

  • 执行组件规则控制谁可以触发工作流,包括单个用户、存储库角色,如读取、维护和管理员、GitHub AppsCopilot以及Dependabot。
  • 事件规则控制允许的事件,例如pushpull_request``pull_request_targetworkflow_dispatch

默认情况下,对存储库具有写入访问权限的每个用户都可以触发工作流。 执行组件规则允许将参与代码的人员与运行 CI 的人员分开,以便你可以授予参与者写入访问权限,而无需授予他们执行工作流的能力。

停止常见攻击者技术

工作流执行保护会中断多个实际攻击模式:

  • 由拉取请求触发的受污染管道执行。 限制或禁止 pull_request_target,包括在最常被利用的公共存储库中。
  • 手动触发滥用。workflow_dispatch 限制为仅维护者可用,这样不受信任的身份就无法启动工作流。
  • 非信任方执行。 完全阻止低信任身份触发工作流。
  • 配置不当。 应用覆盖任何单个配置错误工作流文件的中央策略。

配置工作流执行保护

你可以在你的 GitHub Actions 设置中的新 策略 部分配置工作流执行保护。 此 策略 部分与现有的 常规 设置分开。

  1. 在 GitHub 的右上角,单击个人资料图片,然后单击“ Your organizations”****。

  2. 单击以选择一个组织。

  3. 在组织名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。

  4. 在左侧边栏中的 “操作”下,单击“ 策略”。

  5. 创建规则集,然后添加事件规则和参与者规则。

  6. 选择规则集是活动还是处于评估模式,然后保存更改。