使用 gcloud 重新验证服务帐户时会发生什么?

What happens when re-authenticating the service account with gcloud?

我听说如果服务账户有高权限,但访问范围是受限的,我们需要以某种方式在没有 OAuth 的情况下对服务进行身份验证,那么我们可以使用我们拥有的密钥重新验证服务账户(假设我们以某种方式得到)。

那么,重新验证服务帐户是否可以为我们提供云平台范围?

gcloud auth activate-service-account --key-file key.json

作用域是一种 OAuth 权限机制。 Google 在开发 IAM 之前,Cloud 首先以“Scopes”作为权限方法。

除非您编写自己的授权代码,否则服务帐户不会以您管理的方式使用范围。服务帐户使用 IAM 角色进行权限控制。您可以在编写低级代码时指定范围,但这不是必需的或不推荐的。

Google Compute Engine 最初使用 OAuth 范围来获取权限,现在仍然提供该功能。 Compute Engine 范围限制分配给分配给 Compute Engine 的服务帐户的权限。范围不会向服务帐户添加权限。

对于以下命令

gcloud auth activate-service-account --key-file key.json

如果您在桌面或 Compute Engine 中 运行 此命令,您是在告诉 CLI 和使用 SDK 开发的工具使用指定​​的服务帐户进行授权。 “云平台”的范围在这里无关紧要。分配给服务账户的 IAM 角色决定权限。此命令不使用您分配给实例的范围。只有位于 Compute Engine 实例元数据中的凭据(原始凭据)继续受到范围的影响。

总结:

作用域是一种遗留的授权机制。 IAM 是首选且必需的身份验证方法,这意味着您必须通过 IAM 角色设置权限。范围不能为你做那件事。您可以将两者混合使用,但我不建议这样做。使用范围云平台并通过 IAM 角色控制授权。

范围为“cloud-platform”且没有 IAM 角色的服务帐户没有权限。