我听说如果服务帐户具有高权限,但访问范围受到限制,并且我们需要以某种方式在没有 OAuth 的情况下对服务进行身份验证,那么我们可以使用我们拥有的密钥重新验证服务帐户(假设我们以某种方式获得)。
那么,重新验证服务帐户是否可以为我们提供云平台范围?
gcloud auth activate-service-account --key-file key.json
我听说如果服务帐户具有高权限,但访问范围受到限制,并且我们需要以某种方式在没有 OAuth 的情况下对服务进行身份验证,那么我们可以使用我们拥有的密钥重新验证服务帐户(假设我们以某种方式获得)。
那么,重新验证服务帐户是否可以为我们提供云平台范围?
gcloud auth activate-service-account --key-file key.json
范围是一种 OAuth 权限机制。在 IAM 开发之前,Google 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 角色设置权限。Scopes 无法为您做到这一点。您可以将两者混合使用,但我不建议这样做。使用范围云平台并通过 IAM 角色控制授权。
范围为“云平台”且没有 IAM 角色的服务账户没有权限。