访问令牌 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:analyzesudo 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 任务以批量延长或移除令牌的过期日期:
-
运行该工具:
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:editsudo 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. 延长过期日期 2. 移除过期日期 3. 退出 -
工具会要求您从列出的过期日期中选择一个。例如:
选择一个过期日期(按 ↑/↓/←/→ 方向键移动,按 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格式输入一个日期。 -
输入有效日期后,工具会再次要求您确认:
原过期日期:2024-05-14 新过期日期:2025-05-14 警告:这将更新 1565353 个令牌。您确定吗?(y/N)如果您输入
y,工具将为所有具有所选过期日期的令牌延长过期日期。如果您输入
N,工具将中止更新任务并返回到初始的分析输出。
移除过期日期
要移除所有匹配指定过期日期的令牌的过期日期:
-
选择选项 2,
移除过期日期:您想要做什么? 1. 延长过期日期 ‣ 2. 移除过期日期 3. 退出 -
工具会要求您从表格中选择过期日期。例如:
选择一个过期日期(按 ↑/↓/←/→ 方向键移动,按 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 ‣ --> 中止 -
选择日期后,工具会提示您确认选择:
警告:这将移除在 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