注意
工作流执行保护位于 公开预览 且可能会更改。
关于工作流执行保护机制
使用工作流执行保护可以定义允许列表,该列表控制谁可以触发 GitHub Actions 工作流以及允许哪些事件运行它们。 以前,工作流根据触发它的提交中的工作流文件运行,具有存储库访问权限的攻击者可以修改该文件以运行恶意代码。 工作流执行保护会缩小这一差距。 管理员定义规则,并在 GitHub Actions 工作流运行之前对其进行评估,因此未经授权的执行组件或事件永远不会达到执行。
企业、组织和存储库级别提供工作流执行保护。
由规则集提供支持
工作流执行保护基于 GitHub 规则集框架构建,因此你从规则集中已知道的目标也适用于此处。 可以使用规则集应用保护,并使用存储库自定义属性将其限定为特定存储库。 这意味着你可以从一个位置强制实施广泛的保护,而不是单独配置每个工作流文件。 有关规则集的详细信息,请参阅 关于规则集。
还可以使用评估模式运行规则,而无需强制执行这些规则。 评估模式显示规则在强制实施之前会阻止的确切内容,以便无需中断现有工作流即可推出策略。
可用规则
事件和参与者是前两个规则,并 GitHub 计划随着时间的推移添加更多规则。
- 执行组件规则控制谁可以触发工作流,包括单个用户、存储库角色,如读取、维护和管理员、GitHub AppsCopilot以及Dependabot。
- 事件规则控制允许的事件,例如
push,pull_request``pull_request_target和workflow_dispatch。
默认情况下,对存储库具有写入访问权限的每个用户都可以触发工作流。 执行组件规则允许将参与代码的人员与运行 CI 的人员分开,以便你可以授予参与者写入访问权限,而无需授予他们执行工作流的能力。
停止常见攻击者技术
工作流执行保护会中断多个实际攻击模式:
- 由拉取请求触发的受污染管道执行。 限制或禁止
pull_request_target,包括在最常被利用的公共存储库中。 - 手动触发滥用。 将
workflow_dispatch限制为仅维护者可用,这样不受信任的身份就无法启动工作流。 - 非信任方执行。 完全阻止低信任身份触发工作流。
- 配置不当。 应用覆盖任何单个配置错误工作流文件的中央策略。
配置工作流执行保护
你可以在你的 GitHub Actions 设置中的新 策略 部分配置工作流执行保护。 此 策略 部分与现有的 常规 设置分开。
-
在 GitHub 的右上角,单击个人资料图片,然后单击“ Your organizations”****。
-
单击以选择一个组织。
-
在组织名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

-
在左侧边栏中的 “操作”下,单击“ 策略”。
-
创建规则集,然后添加事件规则和参与者规则。
-
选择规则集是活动还是处于评估模式,然后保存更改。