Skip to main content

控制对较大运行器的访问

可以使用策略来限制对已添加到组织或企业的 大型运行器 的访问。

谁可以使用此功能?

大型运行器 目前仅对使用 GitHub Team 或 GitHub Enterprise Cloud 计划的组织和企业可用。

Note

本文中的信息和说明仅适用于使用 Linux 和 Windows 操作系统的 大型运行器。

关于运行器组

要在组织和/或企业级别控制对运行器的访问权限,企业和组织所有者可以使用运行器组。运行器组用于收集运行器集,并围绕它们创建安全边界。

授予对运行器组的访问权限时,可以看到组织的运行器设置中列出的运行器组。 或者,你可以为运行器组分配更精细的存储库和工作流访问策略。

在创建新运行器时,除非另有指定,否则它们将自动分配给默认组。 运行器每次只能在一个组中。 可以将运行器从一个运行器组移动到另一个运行器组。 有关详细信息,请参阅“将运行器移动到组”。

有关如何将作业路由到特定组中的运行器的信息,请参阅“选择作业的运行器”。

管理对运行器的访问

Note

必须先为运行器组配置权限,然后工作流才能将作业发送到 大型运行器。 有关详细信息,请参阅下列各节。

运行器组用于控制哪些存储库可以在 大型运行器 上运行作业。 必须从管理层次结构的各个级别管理对组的访问,具体取决于定义 大型运行器 的位置:

  • 企业级运行器:默认情况下,组织中的存储库无权访问企业级运行器组。 若要向存储库授予对企业运行器组的访问权限,组织所有者必须配置每个企业运行器组,并选择要授予访问权限的存储库。
  • 组织级运行器:默认情况下,向组织中的所有存储库授予对组织级运行器组的访问权限。 若要限制哪些存储库具有访问权限,组织所有者和拥有“管理组织运行器和运行器组”权限的用户必须配置组织运行器组并选择哪些存储库具有访问权限。

例如,下图包含一个企业级别的名为 grp-ubuntu-20.04-16core 的运行器组。 在名为 octo-repo 的存储库可以使用该组中的运行器之前,必须先在企业级别配置该组以允许访问 octo-org 组织。 然后必须在组织级别配置该组以允许访问 octo-repo

关系图,显示了在企业级定义的运行器组,其组织配置可允许访问两个存储库。

为组织创建运行器组

Warning

如果使用固定 IP 范围,建议仅对专用存储库使用 大型运行器。 公共存储库的分支可能会通过创建在工作流中执行代码的拉取请求,在 大型运行器 上运行危险代码。

**** 注意:创建运行器组时,你必须选择一个策略,用于定义哪些存储库和工作流有权访问运行器组。 若要更改哪些存储库和工作流可以访问运行器组,组织所有者和拥有“管理组织运行器和运行器组”权限的用户可以为组织设置策略。 有关详细信息,请参阅“在企业中为 GitHub Actions 实施策略”。

所有组织都有单个默认运行器组。 组织所有者和拥有“管理组织运行器和运行器组”权限的用户可以创建其他组织级运行器组。 有关自定义组织角色的详细信息,请参阅“关于自定义组织角色”。

如果在注册过程中未指定任何组,则运行器会自动添加到默认组。 稍后可以将运行器从默认组移动到自定义组。 有关详细信息,请参阅“将运行器移动到组”。

