Google 云 API 服务授权失败 - 禁止访问

Google Cloud API Service authorisation failure - forbidden access

我目前在尝试通过 java 客户端访问 google 云服务时收到以下错误:

Caused by: 
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 
Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "xyz.iam.gserviceaccount.com does not have 
    storage.buckets.list access to project 123456.",
    "reason" : "forbidden"
  } ],
  "message" : "xyz.iam.gserviceaccount.com does not have 
storage.buckets.list access to project 123456."
}

到目前为止我有:

如何为给定列表或api为给定项目提供对服务帐户的访问权限?

如果正在使用的存储桶在您的项目中,您可以随时尝试 运行 gsutil ch command 作为您的用户:

gsutil acl ch -u your-service-account@example.com:WRITE gs://your-bucket

该消息非常具体,没有留下太多疑问,但如果有问题,请分享当前分配给您的服务帐户的角色:

"xyz.iam.gserviceaccount.com does not have storage.buckets.list access to project 123456."

可能是您在 https://console.cloud.google.com/iam-admin/iam/project 中分配给服务帐户的角色没有 storage.buckets.list 访问权限。

要查看特定角色是否具有 storage.buckets.list 访问权限,请在 https://console.cloud.google.com/iam-admin/roles 中搜索 访问权限。这将输出具有此访问权限的角色列表,您可以查看您的服务帐户是否具有其中之一。

也有可能是你设置的项目不存在。例如,通过 运行 gcloud cli gcloud config set project personal 中的以下内容,而项目的实际 ID 是 personal-267000,如下所示

gcloud projects list | grep personal personal-267000 personal 203784673875

因此,一旦您正确设置,gcloud config set project personal-267000,您的命令应该可以很好地运行。最简单的测试方法是触发以下 cli 命令 gsutil ls。不要忘记确保您使用的也是您想要的帐户:gcloud config configurations list

您需要为服务帐户提供“存储管理员”访问权限。这可以在 https://console.cloud.google.com/iam-admin/iam?project={your-project}

中找到

单击“继承”下的铅笔以编辑权限。