访问令牌 Rake 任务
DETAILS:
Tier: 基础版,专业版,旗舰版
Offering: 私有化部署
- 引入于极狐GitLab 17.2。
分析令牌过期日期
在极狐GitLab 16.0 中,一项后台迁移为所有不失效的个人、项目和组访问令牌设置了一年后过期的日期。
为了识别哪些令牌可能受到了此迁移的影响,您可以运行一个 Rake 任务来分析所有访问令牌,并显示最常见的前十个过期日期:
::Tabs
:::TabTitle Linux 软件包 (Omnibus)
gitlab-rake gitlab:tokens:analyze
:::TabTitle Helm chart (Kubernetes)
# 查找 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'
:::TabTitle Docker
sudo docker exec -it <container_name> /bin/bash
gitlab-rake gitlab:tokens:analyze
:::TabTitle 自编译 (source)
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:tokens:analyze
::EndTabs
这个任务会分析所有的访问令牌,并按过期日期进行分组。左列显示过期日期,右列显示有该过期日期的令牌数量。示例输出:
======= 个人/项目/组访问令牌过期迁移 =======
开始时间: 2023-06-15 10:20:35 +0000
结束时间: 2023-06-15 10:23:01 +0000
===== 前 10 个个人/项目/组访问令牌过期日期 =====
| 过期日期 | 数量 |
|-----------------|-------|
| 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,即迁移运行一年后的日期。这表明大多数这些令牌是由迁移分配的。然而,没有办法确定其他令牌是否是手动创建的具有相同日期。
批量更新过期日期
先决条件:
您必须:
- 是管理员。
- 有一个交互式终端。
运行以下 Rake 任务来批量扩展或移除令牌的过期日期:
- 运行工具:
::Tabs
:::TabTitle Linux 软件包 (Omnibus)
gitlab-rake gitlab:tokens:edit
:::TabTitle Helm chart (Kubernetes)
# 查找 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'
:::TabTitle Docker
sudo docker exec -it <container_name> /bin/bash
gitlab-rake gitlab:tokens:edit
:::TabTitle 自编译 (source)
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:tokens:edit
::EndTabs
工具启动后,它显示了来自分析步骤的输出,外加一个关于修改过期日期的提示:
======= 个人/项目/组访问令牌过期迁移 =======
开始时间: 2023-06-15 10:20:35 +0000
结束时间: 2023-06-15 10:23:01 +0000
===== 前 10 个个人/项目/组访问令牌过期日期 =====
| 过期日期 | 数量 |
|-----------------|-------|
| 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
使用键盘上的箭头键选择一个日期。要中止,请滚动到底部并选择
--> Abort
。按 Enter 确认您的选择:选择一个过期日期 2017-06-30 2018-12-31 2017-05-31 2017-09-30 2017-07-31 ‣ --> Abort
如果您选择了一个日期,工具会提示您输入一个新的过期日期:
您希望新的过期日期是什么?(2025-05-14)2024-05-14
默认情况下是选择日期一年后。按 Enter 使用默认值,或者手动输入
YYYY-MM-DD
格式的日期。 -
输入有效日期后,工具会再次要求确认:
旧过期日期: 2024-05-14 新过期日期: 2025-05-14 WARNING: 这将更新 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
使用键盘上的箭头键选择一个日期。要中止,请滚动到底部并选择
--> Abort
。按 Enter 确认您的选择:选择一个过期日期 2017-06-30 2018-12-31 2017-05-31 2017-09-30 2017-07-31 ‣ --> Abort
-
选择日期后,工具会提示您确认选择:
WARNING: 这将移除过期日期为 2024-05-14 的令牌的过期日期。这将影响 1565353 个令牌。您确定吗?(y/N)
如果您输入
y
,工具会移除所选过期日期的所有令牌的过期日期。如果您输入
N
,工具将中止更新任务并返回到第一个菜单。