如何移除BigQuery项目中的公共数据集?
如何限制用户访问BigQuery中的公共数据集?
当然有办法解决你的问题!首先得明确一点:公共数据集是Google托管在专用项目(比如bigquery-public-data)里的,我们没法直接“移除”它们,但可以通过权限控制完全禁止你的用户访问这些数据集,从根源上避免误查询产生费用。
下面是两种最实用的方法:
1. 用IAM拒绝策略精准限制公共数据集访问
这是最直接的方案,通过拒绝权限来阻止用户访问指定的公共数据集项目:
- 打开你的BigQuery项目的IAM页面,找到「拒绝策略」选项卡,创建一个新的拒绝策略。
- 选择要限制的对象:可以是特定用户、用户组,或者针对
roles/bigquery.user这类通用角色(覆盖所有普通用户)。 - 指定拒绝的资源范围:输入
projects/bigquery-public-data(这是绝大多数公共数据集所在的项目,如果还有其他第三方公共数据集,可以添加对应的项目ID)。 - 添加需要拒绝的权限:
bigquery.datasets.getData:禁止用户读取公共数据集的内容bigquery.datasets.list:禁止用户在BigQuery界面看到这些公共数据集- 如果要彻底阻止在公共数据集上运行查询,还可以添加
bigquery.jobs.create(注意:如果是针对特定资源范围设置的,只会拒绝在bigquery-public-data上创建查询,不影响用户在你自己项目里的操作)
2. 创建自定义IAM角色,仅授予必要权限
如果不想用拒绝策略,也可以通过最小权限原则来控制:
- 新建一个自定义IAM角色,只包含用户访问你自有数据集所需的权限,比如:
bigquery.datasets.getData(限制在你的项目内)bigquery.jobs.create(限制在你的项目内)bigquery.datasets.list(限制在你的项目内)
- 把这个自定义角色分配给你的用户,替代默认的
roles/bigquery.user这类权限较宽的角色。这样用户只能看到和访问你项目里的数据集,完全碰不到公共数据集。
额外提醒:除了权限控制,你也可以给BigQuery设置预算警报,一旦费用接近阈值就会收到通知,双重保障避免意外支出。
内容的提问来源于stack exchange,提问作者Bobbylank
相关产品推荐
相关产品推荐

