Skip to main content

禁用或限制组织的 GitHub Actions

可以为组织启用、禁用和限制GitHub Actions。

谁可以使用此功能?

Organization owners and users with the "Manage organization Actions policies" and "Manage runners and runner groups" fine-grained permissions can enable, disable, and limit GitHub Actions for an organization.

For more information, see 自定义组织角色的权限.

关于组织的 GitHub Actions 权限

默认情况下,GitHub Actions 会在所有存储库和组织上启用。 可以选择禁用 GitHub Actions 或将其限制为企业中的操作 和可重用工作流。 有关 GitHub Actions 的详细信息,请参阅“撰写工作流程”。

您可以对组织中的所有仓库启用 GitHub Actions。 启用 GitHub Actions 时,工作流能够运行位于您的存储库或任何其他公共或内部存储库中的操作和可重用工作流。 你可以对组织中的所有存储库禁用 GitHub Actions。 禁用 GitHub Actions 时,仓库中不会运行任何工作流程。

或者,可以对组织中的所有存储库启用 GitHub Actions,但限制工作流可以运行的操作和可重用工作流。

管理组织的 GitHub Actions 权限

可以选择对组织中的所有存储库禁用 GitHub Actions,或仅允许特定存储库。 还可以限制公共操作 和可重用工作流的使用,让用户只能使用企业中现有的本地操作和可重用工作流。

注意

如果组织由具有替代策略的企业管理,则可能无法管理这些设置。 有关详细信息,请参阅“在企业中强制实施GitHub Actions策略”。

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

  2. 在组织旁边,单击“设置”。

  3. 在左侧边栏中,单击“ Actions”,然后单击“General”********。

  4. 在“Policies(策略)”下,选择一个选项。

    如果选择 允许企业,并允许选择非企业、操作和可重用工作流____,则允许企业内的操作和可重用工作流,并且还有允许其他特定操作和可重用工作流的其他选项。 有关详细信息,请参阅允许选择操作和可重用工作流来运行

    如果仅允许从到企业的操作和可重用工作流,该策略会阻止对由 GitHub 创作的操作的所有访问。 例如,无法访问 actions/checkout 操作。

    启用“Require actions to be pinned to a full-length commit SHA”后,**** 所有操作都必须关联到完整长度的提交 SHA 才能使用。 这包括来自企业的操作以及 GitHub 创作的操作。 可重用工作流仍可通过标记引用。有关详细信息,请参阅 安全使用指南

  5. 单击“ 保存”。

允许选择操作和可重用工作流以运行

如果选择 允许企业,并允许选择非企业、操作和可重用工作流____,则允许本地操作和可重用工作流,并且还允许其他特定操作和可重用工作流的其他选项:

