我如何在BigQuery中使用行级权限?

4
今天谷歌宣布了这个新功能,但我没有找到相关文档。如何为用户授予行级别权限?
例如,假设我有一个名为 private.all_customers 的表格,其模式为 {customer:string, id:integer, is_secret:boolean}
我想让我们的销售人员只能访问字段 customerid,而不能访问 is_secret,并且我还想让他们仅访问那些 is_secret = false 的行。我该怎么做呢?
1个回答

6
重点在于行级权限实际上是在为视图授权。该视图定义了您想要委派用户查看的行和列,而不会让他们访问基础表。
为此,请创建可以返回您希望用户查看的行和列的视图。对于上面的示例,该视图将如下所示:
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.public_customers”视图运行查询。
要了解此功能的更高级用法,可以使您为不同的用户提供不同的答案,请参见此问题:如何在BigQuery中为不同的行授权给不同的用户而不创建单独的视图?

我能够在组织内设置行级别权限。但是在外部我无法提供访问权限。它会显示“数据集配置错误Data Studio 无法连接到您的数据集。从底层数据集获取数据失败。” - Urvah Shabbir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接