有关如何使用 REST API 创建运行器组的信息,请参阅“GitHub Actions 的 REST API 终结点”。

  1. 在 GitHub 上,导航到组织的主页面。

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

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

  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。

  4. 在“运行器组”部分,单击“新建运行器组”。

  5. 为运行器组输入名称。

  6. 分配存储库访问策略。

    你可以将运行程序组配置为可供特定存储库列表或组织中的所有存储库访问。 默认情况下,只有专用存储库可以访问运行程序组中的运行程序,但你可以覆盖此设置。 如果配置企业共享的组织的运行组,则不能覆盖此设置。

  7. 分配用于工作流访问的策略。

    可以将运行器组配置为可供特定工作流列表或所有工作流访问。 如果是配置企业共享的组织运行器组,则不能覆盖此设置。 如果指定可以访问运行器组的工作流,则必须使用工作流的完整路径,包括存储库名称和所有者,并且必须将工作流固定到分支、标记或完整 SHA。 例如:octo-org/octo-repo/.github/workflows/build.yml@v2, octo-org/octo-repo/.github/workflows/deploy.yml@d6dc6c96df4f32fa27b039f2084f576ed2c5c2a5, monalisa/octo-test/.github/workflows/test.yml@main

    只有直接在所选工作流程中定义的作业才能访问运行器组。 组织拥有的运行器组无法访问企业中其他组织的工作流;而你必须创建企业拥有的运行器组。 1. 单击“创建组”以创建组并应用策略。

为企业创建运行器组

Warning

如果使用固定 IP 范围,建议仅对专用存储库使用 大型运行器。 公共存储库的分支可能会通过创建在工作流中执行代码的拉取请求,在 大型运行器 上运行危险代码。

企业可以将其运行器添加到组以进行访问管理。 企业可以创建运行器组,这些组可供企业帐户中的特定组织或特定工作流访问。 然后,组织所有者可以为企业运行器组分配更精细的存储库和工作流访问策略。 有关如何使用 REST API 创建运行器组的信息,请参阅 GitHub Actions REST API 中的企业终结点。

如果在注册过程中未指定任何组,则运行器会自动添加到默认组。 稍后可以将运行器从默认组移动到自定义组。 有关详细信息,请参阅“将运行器移动到组”。

创建组时,必须选择用于定义哪些组织有权访问运行器组的策略。

  1. 在 GitHub 的右上角,单击你的个人资料照片。

  2. 根据环境,单击“你的企业”,或单击“你的企业”,然后单击要查看的企业********。

  3. 在页面左侧的企业帐户边栏中,单击 策略”。

  4. 在“ 策略”下,单击“操作”。****

  5. 单击“运行器组”选项卡。

  6. 单击“新建运行器组”。

  7. 在“组名称”下,键入运行器组的名称。

  8. 要选择组织访问策略,请选择“组织访问”下拉列表,然后单击一个策略。 您可以将运行器组配置为可供特定组织列表或企业中的所有组织访问。

  9. 分配用于工作流访问的策略。

    可以将运行器组配置为可供特定工作流列表或所有工作流访问。 如果是配置企业共享的组织运行器组,则不能覆盖此设置。 如果指定可以访问运行器组的工作流,则必须使用工作流的完整路径,包括存储库名称和所有者,并且必须将工作流固定到分支、标记或完整 SHA。 例如:octo-org/octo-repo/.github/workflows/build.yml@v2, octo-org/octo-repo/.github/workflows/deploy.yml@d6dc6c96df4f32fa27b039f2084f576ed2c5c2a5, monalisa/octo-test/.github/workflows/test.yml@main

    只有直接在所选工作流程中定义的作业才能访问运行器组。

  10. 单击“保存组”以创建组并应用策略。

对运行器组使用唯一名称

GitHub Actions 要求运行器组名称在组织级别必须唯一。 这意味着组织将无法再创建与企业中的运行器组同名的运行器组。 此外,用户将在与企业中的组共享相同名称的任何运行器组上看到警告横幅,建议重命名组织组。

为了避免混淆,如果组织和企业中存在重复的运行器组,工作流将失败。 若要解决此问题,可以重命名组织或企业中的某个运行器组,也可以更新工作流文件以向运行器组名称添加前缀:

  • org/organization/
  • ent/enterprise/

示例:使用前缀区分运行器组

例如,如果组织中有一个名为 my-group 的运行器组,企业中有另一个名为 my-group 的运行器组,则可以更新工作流文件以使用 org/my-groupent/my-group 来区分这两者。

使用 org/

runs-on:
  group: org/my-group
  labels: [ self-hosted, label-1 ]

使用 ent/

runs-on:
  group: ent/my-group
  labels: [ self-hosted, label-1 ]

