服务帐户没有对Google Cloud Storage的storage.objects.get访问权限

时间:2018-07-18 20:38:46

标签: python google-cloud-platform google-cloud-storage service-accounts

我已经在Google Cloud Console中创建了一个服务帐户,并选择了角色Storage / Storage Admin(即,完全控制GCS资源)。

gcloud projects get-iam-policy my_project似乎indicate实际已选择角色:

- members:
  - serviceAccount:my_sa@my_project.iam.gserviceaccount.com
  role: roles/storage.admin
- members:
  - serviceAccount:my_sa@my_project.iam.gserviceaccount.com
  role: roles/storage.objectAdmin
- members:
  - serviceAccount:my_sa@my_project.iam.gserviceaccount.com
  role: roles/storage.objectCreator

documentation清楚地表明角色roles/storage.admin包含权限storage.objects.*(以及storage.buckets.*)。

但是当我尝试将该服务帐户与适用于Python的Google Cloud Storage客户端库结合使用时,会收到以下错误消息:

  

my_sa@my_project.iam.gserviceaccount.com没有   storage.objects。获取对my_project / my_bucket的访问权限。

那么为什么所选角色在这种情况下不够?

3 个答案:

答案 0 :(得分:3)

转到您的存储桶的权限部分并为您的存储桶打开添加权限部分。例如,gcloud 告诉您的服务不足是;

1234567890-compute@developer.gserviceaccount.com 

将此服务添加为用户,然后赋予这些角色;

  • 云存储 - 存储管理员
  • 云存储 - 存储对象管理员
  • 云存储 - 存储对象创建器

那么您应该有足够的权限对​​您的存储桶进行更改。

答案 1 :(得分:1)

问题显然是服务帐户与太多角色相关联,这可能是先前配置尝试的结果。

这些步骤解决了该问题:

  • 删除了my_sa / IAM & Admin下有问题的服务帐户(成员)IAM的所有(三个)角色
  • my_sa / IAM & Admin下删除了Service accounts
  • 重新创建my_sa(同样是角色Storage / Storage Admin

效果如下:

  • my_saStorage Admin / IAM & Admin下出现一个角色(IAM
  • my_saStorage / Browser / my_bucket / Edit bucket permissions
  • 下显示为成员

答案 2 :(得分:0)

值得注意的是,如果您刚刚分配了权限,则需要等待一分钟或一段时间才能使权限正常工作。至少那是我之后发生的事情:

gcloud projects add-iam-policy-binding xxx --member
"serviceAccount:xxx@xxx.iam.gserviceaccount.com" --role "roles/storage.objectViewer"