【问题标题】:GCP - Not able to list objects inside Bucket even having devstorage.read_only permission?GCP - 即使拥有 devstorage.read_only 权限也无法列出 Bucket 中的对象?
【发布时间】:2020-11-19 12:41:01
【问题描述】:

我创建了一个 EC2 实例,该实例默认创建具有默认权限的服务帐户。所以当我查看默认权限的时候发现服务账号就是下面所有这些权限。

https://www.googleapis.com/auth/devstorage.read_only
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/monitoring.write
https://www.googleapis.com/auth/servicecontrol
https://www.googleapis.com/auth/service.management.readonly
https://www.googleapis.com/auth/trace.append

现在我尝试使用以下命令列出存储桶内的所有对象:-

gsutil ls gs://mybucketname

发现错误

AccessDeniedException: 403 XXXX@developer.gserviceaccount.com does not have storage.objects.list access to the Google Cloud Storage bucket.

为什么即使我的服务帐户用户拥有devstorage.read_only,我也会收到此错误?

我对 GCP 非常陌生,所以请告诉我。

【问题讨论】:

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


    【解决方案1】:

    请阅读官方文档,了解使用 IAM 角色设置服务帐户访问级别与设置 GCE 实例的访问范围之间的区别:

    Service account permissions

    当您将实例设置为作为服务帐号运行时,您确定 您的 IAM 角色对服务账户的访问级别 授予服务帐户。如果服务帐号没有 IAM 角色, 那么服务帐户不能在其上运行任何 API 方法 实例。

    此外,实例的访问范围决定了默认的 OAuth 通过 gcloud 工具和客户端库发出的请求的范围 在实例上。因此,访问范围可能会进一步扩大 通过 OAuth 进行身份验证时限制对 API 方法的访问。但是,它们不会扩展到其他身份验证协议,例如 gRPC。

    基本上:

    IAM 根据授予的 IAM 角色限制对 API 的访问 到服务帐户。

    访问范围可能会进一步限制 通过 OAuth 进行身份验证时访问 API 方法

    因此,我建议 to add an IAM role 使用您的实例服务帐户的 storage.objects.list 权限(可能是 roles/storage.legacyBucketReader)。

    【讨论】:

    • 是的!得到了清晰的画面。我对角色和 IAM 用户感到困惑。现在,这给出了一个清晰的画面。我从 AWS 搬到了 GCP,所以有点困惑
    • 嗨 @marian.vladoi 你能帮我解决这个问题吗:- stackoverflow.com/questions/65073267/…
    • @user2300940 解决什么? S
    猜你喜欢
    • 2019-05-14
    • 1970-01-01
    • 2017-04-18
    • 2016-10-09
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多