对两个不同用户的 BigQuery 数据访问权限,无需复制数据

Posted

技术标签:

【中文标题】对两个不同用户的 BigQuery 数据访问权限,无需复制数据【英文标题】:BigQuery data access to two different users without duplicating data 【发布时间】:2017-12-15 10:33:40 【问题描述】:

我们有两种类型的用户和两个项目。

用户:

应该访问表中所有数据的管理员 应该能够查询表的某些列的用户 如下图所示,访问数据应该是这样的,不重复数据:

由于无法根据列授予用户访问权限(甚至不能基于表,因为 BigQuery 的访问控制只是在数据集级别),因此想到的最简单的解决方案是:

在两个不同的数据集或项目中复制数据,一个包含所有数据,另一个包含第二组可以查询的列。

我们如何在不重复数据的情况下找到解决方案?

【问题讨论】:

视图实际上是完美的解决方案。为什么你认为用户仍然可以查询整个表?您可以限制他们在底层 SQL 中的每个视图中看到的列。 cloud.google.com/bigquery/docs/share-access-views 为什么说 VIEW 不是正确的解决方案?您只授予 VIEW 权限,这样他们就无法查询其他列。 我写的视图不是正确的解决方案,因为我想我应该直接将用户添加到表中以便能够查询,因为错误是说用户在表上没有足够的授权.比我阅读了@GrahamPolley 在他的评论中的链接,我发现我必须与视图共享表格,而不是直接与用户共享。 @GrahamPolley:请提供您的评论作为答案,然后我接受它作为正确答案,如果没有,请告诉我这样做。谢谢! @Majico - 还要检查 ***.com/a/45991950/5221944 以获取其他“技巧”:o) 【参考方案1】:

视图实际上是您问题的完美解决方案。您只需在视图的底层 SQL 中限制每个组在每个视图中看到的列。

更多详情见:

https://cloud.google.com/bigquery/docs/share-access-views BigQuery Authorized View over multiple projects

【讨论】:

以上是关于对两个不同用户的 BigQuery 数据访问权限,无需复制数据的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 API(补丁)授予对 BigQuery 数据集的新视图访问权限

BigQuery Connected Sheets - 所需的用户权限?

Postgres:为不同角色/用户创建的未来表授予对角色/用户的访问权限

我的服务帐号即使拥有足够的权限也无法访问 BigQuery 数据

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

Google Bigquery 权限问题