跳至主要内容

禁用或限制组织的 GitHub Actions

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

谁可以使用此功能?

组织所有者可以启用、禁用和限制组织的 GitHub Actions。

关于组织的 GitHub Actions 权限

默认情况下,GitHub Actions 在所有存储库和组织中都已启用。您可以选择禁用 GitHub Actions 或将其限制为组织中的 Actions 和可重用工作流。有关 GitHub Actions 的更多信息,请参阅“编写工作流”。

您可以为组织中的所有存储库启用 GitHub Actions。启用 GitHub Actions 后,工作流能够运行位于您的存储库和任何其他公共存储库中的 Actions 和可重用工作流。您可以禁用组织中所有存储库的 GitHub Actions。禁用 GitHub Actions 后,您的存储库中不会运行任何工作流。

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

管理组织的 GitHub Actions 权限

您可以选择禁用组织中所有代码库的 GitHub Actions,或仅允许特定代码库使用。您还可以限制使用公共操作和可重用工作流,以便用户只能使用组织中存在的本地操作和可重用工作流。

注意

如果您的组织由拥有覆盖策略的企业管理,则您可能无法管理这些设置。有关更多信息,请参阅“在您的企业中实施 GitHub Actions 策略”。

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

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

  3. 在左侧边栏中,单击 **Actions**,然后单击**常规**。

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

    如果您选择**允许OWNER,并选择非OWNER的操作和可重用工作流**,则允许组织内的操作和可重用工作流,并且还有其他选项允许其他特定操作和可重用工作流。有关更多信息,请参阅“允许选择的操作和可重用工作流运行”。

    当您仅允许组织内的操作和可重用工作流时,该策略会阻止对 GitHub 编写的操作的所有访问。例如,actions/checkout 操作将不可访问。

  5. 单击**保存**。

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

当您选择**允许OWNER,并选择非OWNER的操作和可重用工作流**时,允许本地操作和可重用工作流,并且还有其他选项允许其他特定操作和可重用工作流

注意

如果您的组织有覆盖策略或由拥有覆盖策略的企业管理,则您可能无法管理这些设置。有关更多信息,请参阅“禁用或限制组织的 GitHub Actions”或“在您的企业中实施 GitHub Actions 策略”。

  • 允许 GitHub 创建的操作:您可以允许工作流使用 GitHub 创建的所有操作。GitHub 创建的操作位于actionsgithub组织中。有关更多信息,请参阅actionsgithub组织。

  • 允许经过验证的创建者发布的 Marketplace 操作:您可以允许工作流使用经过验证的创建者发布的所有 GitHub Marketplace 操作。当 GitHub 将操作的创建者验证为合作伙伴组织时,徽章将显示在 GitHub Marketplace 中操作旁边。

  • 允许指定的操作和可重用工作流:您可以将工作流限制为仅使用特定组织和代码库中的操作和可重用工作流。指定的操作不能设置为超过 1000 个。

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

    • 对于操作,语法为OWNER/REPOSITORY@TAG-OR-SHA。例如,使用actions/[email protected]选择标签或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 的工作流语法”。

    注意

    对于 GitHub Free、GitHub Pro、GitHub Free for organizations 或 GitHub Team 计划,**允许指定的操作和可重用工作流**选项仅在公共代码库中可用。

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

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.
  2. 在组织旁边,单击**设置**。
  3. 在左侧边栏中,单击 **Actions**,然后单击**常规**。
  4. 在“策略”下,选择**允许OWNER,并选择非OWNER的操作和可重用工作流**并将所需的 action 和可重用工作流添加到列表中。
  5. 单击**保存**。

限制自托管运行器的使用

无法保证 GitHub 的自托管运行器将托管在短暂的、干净的虚拟机上。因此,它们可能会受到工作流中不受信任的代码的破坏。

