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

如何限制GCP服务账户仅查询指定BigQuery数据集,禁止访问公共数据集?

解决GCP服务账户仅允许访问特定数据集的问题

核心问题在于BigQuery公共数据集默认对所有GCP账户开放,即便服务账户只有数据集级权限,仍能跨项目访问公共数据集。要实现仅允许访问指定数据集,需从权限限制层面入手:

方法一:通过组织政策约束限制访问范围

启用constraints/bigquery.allowedDatasetProjects组织政策,限制项目内的BigQuery作业只能访问指定项目的数据集:

  • 登录GCP控制台,进入「IAM与管理」→「组织政策」
  • 搜索bigquery.allowedDatasetProjects约束,将其设置为「自定义」
  • 在允许的项目列表中添加你自己的项目ID,移除其他所有项目(包括bigquery-public-data)
  • 保存设置后,服务账户将无法访问任何不在允许列表内的数据集(含公共数据集)

方法二:用IAM条件精准限制数据集访问

若没有组织资源(仅单独项目),可通过IAM条件为服务账户的数据集角色添加访问限制:

  • 进入你的数据集权限设置页面,找到该服务账户的BigQuery Data Viewer和BigQuery Metadata Viewer角色
  • 为每个角色添加条件:
    resource.name == "projects/你的项目ID/datasets/你的目标数据集ID"
    
  • 保存后,服务账户仅能访问符合条件的指定数据集,无法访问公共数据集

验证步骤

  1. 使用该服务账户尝试查询公共数据集(例如bigquery-public-data.samples.gsod),应返回权限错误
  2. 查询你指定的数据集,确认能正常执行作业

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:42:09