首页 > 解决方案 > 使用 gcloud auth 的用户凭据更持久?防止过期?

问题描述

我们使用gcloudCLI 运行临时作业并手动部署云功能。

以前,我们使用来自一个共享服务帐户的多个密钥。这显然是不好的做法。

gcloud auth application-default login让我们每个人都使用我们各自的用户凭据,但它们会在大约一个小时后过期!

我检查了https://admin.google.com/ac/security/reauth/admin-tools并且设置显示never require reauthentication


问题:如何获得更持久的用户凭据以用于gcloud


我能想到的唯一其他选择是为每个开发人员创建唯一的服务帐户。

标签: authenticationgoogle-cloud-platformgcloud

解决方案


问题:如何获得更持久的用户凭据以用于 gcloud?

凭证生命周期硬编码为一小时。阅读下文了解详细信息和建议。

CLI 的凭证只能用于 CLI 和代码/API 的短期测试。如果您使用从用户身份创建的令牌,您将在未来遇到由 Google Cloud 强制执行的配额和速率限制问题。

gcloud auth application-default print-access-token等命令从 CLI 中的身份设置发出 OAuth 2.0 访问令牌。这些令牌应被视为仅用于测试的凭据。它们的有效期为 3,600 秒。如果不修改 CLI 的源代码,就无法更改生命周期。

如果您需要长期凭据,您应该使用服务帐户和客户端库。客户端库将自动刷新服务帐户 OAuth 访问令牌。此外,每个开发人员都应该有一个用户身份和一个服务帐户身份。不要在用户之间共享服务帐户。

您可以自己创建令牌并管理这些令牌的刷新。我在我的网站上写过文章,其中包含 Python 和 CLI curl 中的示例的详细信息。

在 Google Cloud 中,OAuth 令牌的有效期为一小时。通过更改 ORG 策略约束,可以创建生命周期长达12 小时的令牌。我不推荐这种约束。

组织政策约束是:

constraints/iam.allowServiceAccountCredentialLifetimeExtension

组织政策约束


推荐阅读