【问题标题】:gcloud installed on gce instance with service level accounts permission issuesgcloud 安装在具有服务级别帐户权限问题的 gce 实例上
【发布时间】:2014-03-31 16:21:08
【问题描述】:

我启动了一个启用了服务级别帐户的实例。例如它有 storage-rw 集。我确认该实例具有这些。现在,每当我从实例中运行 gsutil ls gs://my_bucket 时,我都会收到错误:失败:未授权客户端。

gcloud 授权列表返回

Credentialed accounts:
 - xxxx@developer.gserviceaccount.com (active)

我需要从实例中使用 gcloud sdk,因为我需要 gcutil 和 gsutil 以外的更多组件。

所以我的问题是如何授权 gcloud 使用 xxxx@developer.gserviceaccount.com 帐户,因此仅在实例上指定的权限,而不是对所有内容具有完全权限的个人用户帐户?

【问题讨论】:

  • 会不会是存储桶级别的权限问题?仅仅因为您的服务帐户对存储具有 rw 访问权限,并不一定会授予它存储桶访问权限。您可以从您的实例创建存储桶吗?
  • 您的项目的结算状态是否有效?
  • @user3385351 - 不,我什至无法创建存储桶。同样的错误未经授权的客户端。
  • @jterrace 是的,它已启用。

标签: google-cloud-storage google-compute-engine google-cloud-platform gcloud


【解决方案1】:

gcloud CLI 绝对可以处理 Google Compute Engine 服务帐户。如果您在执行$ gcloud auth list 时将其视为“(活动)”,那就足够了。

这里可能有两个问题:

  1. 您使用了错误的 gsutil。

    当您安装 Google Cloud SDK 时,它将创建 google-cloud-sdk/bin/gsutil,这就是您要运行的那个。请$ which gsutil 仔细检查。如果你运行的是google-cloud-sdk/platform/gsutil/gsutil,那就错了,它不会知道 gcloud 能告诉它的任何事情。

  2. 该帐户无权访问您尝试检查的存储桶。您必须要求存储桶的所有者将其添加到拥有该存储桶的项目中。

来源:Google Cloud SDK 工程师

【讨论】:

  • gsutil 返回 /home/web/google-cloud-sdk/bin/gsutil 的 John。所以看起来不错。
  • John 1) 其中 gsutil 返回 /home/web/google-cloud-sdk/bin/gsutil。所以我认为这看起来不错。 2)如果我启动一个实例而不安装 gcloud sdk,我可以在安装了默认 gsutil 并将服务权限设置为读写的情况下读取存储桶。安装了 cloud sdk 后,我无法创建存储桶或读取任何存储桶。我也无法使用 gcloud sql 实例列表列出 cloudsql 实例。我验证我可以从该实例访问云 sql,并且在 cloudsql 服务器上允许其外部 IP。实例权限已启用 cloudsql=。存储 = 读写。谢谢。
【解决方案2】:

请参阅此文档中的“向 Google Compute Engine 进行身份验证”部分:https://developers.google.com/compute/docs/gcutil/

【讨论】:

  • 不,那是使用个人帐户进行身份验证。我需要 gcloud 及其所有组件来使用 xxxx@developer.gserviceaccount.com 而不是拥有太多权限的个人帐户
  • 提供的链接没有“向 Google Compute Engine 进行身份验证”部分,这就是为什么建议您在答案中包含详细信息而不仅仅是参考。
猜你喜欢
  • 2018-11-16
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 2020-04-02
  • 1970-01-01
  • 2020-04-11
  • 2018-10-04
相关资源
最近更新 更多