群组访问令牌

使用群组访问令牌,您可以使用单个令牌:

  • 为群组执行操作。
  • 管理群组内的项目。

您可以使用群组访问令牌进行身份验证:

  • 使用 GitLab API。
  • 在 14.2 及更高版本,通过 HTTPS 使用 Git 进行身份验证 使用:

    • 任何非空白值作为用户名。
    • 群组访问令牌作为密码。

群组访问令牌类似于项目访问令牌个人访问令牌,除了它们与群组相关联,而不是与项目或用户相关联。

在私有化部署版实例中,如果设置了限制,群组访问令牌的最大生命周期限制与个人访问令牌相同。

caution 在 15.4 版本中已弃用创建不过期的群组访问令牌的功能,并计划在 16.0 版本中删除。删除此功能后,计划为不过期的现有群组访问令牌添加到期时间。

以下情况,您可以使用群组访问令牌:

  • 您在 SaaS 上具有专业版或旗舰版许可证。使用试用许可证,群组访问令牌不可用。
  • 在私有化部署实例上,具有任何级别的许可证。如果您有基础版:

您不能使用群组访问令牌来创建其它访问群组、项目或个人令牌。

群组访问令牌继承为个人访问令牌配置的默认前缀设置

note 群组访问令牌不适用 FIPS,并且在启用 FIPS 模式时,禁止创建和使用。

使用 UI 创建群组访问令牌

  • 引入于 14.7 版本
  • 从 15.3 版本开始,默认到期时间为 30 天,并且在 UI 中填充默认的访客角色。
  • 创建不会过期的群组访问令牌的功能删除于 16.0 版本。
caution 项目访问令牌被视为内部用户。如果内部用户创建项目访问令牌,则该令牌能够访问可见性级别设置为内部的所有项目。

创建群组访问令牌:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的群组。
  2. 在左侧边栏中,选择 设置 > 访问令牌
  3. 输入名称。任何有权查看该群组的用户都可以看到令牌名称。
  4. 输入令牌的到期日期:
    • 令牌在该日期的午夜 UTC 到期。
    • 如果您不输入到期日期,到期日期将自动设置为比当前日期晚 365 天。
    • 默认情况下,此日期最多可以比当前日期晚 365 天。
    • 实例范围的最长生命周期设置可以限制私有化部署实例中允许的最长生命周期。
  5. 选择令牌的角色。
  6. 选择所需范围
  7. 选择 创建群组访问令牌

显示群组访问令牌。将群组访问令牌保存在安全的地方。离开或刷新页面后,您将无法再次查看。

使用 Rails 控制台创建群组访问令牌

14.6 及更早版本不支持使用 UI 或 API 创建群组访问令牌。但是,管理员可以使用以下解决方法:

  1. Rails 控制台中运行以下命令:

    # Set the GitLab administration user to use. If user ID 1 is not available or is not an administrator, use 'admin = User.admins.first' instead to select an administrator.
    admin = User.find(1)
    
    # Set the group group you want to create a token for. For example, group with ID 109.
    group = Group.find(109)
    
    # Create the group bot user. For further group access tokens, the username should be group_#{group.id}_bot#{bot_count}. For example, group_109_bot2 and email address group_109_bot2@example.com.
    bot = Users::CreateService.new(admin, { name: 'group_token', username: "group_#{group.id}_bot", email: "group_#{group.id}_bot@example.com", user_type: :project_bot }).execute
    
    # Confirm the group bot.
    bot.confirm
    
    # Add the bot to the group with the required role.
    group.add_member(bot, :maintainer)
    
    # Give the bot a personal access token.
    token = bot.personal_access_tokens.create(scopes:[:api, :write_repository], name: 'group_token')
    
    # Get the token value.
    gtoken = token.token
    
  2. 测试生成的群组访问令牌是否有效:

    1. PRIVATE-TOKEN header 中的群组访问令牌与 GitLab REST API 一起使用。例如:

      • 在群组中创建史诗。
      • 在群组的一个项目中创建项目流水线。
      • 在群组的一个项目中创建议题。
    2. 使用群组令牌通过 HTTPS 克隆群组的项目

使用 UI 撤销群组访问令牌

引入于 14.7 版本

撤销群组访问令牌:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的群组。
  2. 在左侧边栏中,选择 设置 > 访问令牌
  3. 在要撤销的群组访问令牌旁边,选择 撤销

使用 Rails 控制台撤销群组访问令牌

14.6 及更早版本不支持使用 UI 或 API 撤销群组访问令牌。但是,管理员可以使用以下解决方法:

Rails 控制台中运行以下命令:

bot = User.find_by(username: 'group_109_bot') # the owner of the token you want to revoke
token = bot.personal_access_tokens.last # the token you want to revoke
token.revoke!

群组访问令牌的范围

范围确定您在使用群组访问令牌进行身份验证时可以执行的操作。

范围 描述
api 授予对群组和相关项目 API 的完整读写访问权限,包括软件包库。
read_api 授予对群组和相关项目 API 的读访问权限,包括软件包库。
read_registry 如果群组中的任何项目是私有的并且需要授权,则允许对 Container Registry 镜像进行读取访问(拉取)。
write_registry 允许对 Container Registry 的写入访问(推送)。
read_repository 允许对群组内的所有仓库进行读取访问(拉取)。
write_repository 允许对群组内的所有仓库进行读写访问(拉取和推送)。

启用或禁用群组访问令牌创建

为顶级群组中的所有子组启用或禁用群组访问令牌创建:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的群组。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 展开 权限和群组功能
  4. 权限 下,打开或关闭 用户可以在该群组中创建项目访问令牌和群组访问令牌

即使禁用创建,您仍然可以使用和撤销现有的群组访问令牌。

群组的机器人用户

每次创建组访问令牌时,都会创建一个机器人用户并将其添加到群组中。这些 bot 用户类似于项目机器人用户,不同之处在于它们被添加到群组而不是项目中。群组的机器人用户:

  • 不计入许可证席位。
  • 可以拥有一个群组的最大所有者角色。
  • 将第一个访问令牌的用户名设置为 group_{group_id}_bot。例如,group_123_bot
  • 将电子邮件设置为 group{group_id}_bot@noreply.{Gitlab.config.gitlab.host}。例如,group123_bot@noreply.example.com