更改可以访问运行器组的组织

Warning

如果使用固定 IP 范围,建议仅对专用存储库使用 大型运行器。 公共存储库的分支可能会通过创建在工作流中执行代码的拉取请求,在 大型运行器 上运行危险代码。

对于企业中的运行器组,你可以更改企业中哪些组织可以访问运行器组。

  1. 在 GitHub 的右上角,单击你的个人资料照片。

  2. 根据环境,单击“你的企业”,或单击“你的企业”,然后单击要查看的企业********。

  3. 在页面左侧的企业帐户边栏中,单击 策略”。

  4. 在“ 策略”下,单击“操作”。****

  5. 单击“运行器组”选项卡。

  6. 在“组织访问”下,使用下拉菜单单击“所选组织”。

    1. 在下拉菜单右侧,单击
    2. 在弹出窗口中,使用复选框选择可以使用此运行器组的组织。
  7. 单击 “保存组”

更改可以访问运行器组的存储库

Warning

如果使用固定 IP 范围,建议仅对专用存储库使用 大型运行器。 公共存储库的分支可能会通过创建在工作流中执行代码的拉取请求,在 大型运行器 上运行危险代码。

对于组织中的运行器组,可以更改组织中哪些存储库可以访问运行器组。

  1. 导航到运行器组所在的组织的主页。

  2. 单击 “设置”。

  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。

  4. 在组列表中,单击要配置的运行器组。

  5. 在“存储库访问”下,使用下拉菜单单击所选组织

    1. 在下拉菜单右侧,单击
    2. 在弹出窗口中,使用复选框选择可以访问此运行器组的存储库。
  6. 单击 “保存组”

更改可以访问运行器组的工作流

Warning

如果使用固定 IP 范围,建议仅对专用存储库使用 大型运行器。 公共存储库的分支可能会通过创建在工作流中执行代码的拉取请求,在 大型运行器 上运行危险代码。

可以将运行器组配置为运行选定工作流或所有工作流。 例如,可以使用此设置来保护存储在运行器上的机密,或者通过将运行器组限制为仅运行特定的可重用工作流来标准化部署工作流。 如果配置企业共享的组织的运行组,则不能覆盖此设置。

更改可以访问组织运行器组的工作流

  1. 导航到运行器组所在的组织的主页。

  2. 单击 “设置”。

  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。

  4. 在组列表中,单击要配置的运行器组。

  5. 在“工作流访问”下,选择下拉菜单,然后单击“选定的工作流” 。

  6. 单击

  7. 输入以逗号分隔的可访问运行器组的工作流程列表。 使用完整路径,包括存储库名称和所有者。 将工作流程固定到分支、标记或完整 SHA。 例如:octo-org/octo-repo/.github/workflows/build.yml@v2, octo-org/octo-repo/.github/workflows/deploy.yml@d6dc6c96df4f32fa27b039f2084f576ed2c5c2a5, monalisa/octo-test/.github/workflows/test.yml@main

    只有直接在所选工作流程中定义的作业才能访问运行器组。

    组织拥有的运行器组无法访问企业中其他组织的工作流程。相反,您必须创建企业拥有的运行器组。

  8. 单击“ 保存”。

更改可以访问企业运行器组的工作流

  1. 在 GitHub 的右上角,单击你的个人资料照片。

  2. 根据环境,单击“你的企业”,或单击“你的企业”,然后单击要查看的企业********。

  3. 在页面左侧的企业帐户边栏中,单击 策略”。

  4. 在“ 策略”下,单击“操作”。****

  5. 单击“运行器组”选项卡。

  6. 在组列表中,单击要配置的运行器组。

  7. 在“工作流访问”下,选择下拉菜单,然后单击“选定的工作流” 。

  8. 单击

  9. 输入以逗号分隔的可访问运行器组的工作流程列表。 使用完整路径,包括存储库名称和所有者。 将工作流程固定到分支、标记或完整 SHA。 例如:octo-org/octo-repo/.github/workflows/build.yml@v2, octo-org/octo-repo/.github/workflows/deploy.yml@d6dc6c96df4f32fa27b039f2084f576ed2c5c2a5, monalisa/octo-test/.github/workflows/test.yml@main

    只有直接在所选工作流程中定义的作业才能访问运行器组。

    组织拥有的运行器组无法访问企业中其他组织的工作流程。相反,您必须创建企业拥有的运行器组。

  10. 单击“ 保存”。

