Help us learn about your current experience with the documentation. Take the survey.

访问令牌 Rake 任务

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed

分析令牌过期日期

在 GitLab 16.0 中,一次后台迁移为所有未设置过期时间的个人、项目和群组访问令牌添加了过期日期,设为令牌创建后的一年。

要确定哪些令牌可能受到了此次迁移的影响,您可以运行一个 Rake 任务,该任务会分析所有访问令牌,并显示最常见的十个过期日期:

gitlab-rake gitlab:tokens:analyze
# 查找 toolbox pod
kubectl --namespace <namespace> get pods -lapp=toolbox
kubectl exec -it <toolbox-pod-name> -- sh -c 'cd /srv/gitlab && bin/rake gitlab:tokens:analyze'
sudo docker exec -it <container_name> /bin/bash
gitlab-rake gitlab:tokens:analyze
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:tokens:analyze

此任务会分析所有访问令牌,并按过期日期对它们进行分组。左列显示过期日期,右列显示具有该过期日期的令牌数量。示例输出:

======= 个人/项目/群组访问令牌过期迁移 =======
开始于:2023-06-15 10:20:35 +0000
结束于:2023-06-15 10:23:01 +0000
===== 十大个人/项目/群组访问令牌过期日期 =====
| 过期日期       | 数量    |
|----------------|---------|
| 2024-06-15      | 1565353 |
| 2017-12-31      | 2508  |
| 2018-01-01      | 1008  |
| 2016-12-31      | 833   |
| 2017-08-31      | 705   |
| 2017-06-30      | 596   |
| 2018-12-31      | 548   |
| 2017-05-31      | 523   |
| 2017-09-30      | 520   |
| 2017-07-31      | 494   |
========================================================================

在此示例中,您可以看到超过 150 万个访问令牌的过期日期为 2024-06-15,这是在 2023-06-15 运行迁移后的一年。这表明这些令牌中的大部分是由迁移分配的。但是,无法确定是否有其他令牌是手动创建并设置了相同的日期。

批量更新过期日期

先决条件:

您必须:

  • 是管理员。
  • 拥有一个交互式终端。

运行以下 Rake 任务以批量延长或移除令牌的过期日期:

  1. 运行该工具:

    gitlab-rake gitlab:tokens:edit
    # 查找 toolbox pod
    kubectl --namespace <namespace> get pods -lapp=toolbox
    kubectl exec -it <toolbox-pod-name> -- sh -c 'cd /srv/gitlab && bin/rake gitlab:tokens:edit'
    sudo docker exec -it <container_name> /bin/bash
    gitlab-rake gitlab:tokens:edit
    sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:tokens:edit

    工具启动后,它会显示分析步骤的输出,以及一个关于修改过期日期的额外提示:

    ======= 个人/项目/群组访问令牌过期迁移 =======
    开始于:2023-06-15 10:20:35 +0000
    结束于:2023-06-15 10:23:01 +0000
    ===== 十大个人/项目/群组访问令牌过期日期 =====
    | 过期日期       | 数量    |
    |----------------|---------|
    | 2024-05-14      | 1565353 |
    | 2017-12-31      | 2508  |
    | 2018-01-01      | 1008  |
    | 2016-12-31      | 833   |
    | 2017-08-31      | 705   |
    | 2017-06-30      | 596   |
    | 2018-12-31      | 548   |
    | 2017-05-31      | 523   |
    | 2017-09-30      | 520   |
    | 2017-07-31      | 494   |
    ========================================================================
    您想要做什么?(按 ↑/↓ 方向键或数字 1-3 移动,按 Enter 选择)
    ‣ 1. 延长过期日期
      2. 移除过期日期
      3. 退出

延长过期日期

要延长所有匹配指定过期日期的令牌的过期日期:

  1. 选择选项 1,延长过期日期

    您想要做什么?
    ‣ 1. 延长过期日期
      2. 移除过期日期
      3. 退出
  2. 工具会要求您从列出的过期日期中选择一个。例如:

    选择一个过期日期(按 ↑/↓/←/→ 方向键移动,按 Enter 选择)
    ‣ 2024-05-14
      2017-12-31
      2018-01-01
      2016-12-31
      2017-08-31
      2017-06-30

    使用键盘上的方向键选择一个日期。要中止,请一直向下滚动并选择 --> 中止。按 Enter 确认您的选择:

    选择一个过期日期
      2017-06-30
      2018-12-31
      2017-05-31
      2017-09-30
      2017-07-31
    ‣ --> 中止

    如果您选择了一个日期,工具会提示您输入一个新的过期日期:

    您希望新的过期日期是什么?(2025-05-14) 2024-05-14

    默认值是所选日期的一年之后。按 Enter 使用默认值,或手动以 YYYY-MM-DD 格式输入一个日期。

  3. 输入有效日期后,工具会再次要求您确认:

    原过期日期:2024-05-14
    新过期日期:2025-05-14
    警告:这将更新 1565353 个令牌。您确定吗?(y/N)

    如果您输入 y,工具将为所有具有所选过期日期的令牌延长过期日期。

    如果您输入 N,工具将中止更新任务并返回到初始的分析输出。

移除过期日期

要移除所有匹配指定过期日期的令牌的过期日期:

  1. 选择选项 2,移除过期日期

    您想要做什么?
      1. 延长过期日期
    ‣ 2. 移除过期日期
      3. 退出
  2. 工具会要求您从表格中选择过期日期。例如:

    选择一个过期日期(按 ↑/↓/←/→ 方向键移动,按 Enter 选择)
    ‣ 2024-05-14
      2017-12-31
      2018-01-01
      2016-12-31
      2017-08-31
      2017-06-30

    使用键盘上的方向键选择一个日期。要中止,请一直向下滚动并选择 --> 中止。按 Enter 确认您的选择:

    选择一个过期日期
      2017-06-30
      2018-12-31
      2017-05-31
      2017-09-30
      2017-07-31
    ‣ --> 中止
  3. 选择日期后,工具会提示您确认选择:

    警告:这将移除在 2024-05-14 过期的令牌的过期设置。
    这将影响 1565353 个令牌。您确定吗?(y/N)

    如果您输入 y,工具将为所有具有所选过期日期的令牌移除过期日期。

    如果您输入 N,工具将中止更新任务并返回到第一个菜单。

验证 CI/CD ID 令牌的自定义颁发者 URL 配置

如果您配置了一个非公开的 GitLab 实例,以通过 AWS 中的 OpenID Connect 获取临时凭证,请使用 ci:validate_id_token_configuration Rake 任务来验证令牌配置:

bundle exec rake ci:validate_id_token_configuration