数据重用.存储库.设置-权限-组织策略-备注 %}

  •           **允许 GitHub 创建的操作:** 你可以允许工作流使用 GitHub 创建的所有操作。 GitHub 创建的操作位于 `actions` 和 `github` 组织中。 有关更多信息,请参阅 [`actions`](https://github.com/actions) 和 [`github`](https://github.com/github) 组织。
    
  •           **允许经过验证的创建者发布的市场操作:** 你可以允许工作流使用经过验证的创建者发布的所有 GitHub Marketplace 操作。 如果 GitHub 验证该操作的创建者为合作伙伴组织,<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-verified" aria-label="The verified badge" role="img"><path d="m9.585.52.929.68c.153.112.331.186.518.215l1.138.175a2.678 2.678 0 0 1 2.24 2.24l.174 1.139c.029.187.103.365.215.518l.68.928a2.677 2.677 0 0 1 0 3.17l-.68.928a1.174 1.174 0 0 0-.215.518l-.175 1.138a2.678 2.678 0 0 1-2.241 2.241l-1.138.175a1.17 1.17 0 0 0-.518.215l-.928.68a2.677 2.677 0 0 1-3.17 0l-.928-.68a1.174 1.174 0 0 0-.518-.215L3.83 14.41a2.678 2.678 0 0 1-2.24-2.24l-.175-1.138a1.17 1.17 0 0 0-.215-.518l-.68-.928a2.677 2.677 0 0 1 0-3.17l.68-.928c.112-.153.186-.331.215-.518l.175-1.14a2.678 2.678 0 0 1 2.24-2.24l1.139-.175c.187-.029.365-.103.518-.215l.928-.68a2.677 2.677 0 0 1 3.17 0ZM7.303 1.728l-.927.68a2.67 2.67 0 0 1-1.18.489l-1.137.174a1.179 1.179 0 0 0-.987.987l-.174 1.136a2.677 2.677 0 0 1-.489 1.18l-.68.928a1.18 1.18 0 0 0 0 1.394l.68.927c.256.348.424.753.489 1.18l.174 1.137c.078.509.478.909.987.987l1.136.174a2.67 2.67 0 0 1 1.18.489l.928.68c.414.305.979.305 1.394 0l.927-.68a2.67 2.67 0 0 1 1.18-.489l1.137-.174a1.18 1.18 0 0 0 .987-.987l.174-1.136a2.67 2.67 0 0 1 .489-1.18l.68-.928a1.176 1.176 0 0 0 0-1.394l-.68-.927a2.686 2.686 0 0 1-.489-1.18l-.174-1.137a1.179 1.179 0 0 0-.987-.987l-1.136-.174a2.677 2.677 0 0 1-1.18-.489l-.928-.68a1.176 1.176 0 0 0-1.394 0ZM11.28 6.78l-3.75 3.75a.75.75 0 0 1-1.06 0L4.72 8.78a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L7 8.94l3.22-3.22a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg> 徽章将显示在 GitHub Marketplace 中的操作旁边。
    
  •           **允许或阻止指定的操作和可重用工作流:** 你可以限制工作流仅使用特定组织和存储库中的操作和可重用工作流。 设置时,指定的操作数不能超过 1000。
    

    要限制对操作或可重用工作流的特定标记或提交 SHA 的访问,请使用工作流中使用的相同语法来选择操作或可重用工作流。

    • 对于操作,语法为 OWNER/REPOSITORY@TAG-OR-SHA。 例如,使用 actions/javascript-action@v1.0.1 选择标记或使用 actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f 选择 SHA。 有关详细信息,请参阅“在工作流中使用预编写的构建基块”。
    • 对于可重用的工作流,语法为 OWNER/REPOSITORY/PATH/FILENAME@TAG-OR-SHA. 例如,octo-org/another-repo/.github/workflows/workflow.yml@v1。 有关详细信息,请参阅“重用工作流”。

    可以使用 * 通配符来匹配模式。 例如,要允许以 space-org 开头的组织中的所有操作和可重用工作流,可以指定 space-org*/*。 要允许以 octocat 开头的存储库中的所有操作和可重用工作流,可以使用 */octocat**@*。 有关使用 * 通配符的更多信息,请参阅 GitHub Actions 的工作流语法

    使用 , 分隔模式。 例如,要允许 octocatoctokit 组织中的所有操作和可重用工作流,可以指定 octocat/*, octokit/*

    使用 ! 前缀来阻止模式。 例如,要允许来自 space-org 组织的所有操作和可重用工作流,但同时要阻止 space-org/action 等特定操作,可指定 space-org/*, !space-org/action@*。 默认情况下,仅允许列表中指定的操作和可重用工作流。 要允许所有操作和可重用工作流,同时阻止特定操作,可指定 *, !space-org/action@*

此过程演示如何将特定操作和可重用工作流添加到列表。

  1. 在 GitHub 的右上角,单击个人资料图片,然后单击“ Your organizations”****。
  2. 在组织旁边,单击“设置”。
  3. 在左侧边栏中,单击“ Actions”,然后单击“General”********。
  4. 在“策略”下,选择 允许企业,并允许选择非企业、操作和可重用工作流____ 并向列表添加所需操作和可重用工作流。
  5. 单击“ 保存”。

限制自托管运行器的使用

GitHub 的自托管运行器不一定会被托管到无威胁的临时虚拟机上。 因此,工作流中不受信任的代码可能会危及它们。

同样,任何可以创建存储库分支并打开拉取请求的人(通常是那些对存储库具有读取访问权限的人)都能够损害自托管运行器环境,包括获得对机密和 GITHUB_TOKEN 的访问权限,根据其设置,可以授予对存储库的写入权限。 尽管工作流程可以通过使用环境和必需的审查来控制对环境密钥的访问,但是这些工作流程不是在隔离的环境中运行,在自托管运行程器上运行时仍然容易遭受相同的风险。

出于这些和其他原因,你可能会决定阻止用户在存储库级别创建自托管运行器。

注意

如果您的组织属于企业,则可能是在企业范围设置中禁用了在存储库级别创建自托管运行器的功能。 如果已经这样做了,则无法在组织设置中启用存储库级自托管运行器。 有关详细信息,请参阅“在企业中强制实施GitHub Actions策略”。

如果存储库在设置禁用自托管运行器时已有自托管运行器,则这些运行器将列为“已禁用”状态,且系统不会为它们分配任何新的工作流作业。

“运行器”列表的屏幕截图,其中显示了状态为“已禁用”的自托管运行器。

注意

禁止创建存储库级自托管运行器后,工作流仍可访问企业或组织级别的自托管运行器。

  1. 在 GitHub 的右上角,单击个人资料图片,然后单击“ Your organizations”****。
  2. 在组织旁边,单击“设置”。
  3. 在左侧边栏中,单击“ Actions”,然后单击“General”********。
  4. 在“运行器”下,使用下拉菜单选择首选设置: * 所有存储库 - 自托管运行器可用于组织中的任何存储库。 * 所选存储库 - 自托管运行器只能用于所选存储库。 * 已禁用 - 无法在存储库级别创建自托管运行器。
  5. 如果选择“所选存储库”:
    1. 请单击“”。
    2. 勾选要允许使用自托管运行器的存储库的复选框。
    3. 单击“选择存储库”。

配置公共复刻工作流程所需的批准

任何人都可以复刻公共仓库,然后提交建议更改仓库 GitHub Actions 工作流程的拉取请求。 虽然来自复刻的工作流程无法访问敏感数据(如密钥),但如果出于滥用目的进行修改,可能会让维护者感到烦恼。

为了帮助防止这种情况,某些外部贡献者向公共仓库提出的关于拉取请求的工作流程不会自动运行,可能需要先批准。 根据“贡献者运行分支拉取请求工作流的审批”设置,对公共存储库的拉取请求的工作流不会自动运行,并且在以下情况下可能需要审批:

  • 拉取请求由用户创建,需要根据所选策略进行审批****。
  • 拉取请求事件由用户触发,需要根据所选策略进行审批****。

默认情况下,所有首次贡献者都需要批准才能运行工作流程。

pull_request_target 事件触发的工作流在基础分支的上下文中运行。 由于基础分支被视为是受信任的,因此由这些事件触发的工作流将始终运行,无论审批设置如何。 有关 pull_request_target 事件的详细信息,请参阅“触发工作流的事件”。

警告

这些工作流审批策略旨在限制可在 GitHub Actions 运行器中执行工作流的用户集,因为在使用 GitHub 托管的运行器时,这些工作流可能会导致意外的资源和计算消耗。 如果使用自托管运行程序,并且允许用户绕过所设置审批策略中的审批或者拉取请求已获审批,则潜在的恶意用户控制工作流代码将自动执行。 必须考虑在基础结构中执行此代码的风险,无论使用何种审批设置,都应查看并遵循自托管运行程序安全建议。 请参阅“安全使用指南”。

您可以使用以下程序为组织配置此行为。 修改此设置会覆盖企业级别的配置集。

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

  2. 在组织旁边,单击“设置”。

  3. 在左侧边栏中,单击“ Actions”,然后单击“General”********。

  4. 在“贡献者运行分支拉取请求工作流的审批”下,选择在拉取请求上运行工作流前需要审批的用户子集****。 将检查触发工作流的拉取请求事件的拉取请求作者和行动者,以确定是否需要审批。 如果需要审批,对存储库具有写入访问权限的用户必须批准要运行的拉取请求工作流。 请参阅“批准来自分支的工作流运行”。

    警告

    当仅需要审批首次贡献者时(前两种设置),已将任何提交或拉取请求合并到存储库的用户将不需要审批。 恶意用户可以通过获取维护者接受的简单拼写错误或其他无害更改来满足此要求,无论是作为他们创作的拉取请求的一部分,还是作为其他用户拉取请求的一部分。

    • 对 GitHub 不熟悉的首次参与者须经批准****。 只有在 GitHub 上是新的且从未将提交或拉取请求合并到此存储库中的用户,才需要先获得批准然后才能运行工作流。
    • 首次参与者须经审批****。 只有从未将提交或拉取请求合并到此存储库的用户才需要先获得批准然后才能运行工作流。
    • 需要审批所有外部贡献者 不是此存储库的成员或所有者,也不是组织成员的所有用户都需要批准才能运行工作流。
  5. 单击“保存”以应用设置。

有关审批此策略适用的工作流运行的详细信息,请参阅“批准来自分支的工作流运行”。

为专用仓库复刻启用工作流程

如果依赖于使用专用存储库的分支,你可以配置策略来控制用户如何在 pull_request 事件上运行工作流。 适用于专用存储库和内部存储库,可以为各个企业、组织或存储库配置这些策略设置。

如果对企业禁用了某个策略,则无法对组织启用该策略。 如果对组织禁用了某个策略,则无法对仓库启用该策略。 如果组织启用了某个策略,则可以对个别仓库禁用该策略。

  • 从分支拉取请求运行工作流 - 允许用户使用具有只读权限、没有密码访问权限的 GITHUB_TOKEN,从分支拉取请求运行工作流。
  • 从拉取请求向工作流发送写入令牌 - 允许来自分支的拉取请求使用具有写入权限的 GITHUB_TOKEN
  • 从拉取请求向工作流发送机密 - 使所有机密都可用于拉取请求。
  • 需要批准拉取请求分支工作流 - 如果工作流在没有写权限的协作者发出的拉取请求上运行,则需要获得具有写权限的人员的批准,然后才能运行。

为组织配置专用复刻策略

  1. 在 GitHub 的右上角,单击个人资料图片,然后单击“ Your organizations”****。
  2. 在组织旁边,单击“设置”。
  3. 在左侧边栏中,单击“ Actions”,然后单击“General”********。
  4. 在“复刻拉取请求工作流”下,选择选项。
  5. 单击“保存”以应用设置。

为组织设置 GITHUB_TOKEN 的权限

可以设置授予 GITHUB_TOKEN 的默认权限。 有关 GITHUB_TOKEN 的详细信息,请参阅 在工作流中使用 GITHUB_TOKEN 进行身份验证。 你可以选择一组有限的权限作为默认项或应用权限设置。

可以在组织或存储库的设置中为 GITHUB_TOKEN 设置默认权限。 如果你在组织设置中选择受限制的选项为默认值,那么在组织内的存储库设置中也会选择相同选项,并禁用允许选项。 如果你的组织属于 GitHub Enterprise 帐户,并且在企业设置中选择了更受限制的默认值,则你将无法在组织设置中选择更宽松的默认值。

任何拥有存储库写入权限的人都可以通过编辑工作流文件中的 permissions 键来修改授予 GITHUB_TOKEN 的权限,或者根据需要添加或删除权限。 有关详细信息,请参阅 permissions

配置默认 GITHUB_TOKEN 权限

默认情况下,在创建新组织时, 设置继承自企业设置中配置的内容。

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

    @octocat 的个人资料图片下的下拉菜单的屏幕截图。 “你的个人资料”用深橙色框出。

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

  3. 在组织旁边,单击“设置”。

  4. 在左侧边栏中,单击“ Actions”,然后单击“General”********。

  5. 在“工作流权限”下,选择是要让 GITHUB_TOKEN 对所有权限具有读写访问权限(允许设置),还是仅对 contentspackages 权限具有读取访问权限(受限设置)。

  6. 单击“保存”以应用设置。

阻止 GitHub Actions 创建或批准拉取请求

可选择允许或阻止 GitHub Actions 工作流创建或审批拉取请求。

默认情况下,创建新的组织时,不允许工作流创建或批准拉取请求。

数据reusables.profile.access_profile %}数据reusables.profile.access_org %}数据reusables.profile.org_settings %}1. 在左侧边栏中,单击“ Actions”,然后单击“General”********。

  1. 在“工作流权限”下,使用 Allow GitHub Actions创建和批准拉取请求设置来配置GITHUB_TOKEN是否可以创建和批准拉取请求。
  2. 单击“保存”以应用设置。

管理您组织的 GitHub Actions 缓存存储

组织管理员可以查看组织中所有存储库的 GitHub Actions 缓存存储。

按存储库查看 GitHub Actions 缓存

对于组织中的每个存储库,可查看存储库使用的缓存存储量、活动缓存的数量,以及存储库是否接近总缓存大小限制。 有关缓存使用情况和逐出过程的详细信息,请参阅“依赖项缓存参考”。

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

    @octocat 的个人资料图片下的下拉菜单的屏幕截图。 “你的个人资料”用深橙色框出。

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

  3. 在组织旁边,单击“设置”。

  4. 在左侧边栏中,单击 Actions」,然后单击 「Caches」

  5. 查看存储库列表,了解有关其 GitHub Actions 缓存的信息。 可单击存储库名称以查看有关存储库缓存的更多详细信息。

为组织配置 GitHub Actions 缓存设置

可以配置将应用于组织中所有存储库的缓存保留和大小设置。 此功能需用户主动选择使用,并且可供具有已登记付款方式的用户使用。

如果组织归已配置缓存设置的企业所有,则只能配置限制,最多只能由企业设置上限。 如果你的组织不是企业所有(或企业尚未配置缓存设置),则可以最多配置全局最大值。

存储库管理员可以选择为其存储库配置限制,但不能超过组织级别设置的限制。

数据reusables.profile.access_profile %}数据reusables.profile.access_org %}数据reusables.profile.org_settings %}1. 在左侧边栏中,单击“ Actions”,然后单击“General”********。

  1. 在“缓存”部分中,配置更改并将其保存到以下设置: * 缓存保留期:自动删除之前保留缓存的最大天数。 默认值为 7 天。 你最多可以配置 365 天(或企业设置的上限)。 单击“ 保存 ”以应用所做的任何更改。 * 缓存大小逐出限制:存储库中所有缓存的最大总大小。 默认值为 10 GB。 每个存储库最多可以配置 10,000 GB(或高达企业设置的限制)。 超过此限制后,将逐出较旧的缓存,以便为新缓存腾出空间。 单击“ 保存 ”以应用所做的任何更改。

有关缓存逐出的详细信息,请参阅 依赖项缓存参考