我正在尝试使用服务帐户从GCE实例设置对云存储桶的读/写访问权限,但不获取权限。我做了以下事情:
- 创建了服务帐户,假设是'my-sa'
- 创建了一个水桶,比方说'my-bucket'
- 在我的项目的IAM控制台中,将角色“云存储管理员”分配给服务帐户
- 通过控制台创建一个新的GCE实例,分配给服务帐户'my-sa'。然后,访问范围自动设置为cloud-platform
- 使用gcloud compute ssh作为我的用户(项目所有者)
连接到实例
- 运行gsutil ls gs:// my-bucket
预期行为:获取存储桶中的项目列表
观察到的行为:
gsutil需要大约5秒的时间来思考,然后给出:
AccessDeniedException:403 my-sa@my-project.iam.gserviceaccount.com没有storage.objects.list访问存储桶my-bucket。
我尝试过的事情:
- 实例上的gcloud auth列表确实显示了服务帐户,并将其显示为活动
- 我为服务帐户添加了更多权限(由项目所有者决定),没有任何区别
- 我也无法使用实例的其他权限。当我向服务帐户提供Compute Engine管理员角色时,我无法从实例运行gcloud计算实例列表
- 我已删除.gsutil目录以确保缓存已清除
- 使用默认的Compute Engine服务帐户,我可以列出存储桶,但不能写入(按预期方式)。当我从控制台添加云存储读/写访问范围时,我也可以编写
我真的不知道如何再调试这个,所以任何帮助都会得到很多回应