You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何操作共享Google Cloud Storage Bucket?含BigQuery权限配置咨询

解决方案

1. 搭建支持组织/外部用户及BigQuery读写操作的共享GCS Bucket

基础Bucket创建

先通过GCS控制台或gcloud命令创建Bucket:

gcloud storage buckets create gs://[YOUR_BUCKET_NAME] --location=[REGION]

根据业务需求选择存储类别(如标准存储、近线存储等)。

组织内用户权限配置

为组织内用户分配以下角色组合,覆盖BigQuery与GCS的全流程操作:

  • roles/storage.objectAdmin:允许在Bucket内创建、修改、删除对象,满足BigQuery导出数据到GCS的需求
  • roles/bigquery.dataEditor:支持在BigQuery中创建查询、读写数据集,配合GCS权限完成数据交互

如果仅需只读权限,替换为roles/storage.objectViewer + roles/bigquery.dataViewer即可。

外部用户权限配置

对于非组织成员的外部用户,先将其Google账号邮箱添加为IAM成员,再分配上述相同的角色组合。若外部用户无Google账号,可创建专用服务账号,为其分配权限后将密钥提供给用户。

BigQuery与GCS的权限联动

确保用户同时持有对应权限:

  • 从GCS导入数据到BQ:需storage.objects.get权限(包含在objectViewer/objectAdmin中)
  • 从BQ导出数据到GCS:需storage.objects.create权限(包含在objectAdmin中)
  • 创建BQ外部表:需storage.objects.list + storage.objects.get权限

2. 实现“只读数据但禁止直接下载主存储数据”的权限控制

GCS预定义角色中没有直接匹配的选项,因为roles/storage.objectViewer默认允许下载对象,可通过以下方案实现需求:

方案1:自定义IAM角色+访问条件

  1. 创建自定义角色,包含以下权限:
    • storage.objects.list:允许查看Bucket内的对象列表
    • storage.objects.get:支持读取对象元数据及供BigQuery读取数据(该权限是BQ访问GCS的必要条件)
  2. 为该自定义角色添加IAM条件,限制仅当请求来自BigQuery服务账号时生效:
    resource.type == "storage.googleapis.com/Bucket" &&
    request.serviceAccount == "service-[YOUR_PROJECT_NUMBER]@gcp-sa-bigquery.iam.gserviceaccount.com"
    
    这样用户只能通过BigQuery访问GCS数据,无法直接通过控制台、SDK或API下载对象。

方案2:VPC Service Controls(企业级场景)

将GCS Bucket与BigQuery纳入同一VPC Service Control perimeter,配置访问规则仅允许BigQuery服务在perimeter内访问GCS,彻底阻断外部直接下载路径。

内容的提问来源于stack exchange,提问作者Sirin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:05:26