GCP云存储:403-执行`Storage.BucketAccessControls.List`请求时被禁止

时间:2017-05-15 08:19:44

标签: google-cloud-platform google-cloud-storage

我正在尝试使用Java客户端列出Google云存储分区的ACL。我正在创建这样的客户端:

  // create client
  GoogleCredential credential = GoogleCredential.fromStream(jsonCredentialsString));

  if(credential.createScopedRequired()) {
    credential = credential.createScoped(StorageScopes.all());
  }

  HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
  JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

  return new Storage.Builder(httpTransport, jsonFactory, credential)
      .setApplicationName("app")
      .build();

现在使用此客户端我 200 OK 执行Buckets.List请求,但在运行Storage.BucketAccessControls.List请求时出现 403 错误。< / p>

我正在使用服务帐户凭据。这是我得到的错误

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Forbidden",
    "reason" : "forbidden"
  } ],
  "message" : "Forbidden"
}

在这种情况下验证请求的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

你的代码很好。造成403的原因是您的服务帐户的权限。看看你如何authenticate for Storage使用IAM。 您也可以在资源级别(逐桶)执行此操作,以允许更细粒度的访问。

基本上,要允许对Storage进行任何API调用,您可以为其指定Storage Admin角色。最简单的方法是导航到Console-IAM&amp;管理员。