Google Bigquery 权限问题

Posted

技术标签:

【中文标题】Google Bigquery 权限问题【英文标题】:Google Bigquery Permissions Issue 【发布时间】:2019-06-20 17:52:10 【问题描述】:

我有两个 GCP 项目。项目 A 和项目 B。在项目 A 下,我有一个 Bigquery 数据集和一个 IAM 用户 - IAM-BQ-PROJ-A,角色为 BigQuery Data ViewerBigQuery User

项目 B 托管一个 Kubernetes 集群。项目 B 中有一个 Rails 应用程序正在对项目 A 中的 Bigquery 数据集执行查询。我有 IAM 用户的凭证 - Rails 应用程序可以访问 IAM-BQ-PROJ-A。但是,这些查询失败并出现以下错误 -

Google::Cloud::PermissionDeniedError: accessDenied: Access Denied: Project B: The user IAM-BQ-PROJ-A does not have bigquery.jobs.create permission in Project B.

当 Rails 应用程序在 GCP 之外的本地开发环境中运行时,这些查询会成功运行。

如果我在项目 B 下创建一个 IAM 用户 - IAM-BQ-PROJ-A,角色为 BigQuery Data ViewerBigQuery User,那么这些查询将成功执行。

为什么会这样?如果凭证可访问(类似于本地开发环境功能),这些查询是否应该在项目 B 下没有 IAM 用户的情况下成功触发?

【问题讨论】:

【参考方案1】:

这是预期的行为,因为您正在使用 2 个不同的项目。

在项目 A 下创建的用户可能具有正确的权限,但它与项目 B 无关,因此它不具有执行项目 B 的查询所需的权限。这就是您收到错误的原因:

Google::Cloud::PermissionDeniedError: accessDenied: Access Denied: Project B: The user IAM-BQ-PROJ-A does not have bigquery.jobs.create permission in Project B.

因此,在项目 B 下创建具有正确权限的用户将允许成功执行查询。

【讨论】:

以上是关于Google Bigquery 权限问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Google 表格中使用 BigQuery,如何授予其他用户按“刷新”的权限?

Google BigQuery:授予服务帐户权限以仅在某些特定数据集中创建作业

如何设置 Airflow DAG 权限以查询基于 Google Sheets 文档构建的 BigQuery 表?

从 Google Apps 脚本访问 GoogleSheet 链接的 BigQuery 表时出现“获取驱动器凭据时权限被拒绝”错误

BigQuery 行级安全权限

将 Google Analytics 360 链接到 Big Query,权限问题