对两个不同用户的 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 数据