无法针对 BigQuery 运行查询 - 权限错误 403

Pro*_*120 5 google-bigquery google-cloud-platform

我有一个IAM具有角色的用户:BigQuery Data Editor 在我的数据集中,我确实Share dataset添加了具有Can Edit权限的用户。

但是,当我运行访问 BigQuery 的脚本时,出现错误 403

当我添加到我的IAM用户角色BigQuery User脚本工作。

脚本仅从SELECT该数据集中的表运行查询。

我不明白为什么我必须授予BigQuery User它才能起作用。

根据文档https://cloud.google.com/bigquery/docs/access-control

基本原理:dataEditor 角色通过为数据集中的表颁发创建、更新、删除权限来扩展 bigquery.dataViewer

roles/bigquery.dataViewerhas bigquery.tables.getDatawhich 获取表数据

我在这里做错了什么?

Gui*_*eda 8

访问数据并能够通过查询检索它是不同的事情,这就是混淆的来源。

根据文档,roles/bigquery.dataEditor具有以下权限:

  • 读取数据集的元数据并列出数据集中的表。
  • 创建、更新、获取和删除数据集的表。

这意味着具有此角色的用户有权访问和操作数据集的信息和其中的表。例如,具有此角色的用户可以通过 GCP 控制台(架构、详细信息和预览选项卡)导航到它来查看所有表信息,但是当尝试在那里运行查询时,将出现以下消息:

访问被拒绝:项目<PROJECT-ID>:用户<USER>在项目中没有 bigquery.jobs.create 权限<PROJECT-ID>

现在让我们检查roles/bigquery.user权限:

在项目中运行作业(包括查询)的权限。

这里的关键要素是BigQuery User角色可以运行作业,而BigQuery DataEditor不能。BigQuery 作业是管理 BigQuery 任务的对象,这包括运行查询。

有了这些信息,角色比较矩阵中就更清楚了,对于您要完成的任务,您需要BigQuery DataEditor角色(获取表数据/元数据)和BigQuery User角色(创建作业/查询)。