【问题标题】:Increase access token time in GCP UI or via python API在 GCP UI 或通过 python API 中增加访问令牌时间
【发布时间】:2021-11-11 15:38:54
【问题描述】:

我正在使用在 GCP 上启用的 VM,并希望增加访问令牌时间。默认为 1 小时。

我使用以下命令生成令牌

query = "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token"
response = requests.get(query,headers={"Metadata-Flavor": "Google"}).json()

它以以下格式生成令牌,并显示“expires_in”秒。这是令牌过期的剩余时间。

{'access_token': 'ya29.c.Ko8BEAjJKLI1bUQBiIj0zZz5hw3TlLjyCoXxKtyslbEnyRj9eUWO0sVdW3512f64ynOoi6laZNnPV
O23nELV5fYhk2epYodI1kXXXXXXXXXXX', 'expires_in': 3035, 'token_type': 'Bearer'}

如何通过 UI、配置文件或 Python API 增加 expires_in 参数,以使令牌按定义的时间过期?

创建长寿命令牌的目的是因为我正在使用 TPU 启动 API 从 Google VM 启动 TPU,并且 TPU 已打开,并且我的机器学习模型在 TPU 上进行了训练。 ML 模型相当复杂,在许多情况下需要 10 或 20 多个小时。在 TPU 上的计算结束后,我希望 TPU 自行关闭。然后我收到上面的错误,它说它无法验证令牌,因为它已过期。

任何增加令牌到期时间的示例/方法或其他解决此问题的方法。

【问题讨论】:

  • 快速回答是您不能通过元数据服务器。但是,还有其他可能的解决方案。您的项目是组织的一部分吗?如果是,请参阅@guillaume 的回答。您真的需要长期 OAuth 令牌吗?使用详细信息编辑您的问题。

标签: oauth google-oauth metadata service-accounts google-apis-explorer


【解决方案1】:

AFAIK,元数据服务器无法做到这一点。但是,可以生成短暂的令牌并将访问令牌的生命周期延长至 12 小时。

你可以看看this Service Account Credential API。但是,您需要更新组织政策以延长默认(60 分钟)的生命周期。

【讨论】:

  • 我查看了链接。我使用我的 gcloud 帐户登录并根据角色/iam.serviceAccountTokenCreator 设置服务帐户令牌创建者的角色。它询问名称,我将其定义为项目/-/serviceAccounts/{ACCOUNT_EMAIL_OR_UNIQUEID}。 - 通配符是必需的;用项目 ID 替换它是无效的。这里面的通配符是什么?我将项目名称写为 projec* 但它给出 400 错误。
  • 是的,您需要保留 - 通配符。它是一个全局资源,你可以在云存储中找到类似的东西。
  • 我的项目名称是“项目名称”,我正在给项目*。我的名字变量是 "projects/project*/serviceAccounts/213310257965-compute@developer.gserviceaccount.com" 并传递 { scope": [ "googleapis.com/auth/admin.directory.user" ] } 作为请求参数。我收到 400 错误。我不能找出我犯了什么错误。
  • API 文档指出:` - 通配符是必需的;用项目 ID 替换它是无效的。`不要放你的项目名称,放破折号
猜你喜欢
  • 2011-07-17
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 2017-04-17
相关资源
最近更新 更多