从Google存储桶下载对象需要哪些角色

我已经创建了一个服务帐户,并且仅授予其Storage Object Viewer角色。我想使用此服务帐户通过python API从存储桶下载对象。

我已经相应地设置了GOOGLE_APPLICATION_CREDENTIALS环境变量,并且可以在存储桶的权限页面上看到相关的服务帐户。

我使用以下代码尝试下载对象

from google.cloud import storage
storage_client = storage.Client()
bucket = storage_client.get_bucket(BUCKET_NAME)

但是调用get_bucket

时出现以下错误
google.api_core.exceptions.Forbidden: 
403 GET https://storage.googleapis.com/storage/v1/b/samplereadbucket?projection=noAcl: 
sample-service-account@project.iam.gserviceaccount.com does not have storage.buckets.get 
access to samplereadbucket.

我需要设置最少的一组角色才能使服务帐户具有storage.buckets.get权限(如果没有Storage Object Viewer的话)?

luckwjg 回答:从Google存储桶下载对象需要哪些角色

存储对象查看器(roles/storage.objectViewer)仅包含以下权限:

resourcemanager.projects.get
resourcemanager.projects.list
storage.objects.get
storage.objects.list

对于存储桶,您将需要像存储旧版存储桶读取器(roles/storage.legacyBucketReader)这样的角色(或创建一个custom role)。这给您:

storage.buckets.get
storage.objects.list

您始终可以使用云控制台中的IAM & Admin > Roles标签来搜索特定权限,以查看当前哪些角色授予了这些权限。

本文链接:https://www.f2er.com/3108646.html

大家都在问