从 Google 存储桶下载对象需要哪些角色
What roles are needed to download an object from a Google Storage Bucket
我创建了一个服务帐户,并只给它赋予了 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 Object Viewer
,服务帐户具有 storage.buckets.get
访问权限,我需要设置的最少角色集是什么?
Storage Object Viewer (roles/storage.objectViewer
) 仅包含以下权限:
resourcemanager.projects.get
resourcemanager.projects.list
storage.objects.get
storage.objects.list
对于存储桶,您将需要像 Storage Legacy Bucket Reader (roles/storage.legacyBucketReader
) 这样的角色(或创建一个 custom role)。这给你:
storage.buckets.get
storage.objects.list
您始终可以使用云控制台中的 IAM & Admin > Roles 选项卡搜索特定权限,以查看当前授予这些权限的角色。
需要将这些角色添加到 SA:
Storage Object Viewer (roles/storage.objectViewer)
resourcemanager.projects.get
resourcemanager.projects.list
storage.objects.get
storage.objects.list
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader)
storage.buckets.get
storage.multipartUploads.list
storage.objects.list
或者更好的是创建一个带有角色的自定义角色
我创建了一个服务帐户,并只给它赋予了 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 Object Viewer
,服务帐户具有 storage.buckets.get
访问权限,我需要设置的最少角色集是什么?
Storage Object Viewer (roles/storage.objectViewer
) 仅包含以下权限:
resourcemanager.projects.get
resourcemanager.projects.list
storage.objects.get
storage.objects.list
对于存储桶,您将需要像 Storage Legacy Bucket Reader (roles/storage.legacyBucketReader
) 这样的角色(或创建一个 custom role)。这给你:
storage.buckets.get
storage.objects.list
您始终可以使用云控制台中的 IAM & Admin > Roles 选项卡搜索特定权限,以查看当前授予这些权限的角色。
需要将这些角色添加到 SA:
Storage Object Viewer (roles/storage.objectViewer)
resourcemanager.projects.get
resourcemanager.projects.list
storage.objects.get
storage.objects.list
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader)
storage.buckets.get
storage.multipartUploads.list
storage.objects.list
或者更好的是创建一个带有角色的自定义角色