如何在 BigQuery 中使用行级权限?
Posted
技术标签:
【中文标题】如何在 BigQuery 中使用行级权限?【英文标题】:How do I use row-level permissions in BigQuery? 【发布时间】:2015-04-16 18:01:49 【问题描述】:Google 今天宣布了这项功能,但我没有看到任何有关它的文档。如何向用户授予行级权限?
例如,假设我有一个表private.all_customers
,其架构为customer:string, id:integer, is_secret:boolean
。
我希望我们的销售人员可以访问customer
和id
字段,但不能访问is_secret
,此外,我想只允许他们访问is_secret = false
所在的行。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:行级权限的关键部分是您实际上是在授予视图权限。视图定义了您希望委派用户查看的行和列,而不授予他们访问基础表的权限。
为此,请创建将返回您希望用户看到的行和列的视图。对于上面的示例,视图如下所示:
SELECT customer, id FROM private.all_customers where is_secret = false
然后我可以将其保存为视图“public.public_customers”,并与分析师共享public
数据集。
请注意,到目前为止,这不意味着分析师可以访问数据。如果他们现在尝试运行它,他们会得到一个错误。仅仅访问读取表的视图并不能让您访问该表上的基础数据。如果是这样,那么任何人都可以创建一个视图来读取他们想查看的任何数据。
第二步是将该视图添加到 private
数据集的 ACL。这样做是记录视图应该有权访问数据。这样private
数据集的所有者可以审核谁有权访问他们的数据,并在必要时撤销它。
将视图添加到 ACL 的最简单方法是使用 BigQuery Web UI。如果您在 Web UI 中单击 private
数据集名称旁边的箭头并单击“共享此数据集”,它将弹出一个对话框,让您可以编辑 ACL。
在该对话框的底部,它将显示“添加人员”和左侧的可点击图标。如果单击该图标,您应该能够选择“授权视图”。选择后,您应该输入视图的完全限定名称 -- project:dataset.view
。在我们的示例中,这将是my-project:public.public_customers
。点击“添加”,它将显示在列表中,然后点击“保存更改”提交。
视图添加到 ACL 后,任何有权访问“公共”数据集的人都应该能够针对 public.public_customers
视图运行查询。
这个功能的更高级用法,可以让你对不同的用户给出不同的答案,请看这个问题:How do I give different users access to different rows without creating separate views in BigQuery?
【讨论】:
我能够在组织内设置行级权限。但在外面我无法提供访问权限。它给出“数据集配置错误 Data Studio 无法连接到您的数据集。无法从基础数据集中获取数据”以上是关于如何在 BigQuery 中使用行级权限?的主要内容,如果未能解决你的问题,请参考以下文章
在 Google 表格中使用 BigQuery,如何授予其他用户按“刷新”的权限?
如何授予查看者从 Data Studio 更改 BigQuery 参数的权限
如何通过 API(补丁)授予对 BigQuery 数据集的新视图访问权限