【问题标题】:How do I use row-level permissions in BigQuery?如何在 BigQuery 中使用行级权限?
【发布时间】:2015-04-16 18:01:49
【问题描述】:

Google 今天宣布了这项功能,但我没有看到任何有关它的文档。如何向用户授予行级权限?

例如,假设我有一个表private.all_customers,其架构为{customer:string, id:integer, is_secret:boolean}

我希望我们的销售人员可以访问customerid 字段,但不能访问is_secret,此外,我想只允许他们访问is_secret = false 所在的行。我怎样才能做到这一点?

【问题讨论】:

    标签: google-bigquery


    【解决方案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 无法连接到您的数据集。无法从基础数据集中获取数据”
    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 2012-08-07
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多