同样,任何可以分叉代码库并打开拉取请求的人(通常是那些对代码库具有读取权限的人)都可以破坏自托管运行器环境,包括访问机密和GITHUB_TOKEN,这取决于其设置,可以授予对代码库的写入访问权限。尽管工作流可以通过使用环境和必需的审查来控制对环境机密的访问,但这些工作流不会在隔离的环境中运行,并且在自托管运行器上运行时仍然容易受到相同的风险。虽然工作流可以通过使用环境和必需的审查来控制对环境机密的访问,但这些工作流不会在隔离的环境中运行,并且在自托管运行器上运行时仍然容易受到相同的风险。

出于这些以及其他原因,您可能决定阻止用户在代码库级别创建自托管运行器。

如果代码库在禁用其使用时已具有自托管运行器,则这些运行器将以“已禁用”状态列出,并且不会分配任何新的工作流作业。

Screenshot of the "Runners" list showing a self-hosted runner with the status "Disabled."

注意

禁用代码库级自托管运行器的创建后,工作流仍然可以访问企业或组织级自托管运行器。

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

配置来自公共分叉的工作流所需审批

任何人都可以分叉公共代码库,然后提交拉取请求,以建议对代码库的 GitHub Actions 工作流进行更改。虽然来自分叉的工作流无法访问机密数据(例如机密),但如果它们被修改用于滥用目的,则可能会对维护者造成困扰。

为了帮助防止这种情况,来自某些外部贡献者的公共代码库拉取请求上的工作流不会自动运行,可能需要先获得批准。根据“来自贡献者的分叉拉取请求工作流运行审批”设置,如果以下情况,则公共代码库拉取请求上的工作流将不会自动运行,并且可能需要批准

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

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

pull_request_target事件触发的 Workflow 在基分支的上下文中运行。由于基分支被视为受信任的,因此由这些事件触发的 Workflow 将始终运行,而不管批准设置如何。有关pull_request_target事件的更多信息,请参阅“触发工作流的事件”。

警告

这些工作流审批策略旨在限制可以在 GitHub Actions 运行器中执行工作流的用户集,这些运行器在使用 GitHub 托管运行器时可能会导致意外的资源和计算消耗。如果您正在使用自托管运行器,如果允许用户绕过设置的审批策略中的审批或批准拉取请求,则潜在的恶意用户控制的工作流代码将自动执行。您必须考虑在您的基础设施中执行此代码的风险,并且应审查并遵循自托管运行器安全建议,而不管使用的审批设置如何。请参阅“GitHub Actions 的安全加固”。

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

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

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

  3. 在左侧边栏中,单击 **Actions**,然后单击**常规**。

  4. 来自贡献者的分叉拉取请求工作流运行审批下,选择哪些用户子集需要在运行其拉取请求上的工作流之前获得批准。将检查拉取请求作者和触发工作流的拉取请求事件的执行者,以确定是否需要批准。如果需要批准,则具有对代码库的写入访问权限的用户必须批准运行拉取请求工作流。请参阅“批准来自公共分叉的工作流运行”。

    警告

    当仅要求首次贡献者进行批准(前两个设置)时,任何已将任何提交或拉取请求合并到代码库中的用户都不需要批准。恶意用户可以通过让维护者接受简单的错别字或其他无害的更改来满足此要求,无论是作为他们自己编写的拉取请求的一部分,还是作为其他用户的拉取请求的一部分。

    • 要求对 GitHub 新手首次贡献者进行批准。只有在 GitHub 上是新手并且从未将提交或拉取请求合并到此代码库中的用户才需要批准才能运行工作流。
    • 要求对首次贡献者进行批准。只有从未将提交或拉取请求合并到此代码库中的用户才需要批准才能运行工作流。
    • 要求对所有外部贡献者进行批准所有不是此代码库的成员或所有者,也不是组织成员的用户都需要批准才能运行工作流。
  5. 单击**保存**以应用设置。

有关批准此策略适用的工作流运行的更多信息,请参阅“批准来自公共分叉的工作流运行”。

为私有代码库分叉启用工作流

