从数据洞察访问数据时,数据集级别的 BigQuery 数据查看者权限与项目级别的权限有何区别?

Posted

技术标签:

【中文标题】从数据洞察访问数据时,数据集级别的 BigQuery 数据查看者权限与项目级别的权限有何区别?【英文标题】:What is the difference between BigQuery Data Viewer permissions at dataset-level vs project-level when accessing the data from Data Studio? 【发布时间】:2020-12-07 12:51:43 【问题描述】:

我在 BigQuery 中有一个数据集,如果我在 数据集级别 授予用户 BigQuery 数据查看器 权限,他无法在 Data Studio 中查看数据,当他出现错误时他尝试添加图表:“Data Studio 配置错误。Data Studio 无法连接到您的数据集”。

当我向用户授予相同的访问权限(BigQuery 数据查看器)但在项目级别时,不会出现此错误。在这种情况下,一切正常。

在文档中它说:“您必须拥有适当的权限才能将 BigQuery 数据源添加到 Google Data Studio 报告中。此外,应用于 BigQuery 数据集的权限将应用于报告、图表,以及您在 Google 数据洞察中创建的信息中心。”

“适当的权限”是什么意思?

如果我在数据集级别授予用户访问权限,为什么不起作用? (我不希望用户访问项目中的所有数据集)

【问题讨论】:

【参考方案1】:

我想你的答案在Big Query docs :: Predefined roles and permissions:

BigQuery 数据查看器 (roles/bigquery.dataViewer)

当应用于表或视图时,此角色提供以下权限:

从表或视图中读取数据和元数据。

此角色不能应用于单个模型或例程。

当应用于数据集时,此角色提供以下权限:

读取数据集的元数据并列出数据集中的表。 从数据集的表中读取数据和元数据。

在项目或组织级别应用时,此角色还可以 枚举项目中的所有数据集。然而,额外的角色是 允许运行作业所必需的。

既然您意识到 Data Studio 在项目级别没有此权限就无法工作(我没有测试,但我相信您),我敢打赌 Data Studio 也需要权限来枚举数据集(当您连接到数据源,它确实枚举了所有数据集,让您选择要连接的数据集。

在设置后或者如果您正在运行自定义查询,此权限可能并不是真正需要的,但如果 BigQuery 连接器需要它,我会说它有一个内部错误,因为它总是试图枚举数据集,即使它不是必填。

【讨论】:

【参考方案2】:

Datastudio 在后台启动需要授权的作业。

运行用于填充报告的查询作业需要 bigquery.jobs.create 权限。为了使查询作业成功完成,用户或组必须有权访问包含查询引用的表的数据集。所需的最低访问级别是 Can view 映射到该数据集的 bigquery.dataViewer 角色 (Reference)。

【讨论】:

在我的情况下,用户已经在项目级别拥有 BigQuery.JobUser 权限(包括 bigquery.jobs.create)...抱歉没有提及 我怀疑问题出在 Data Studio 方面。用户能否在 BigQuery UI 中查询相同的内容以确认他可以从 BigQuery 端访问这些数据?如果他这样做了,那么问题可能直接来自 Data Studio。我不是 Data Studio 专家,因为它不是我们支持的产品之一,但我从 Data Studio 社区发现了这个有趣的thread。如果那里提到的任何选项都没有帮助您,我建议您也在那里添加评论。 在您询问用户是否可以从 BigQuery 访问数据后,我进行了更多测试,发现用户实际上并没有访问数据的权限。这是因为我试图授予用户访问权限的数据集包含指向他无权访问的其他数据集中的表的视图。我的错误,我没有注意......所以,我的解决方案是“授权视图”

以上是关于从数据洞察访问数据时,数据集级别的 BigQuery 数据查看者权限与项目级别的权限有何区别?的主要内容,如果未能解决你的问题,请参考以下文章

访问时填充数据集表

我无法将数据从 BigQuery 迁移到数据洞察

BigQuery 视图可以引用来自不同数据集/项目的其他表和视图吗?

理解事务的4种隔离级别

数据库事务及事务隔离级别

网易有数的“正确”使用方式——洞察数据中隐藏的故事