使用 gcloud auth 的用户凭据更持久?防止过期?

Longer lasting user credentials with gcloud auth? Prevent expiration?

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

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

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

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


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


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

Question: How can one get longer lasting user credentials for use with gcloud?

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

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

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

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

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

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

组织策略约束是:

constraints/iam.allowServiceAccountCredentialLifetimeExtension

Organization policy constraints