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

Inc*_*tic 2 python google-cloud-storage google-cloud-platform google-cloud-python google-cloud-iam

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

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

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

from google.cloud import storage
storage_client = storage.Client()
bucket = storage_client.get_bucket(BUCKET_NAME)
Run Code Online (Sandbox Code Playgroud)

但调用时出现以下错误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.
Run Code Online (Sandbox Code Playgroud)

storage.buckets.get如果没有,我需要设置的最小角色集是什么,以便服务帐户具有访问权限Storage Object Viewer

rob*_*emb 5

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

resourcemanager.projects.get
resourcemanager.projects.list
storage.objects.get
storage.objects.list
Run Code Online (Sandbox Code Playgroud)

对于存储桶,您将需要一个类似 Storage Legacy Bucket Reader ( ) 的角色roles/storage.legacyBucketReader(或创建自定义角色)。这给你:

storage.buckets.get
storage.objects.list
Run Code Online (Sandbox Code Playgroud)

您始终可以使用云控制台中的IAM 和管理 > 角色选项卡来搜索特定权限,以查看当前哪些角色授予这些权限。