You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP未过期令牌排查:离职用户令牌滥用及长有效期令牌检索

GCP令牌排查脚本化解决方案

1. 查找特定暂停用户名下所有已签发令牌

1.1 查询用户OAuth2刷新令牌

使用gcloud identity users list-refresh-tokens获取目标用户的所有刷新令牌,包含关键时间信息:

gcloud identity users list-refresh-tokens USER_EMAIL \
  --format="table(id, createdTime, expiryTime, clientId)"

替换USER_EMAIL为离职用户邮箱,输出会展示令牌ID、创建时间、过期时间及关联客户端ID,可快速识别长期有效令牌。

1.2 查询用户关联的服务账号密钥

先定位该用户作为所有者的服务账号,再逐个列出密钥:

# 获取用户拥有的服务账号列表
SERVICE_ACCOUNTS=$(gcloud iam service-accounts list \
  --filter="owner.email=USER_EMAIL" \
  --format="value(email)")

# 遍历输出每个服务账号的密钥
for SA in $SERVICE_ACCOUNTS; do
  echo "=== 服务账号: $SA ==="
  gcloud iam service-accounts keys list \
    --iam-account=$SA \
    --format="table(keyId, createdTime, expiryTime, keyType)"
done

替换USER_EMAIL后,脚本会输出该用户关联服务账号的所有密钥,其中expiryTime为空的即为永久有效密钥。

2. 检索全平台长有效期令牌

以下以有效期超过90天或永久有效为长有效期判定标准,可根据需求调整时间阈值。

2.1 全平台服务账号长有效期密钥

# 过滤永久有效或有效期超90天的服务账号密钥
gcloud iam service-accounts keys list \
  --filter="expiryTime>=$(date -d '+90 days' +%Y-%m-%dT%H:%M:%SZ) OR expiryTime:''" \
  --format="table(iamAccount, keyId, createdTime, expiryTime, keyType)"

expiryTime:''匹配永久有效密钥,date -d '+90 days'生成90天后的时间戳,精准过滤长有效期密钥。

2.2 全平台用户长有效期OAuth2刷新令牌

遍历所有用户,筛选过期时间超90天的刷新令牌:

# 获取所有用户邮箱
USERS=$(gcloud identity users list --format="value(primaryEmail)")

# 逐个用户查询并过滤
for USER in $USERS; do
  echo "=== 用户: $USER ==="
  gcloud identity users list-refresh-tokens $USER \
    --filter="expiryTime>=$(date -d '+90 days' +%Y-%m-%dT%H:%M:%SZ)" \
    --format="table(id, createdTime, expiryTime, clientId)"
done

脚本会遍历所有用户,输出符合条件的长有效期刷新令牌,便于批量排查。

内容的提问来源于stack exchange,提问作者gcp-cloud-engineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:20:31