【问题标题】:What happens when re-authenticating the service account with gcloud?使用 gcloud 重新验证服务帐户时会发生什么?
【发布时间】:2021-03-14 03:35:36
【问题描述】:

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

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

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

【问题讨论】:

  • 默认情况下,您拥有 Cloud Platform 范围。你有什么问题?您期望或需要什么?
  • 但是我看到它没有将默认范围设置为云平台范围,它将此范围作为默认范围:- Allow default access 包含默认权限,云平台是:- Allow full access to all Cloud APIs @guillaumeblaquiere
  • 在您的计算机上还是在 Compute Engine 上?
  • 在 Compute Engine 上,哦,您的意思是如果我尝试在安装了 gcloud 的计算机上重新验证我的服务帐户,它将默认采用云平台范围?看,我对 GCP 很陌生,所以是的,我肯定错过了一些东西。
  • 没问题,大家都开始了一天!在您的计算机上,是的,默认情况下您拥有 Cloud Platform 范围。但我建议您永远不要(或仅在特定情况下)服务帐户密钥文件。在您的计算机上,使用gcloud auth login 命令。在计算引擎上,您拥有元数据服务器,可为您提供配置中设置的服务帐户的凭据。注意,默认情况下,在计算引擎上,所有范围都是不允许的!所以,继续吧,你会有一些阻碍点。当您遇到问题时,请回到这里并提出您的问题。一开始是正常的!

标签: google-cloud-platform gcloud google-cloud-sdk google-iam


【解决方案1】:

范围是一种 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 角色的服务帐户没有权限。

【讨论】:

  • 感谢您提供如此详细且内容丰富的回复。它有助于。非常感谢:) 必须接受它。 :)
猜你喜欢
  • 1970-01-01
  • 2019-06-09
  • 2020-08-29
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多