authentication - 使用 gcloud auth 的用户凭据更持久?防止过期?
问题描述
我们使用gcloud
CLI 运行临时作业并手动部署云功能。
以前,我们使用来自一个共享服务帐户的多个密钥。这显然是不好的做法。
gcloud auth application-default login
让我们每个人都使用我们各自的用户凭据,但它们会在大约一个小时后过期!
我检查了https://admin.google.com/ac/security/reauth/admin-tools并且设置显示never require reauthentication
问题:如何获得更持久的用户凭据以用于gcloud
?
我能想到的唯一其他选择是为每个开发人员创建唯一的服务帐户。
解决方案
问题:如何获得更持久的用户凭据以用于 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
推荐阅读
- function - Octave 不断给出函数的结果,尽管没有被问到
- javascript - 如何使用 JavaScript 保持分数格式?
- javascript - 如何解决此“预期在箭头函数中返回值”错误
- database - 如何为这个程序创建一个好的 ER 模型(关于我的 ER 模型的问题)
- c++ - 元音的字符串操作未按预期工作
- javascript - 如何修改非直系子女的道具
- ssl - 在 CMD 中创建 SSL 证书,弹出错误
- android - 如何将 android.support.v4.app.Fragment 与 Activity 类一起使用?
- android - 如何解决 Admob 错误无法加载广告 0
- javascript - 在 React 无状态组件中存储不可观察数据的最佳方式(使用 Hooks)