如果您依赖于使用私有仓库的分支,则可以配置策略来控制用户如何在pull_request事件上运行工作流。仅适用于私有仓库,您可以为组织或仓库配置这些策略设置。

如果组织禁用了某个策略,则无法为仓库启用该策略。如果组织启用了某个策略,则可以为各个仓库禁用该策略。

  • 从分支拉取请求运行工作流 - 允许用户从分支拉取请求运行工作流,使用具有只读权限的GITHUB_TOKEN,并且无法访问密钥。
  • 将写入令牌发送到来自拉取请求的工作流 - 允许来自分支的拉取请求使用具有写入权限的GITHUB_TOKEN
  • 将密钥发送到来自拉取请求的工作流 - 使所有密钥都可供拉取请求使用。
  • 要求批准分支拉取请求工作流 - 在没有写入权限的协作者的拉取请求上运行的工作流,需要具有写入权限的人员批准才能运行。

为组织配置私有分支策略

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.
  2. 在组织旁边,单击**设置**。
  3. 在左侧边栏中,单击 **Actions**,然后单击**常规**。
  4. 分支拉取请求工作流下,选择您的选项。
  5. 单击**保存**以应用设置。

设置组织的GITHUB_TOKEN权限

您可以设置授予GITHUB_TOKEN的默认权限。有关GITHUB_TOKEN的更多信息,请参阅“自动令牌身份验证”。您可以选择一组受限的权限作为默认值,或应用宽松的设置。

您可以在组织或仓库的设置中设置GITHUB_TOKEN的默认权限。如果在组织设置中选择一个限制性选项作为默认值,则在组织内仓库的设置中也会选择相同的选项,并且宽松选项将被禁用。如果您的组织属于 GitHub Enterprise 帐户,并且在企业设置中选择了更严格的默认值,则您将无法在组织设置中选择更宽松的默认值。

任何对仓库具有写入权限的人员都可以修改授予GITHUB_TOKEN的权限,根据需要添加或删除访问权限,方法是在工作流文件中编辑permissions键。有关更多信息,请参阅permissions

配置默认GITHUB_TOKEN权限

默认情况下,当您创建新组织时,GITHUB_TOKEN仅对contentspackages范围具有读取访问权限。

  1. 在 GitHub 的右上角,点击您的个人资料照片,然后点击您的个人资料

    Screenshot of the dropdown menu under @octocat's profile picture. "Your profile" is outlined in dark orange.

  2. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

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

  4. 在左侧边栏中,单击 **Actions**,然后单击**常规**。

  5. 在“工作流权限”下,选择您是否希望GITHUB_TOKEN对所有权限具有读写访问权限(宽松设置),或者仅对contentspackages权限具有读取访问权限(限制设置)。

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

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

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

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

  1. 在 GitHub 的右上角,点击您的个人资料照片,然后点击您的个人资料

    Screenshot of the dropdown menu under @octocat's profile picture. "Your profile" is outlined in dark orange.

  2. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

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

  4. 在左侧边栏中,单击 **Actions**,然后单击**常规**。

  5. 在“工作流权限”下,使用允许 GitHub Actions 创建和批准拉取请求设置来配置GITHUB_TOKEN是否可以创建和批准拉取请求。

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

管理组织的 GitHub Actions 缓存存储

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

按仓库查看 GitHub Actions 缓存存储

对于组织中的每个仓库,您可以查看仓库使用了多少缓存存储、活动缓存的数量,以及仓库是否接近总缓存大小限制。有关缓存使用和逐出过程的更多信息,请参阅“缓存依赖项以加快工作流速度”。

  1. 在 GitHub 的右上角,点击您的个人资料照片,然后点击您的个人资料

    Screenshot of the dropdown menu under @octocat's profile picture. "Your profile" is outlined in dark orange.

  2. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

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

  4. 在左侧边栏中,单击 操作,然后点击缓存

  5. 查看仓库列表以获取有关其 GitHub Actions 缓存的信息。您可以点击仓库名称以查看有关仓库缓存的更多详细信息。