# 工作流执行保护机制

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

> \[!NOTE]
> 工作流执行保护位于 公开预览 且可能会更改。

## 关于工作流执行保护机制

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

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

## 由规则集提供支持

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

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

## 可用规则

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

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

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

## 停止常见攻击者技术

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

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

## 配置工作流执行保护

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

1. 在 GitHub 的右上角，单击个人资料图片，然后单击“<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-organization" aria-label="organization" role="img"><path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path></svg> Your organizations”\*\*\*\*。
2. 单击以选择一个组织。
3. 在组织名称下，单击 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg>“Settings”\*\*\*\*。 如果看不到“设置”选项卡，请选择“<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="kebab horizontal icon" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>”下拉菜单，然后单击“设置”\*\*\*\*\*\*\*\*。

   ![组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。](/assets/images/help/discussions/org-settings-global-nav-update.png)
4. 在左侧边栏中的 **“操作**”下，单击“ **策略**”。
5. 创建规则集，然后添加事件规则和参与者规则。
6. 选择规则集是活动还是处于评估模式，然后保存更改。