极狐 GitLab

项目访问令牌

版本历史
  • 在极狐GitLab 16.1 中,为试用订阅引入。

极狐GitLab 项目访问令牌类似于密码,除了您可以限制对资源的访问,选择有限的角色,并提供到期日期。

实际访问项目是由[角色和权限](../../permissions.md)与[令牌范围](#scopes-for-a-project-access-token)的组合控制的。

使用项目访问令牌进行身份验证:

  1. 使用 极狐GitLab API
  2. 使用 Git 时,在使用 HTTP 基本身份验证时,使用:
    • 任意非空值作为用户名。
    • 项目访问令牌作为密码。

极狐GitLab 项目访问令牌类似于群组访问令牌个人访问令牌,但仅限于关联的项目。您不能使用项目访问令牌访问属于其他项目的资源。

在极狐GitLab 私有化部署实例中,如果设置了限制,项目访问令牌受与个人访问令牌相同的最长寿命限制

您可以在以下情况下使用项目访问令牌:

  1. 在极狐GitLab SaaS 上:如果您拥有专业版或旗舰版许可证层级,则仅可使用一个带有试用许可证的项目访问令牌。
  2. 在极狐GitLab 私有化部署实例中:拥有任何许可证层级。如果您拥有基础版,请考虑限制创建项目访问令牌以降低潜在的滥用。

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

项目访问令牌继承了为个人访问令牌配置的默认前缀设置

创建项目访问令牌#

版本历史
  • 在极狐GitLab 15.1 中引入,项目所有者可以为项目访问令牌选择所有者角色。
  • 在极狐GitLab 15.3 中引入,界面默认填充 30 天的到期时间和 Guest 角色。
  • 在极狐GitLab 16.0 中,移除了创建无到期时间项目访问令牌的能力。
  • 在极狐GitLab 17.6 中,最大允许寿命限制扩展至 400 天,通过名为 buffered_token_expiration_limit功能标志控制,默认关闭。
  • 在极狐GitLab 17.7 中,引入了项目访问令牌描述。
扩展最大可允许寿命限制的可用性由功能标志控制。有关更多信息,请参阅历史记录。
在极狐GitLab 15.4 中,不带到期日期的项目访问令牌的创建功能被弃用,并在极狐GitLab 16.0 中移除。

要创建项目访问令牌:

  1. 在左侧边栏上,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > 访问令牌
  3. 选择 添加新令牌
  4. 令牌名称 中,输入一个名称。具有查看项目权限的任何用户都可以看到令牌名称。
  5. 可选。在 令牌描述 中,为令牌输入描述。
  6. 到期日期 中,为令牌输入到期日期。
    • 令牌将在该日期的午夜 UTC 过期。到期日期为 2024-01-01 的令牌将在 2024-01-01 的 00:00:00 UTC 过期。
    • 如果您没有输入到期日期,则到期日期会自动设置为当前日期的 30 天后。
    • 默认情况下,此日期最多可以比当前日期晚 365 天。在极狐GitLab 17.6 或更高版本中,您可以将此限制扩展到 400 天。
    • 在极狐GitLab 私有化部署实例中,实例级最大生命周期设置可以限制最大允许生命周期。
  7. 为令牌选择一个角色。
  8. 选择所需的范围
  9. 选择 创建项目访问令牌

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

项目访问令牌被视为[内部用户](../../../administration/internal_users.md)。如果内部用户创建了项目访问令牌,则该令牌能够访问所有可见性级别设置为[内部](../../public_access.md)的项目。

撤销或旋转项目访问令牌#

版本历史
  • 在极狐GitLab 17.3 中,引入了查看已过期和已撤销令牌的能力,并通过名为 retain_resource_access_token_user_after_revoke功能标志进行控制,默认关闭。
  • 在极狐GitLab 17.9 中,查看已过期和已撤销令牌的能力被限制为30天,并 GA,同时移除了 retain_resource_access_token_user_after_revoke 功能标志。

在极狐GitLab 17.9 及更高版本中,您可以在访问令牌页面上查看活跃和非活跃的项目访问令牌。

非活跃项目访问令牌表显示撤销和过期的令牌,直到它们变为非活跃状态后的 30 天。

属于活跃令牌系列的令牌在系列中最新活跃令牌过期或撤销后的 30 天内显示。

要撤销或旋转项目访问令牌:

  1. 在左侧边栏上,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > 访问令牌
  3. 对于相关令牌,选择 撤销 () 或 旋转 ()。
  4. 在确认对话框中,选择 撤销旋转

项目访问令牌的范围#

版本历史
  • k8s_proxy 引入于极狐GitLab 16.4,使用名为 k8s_proxy_pat功能标志。默认启用。
  • k8s_proxy_pat 功能标志在极狐GitLab 16.5 中被移除。
  • self_rotate 功能标志在极狐GitLab 17.9 中被移除。默认启用。

范围决定了您在使用项目访问令牌进行身份验证时可以执行的操作。

请参阅[创建项目访问令牌](#create-a-project-access-token)中关于内部项目的警告。
范围描述
api授予对受限项目 API 的完整读写访问权限,包括容器注册表依赖代理软件包注册表
read_api授予对受限项目 API 的读取访问权限,包括软件包注册表
read_registry授予对容器注册表图像的读取访问权限(拉取),如果项目是私有的且需要授权。
write_registry授予对容器注册表的写入访问权限(推送)。您需要同时拥有读取和写入权限才能推送图像。
read_repository授予对存储库的读取访问权限(拉取)。
write_repository授予对存储库的读写访问权限(拉取和推送)。
create_runner授予在项目中创建 runner 的权限。
manage_runner授予在项目中管理 runner 的权限。
k8s_proxy授予在项目中使用 Kubernetes 代理执行 Kubernetes API 调用的权限。
self_rotate授予使用个人访问令牌 API旋转此令牌的权限。不允许旋转其他令牌。

限制项目访问令牌的创建#

为了限制潜在的滥用,您可以限制用户为群组层次结构创建令牌。此设置只能为顶级群组配置,并适用于所有下游项目和子群组。任何现有的项目访问令牌在其到期日期之前或手动撤销之前仍然有效。

  1. 在左侧边栏上,选择 搜索或转到 并找到您的群组。 此群组必须位于顶级。
  2. 选择 设置 > 常规
  3. 展开 权限和群组功能
  4. 权限 中,清除 用户可以在此群组中创建项目访问令牌和群组访问令牌 复选框。

访问令牌过期#

您的现有项目访问令牌是否自动应用到期日期取决于您拥有的极狐GitLab 产品以及您升级到极狐GitLab 16.0 或更高版本的时间:

  • 在 JihuLab.com 上,在 16.0 里程碑期间,现有的没有到期日期的项目访问令牌被自动赋予比当前日期晚 365 天的到期日期。
  • 在极狐GitLab 私有化部署中,如果您从极狐GitLab 15.11 或更早版本升级到极狐GitLab 16.0 或更高版本:
    • 在 2024 年 7 月 23 日或之前,现有的没有到期日期的项目访问令牌被自动赋予比当前日期晚 365 天的到期日期。 此更改是一个重大更改。
    • 在 2024 年 7 月 24 日或之后,现有的没有到期日期的项目访问令牌没有设置到期日期。

在极狐GitLab 私有化部署中,如果您新安装以下版本之一,您的现有项目访问令牌不会自动应用到期日期:

  • 16.0.9
  • 16.1.7
  • 16.2.10
  • 16.3.8
  • 16.4.6
  • 16.5.9
  • 16.6.9
  • 16.7.9
  • 16.8.9
  • 16.9.10
  • 16.10.9
  • 16.11.7
  • 17.0.5
  • 17.1.3
  • 17.2.1

项目访问令牌到期邮件#

版本历史
  • 60 和 30 天的到期通知在极狐GitLab 17.6 中引入,使用名为 expiring_pats_30d_60d_notifications功能标志。默认禁用。
  • 60 和 30 天通知在极狐GitLab 17.7 中 GA。特性标志 expiring_pats_30d_60d_notifications 已移除。
  • 在极狐GitLab 17.7 中引入的通知到继承的群组成员,带有名为 pat_expiry_inherited_members_notification 的标志。默认情况下禁用。
  • 在极狐GitLab 17.10 中默认启用特性标志 pat_expiry_inherited_members_notification
  • 在极狐GitLab 17.11 中移除特性标志 pat_expiry_inherited_members_notification

极狐GitLab 每天在凌晨 1:00 UTC 运行检查,以识别即将到期的项目访问令牌。拥有至少维护者角色的项目成员在这些令牌在一定天数后到期时会收到电子邮件通知。具体天数因极狐GitLab 版本而异:

  • 在极狐GitLab 17.6 及更高版本中,当检查识别出其项目访问令牌将在未来 60 天内到期时,项目维护者和所有者会收到电子邮件通知。当检查识别出其项目访问令牌将在未来 30 天内到期时,会发送另一封电子邮件。
  • 当检查识别出其项目访问令牌将在未来七天到期时,项目维护者和所有者会收到电子邮件通知。
  • 在极狐GitLab 17.7 及更高版本中,由于项目属于群组而继承了所有者或维护者角色的项目成员也可以收到通知电子邮件。您可以通过更改以下设置来启用此功能:

您的过期访问令牌将在令牌过期后的 30 天内列在非活跃项目访问令牌表中。

项目的机器人用户#

版本历史
  • 在极狐GitLab 17.2 中进行了变更,,使用名为 retain_resource_access_token_user_after_revoke功能标志。默认禁用。当启用时,新机器人用户成为没有到期日期的成员,并且当令牌稍后被撤销或过期时,机器人用户会保留 30 天。
  • 在极狐GitLab 17.9 中,非活动机器人用户保留功能 GA。特性标志 retain_resource_access_token_user_after_revoke 已移除。

项目的机器人用户是极狐GitLab 创建的非计费用户。每次您创建项目访问令牌时,都会创建一个机器人用户并添加到项目中。此用户不是计费用户,因此不计入许可证限制。

项目的机器人用户具有与项目访问令牌的选定角色和范围相对应的权限

  • 名称设置为令牌的名称。
  • 用户名设置为 project_{project_id}_bot_{random_string}。例如,project_123_bot_4ffca233d8298ea1
  • 电子邮件设置为 project_{project_id}_bot_{random_string}@noreply.{Gitlab.config.gitlab.host}。例如,project_123_bot_4ffca233d8298ea1@noreply.example.com

使用项目访问令牌进行的 API 调用与相应的机器人用户相关联。

项目的机器人用户:

  • 包含在项目的成员列表中,但无法修改。
  • 不能添加到任何其他项目中。
  • 可以在项目中拥有最大角色为所有者。有关更多信息,请参阅创建项目访问令牌

当项目访问令牌被撤销时:

  • 机器人用户保留 30 天。
  • 30 天后,机器人用户被删除。所有记录都被移到系统范围的用户,用户名为幽灵用户

另请参阅群组的机器人用户

令牌可用性#

只有在付费订阅中才可使用多个项目访问令牌。在专业版和旗舰版试用订阅中,只包含一个项目访问令牌。