为较大的运行器配置专用网络访问

可在 Azure Vnet 中使用 GitHub 托管的运行器。 这样就将 GitHub 托管基础结构用于 CI/CD,同时取得对运行器网络策略的完全控制。 有关 Azure VNET 的详细信息,请参阅 Azure 文档中的什么是 Azure 虚拟网络?

如果已将企业或组织配置为连接到 Azure VNET,则可以向运行器组授予对虚拟网络的访问权限。 有关详细信息,请参阅“关于使用 GitHub 托管的运行器进行专用网络联网”。

更改运行器组的名称

可以在企业和组织级别重命名运行器组。

更改组织运行器组的名称

  1. 导航到运行器组所在的组织的主页。
  2. 单击 “设置”。
  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。
  4. 在组列表中,单击要配置的运行器组。
  5. 在“组名称”下的文本字段中输入新的运行器组名称。
  6. 单击“ 保存”。

更改企业运行器组的名称

  1. 在 GitHub 的右上角,单击你的个人资料照片。
  2. 根据环境,单击“你的企业”,或单击“你的企业”,然后单击要查看的企业********。
  3. 在页面左侧的企业帐户边栏中,单击 策略”。
  4. 在“ 策略”下,单击“操作”。****
  5. 单击“运行器组”选项卡。
  6. 在组列表中,单击要配置的运行器组。
  7. 在“组名称”下的文本字段中输入新的运行器组名称。
  8. 单击“ 保存”。

将运行器移动到组

如果在注册过程中没有指定运行器组,新运行器会自动分配到默认组,然后可以移到另一个组。

将组织运行器移动到组

  1. 在 GitHub 上,导航到组织的主页面。

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

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

  3. 在左侧边栏中,单击 “操作”,然后单击“运行器” 。

  4. 在“Runners(运行器)”列表中,单击您要配置的运行器。

  5. 选择“运行器组”下拉列表。

  6. 在“Move runner to group(将运行器移动到组)”中,选择运行器的目的地组。

将企业运行器移动到组

  1. 在 GitHub 的右上角,单击你的个人资料照片。
  2. 根据环境,单击“你的企业”,或单击“你的企业”,然后单击要查看的企业********。
  3. 在页面左侧的企业帐户边栏中,单击 策略”。
  4. 在“ 策略”下,单击“操作”。****
  5. 单击“运行器”选项卡。
  6. 在“Runners(运行器)”列表中,单击您要配置的运行器。
  7. 选择“运行器组”下拉列表。
  8. 在“Move runner to group(将运行器移动到组)”中,选择运行器的目的地组。

移除运行器组

若要删除运行器组,必须首先从组中移动或删除所有运行器。

从组织中删除运行器组

  1. 导航到运行器组所在的组织的主页。
  2. 单击 “设置”。
  3. 在左侧边栏中,单击 “操作”,然后单击“运行器组” 。
  4. 在组列表中,在要删除的组右侧,单击
  5. 若要删除组,请单击“删除组”。
  6. 查看确认提示,然后单击“删除此运行器组”。

从企业中删除运行器组

  1. 在 GitHub 的右上角,单击你的个人资料照片。
  2. 根据环境,单击“你的企业”,或单击“你的企业”,然后单击要查看的企业********。
  3. 在页面左侧的企业帐户边栏中,单击 策略”。
  4. 在“ 策略”下,单击“操作”。****
  5. 单击“运行器组”选项卡。
  6. 在组列表中,在要删除的组右侧,单击
  7. 若要删除组,请单击“删除组”。
  8. 查看确认提示,然后单击“删除此运行器组”。