如何在 BigQuery 中使用行级权限?
How do I use row-level permissions in BigQuery?
Google 今天宣布了此功能,但我没有看到它的任何文档。如何授予用户行级权限?
例如,假设我有一个 table private.all_customers
架构 {customer:string, id:integer, is_secret:boolean}
.
我想授予我们的销售人员访问字段 customer
和 id
的权限,但不授予 is_secret
字段的访问权限,此外,我想授予他们访问权限那些 is_secret = false
的行。我怎样才能做到这一点?
行级权限的关键部分是您实际上是在授予视图权限。该视图定义了您希望委派用户查看的行和列,但不授予他们访问基础 table.
的权限
为此,请创建一个视图,该视图将 return 您希望用户看到的行和列。对于上面的示例,视图将如下所示:
SELECT customer, id FROM private.all_customers where is_secret = false
然后我可以将其保存为视图 "public.public_customers",并与分析师共享 public
数据集。
请注意,到目前为止,这 并不 意味着分析师可以访问数据。如果他们现在尝试 运行 它,他们会得到一个错误。仅仅访问读取 table 的视图并不能使您访问 table 上的基础数据。如果是这样,那么任何人都可以创建一个视图来读取他们想要查看的任何数据。
第二步是将该视图添加到 private
数据集的 ACL。这样做是为了记录视图应该有权访问数据。这样 private
数据集的所有者可以审核谁有权访问他们的数据,并在必要时撤销它。
将视图添加到 ACL 的最简单方法是使用 BigQuery Web UI。如果您在 Web UI 中单击 private
数据集名称旁边的箭头,然后单击 "Share this dataset",它会弹出一个对话框,让您编辑 ACL。
在该对话框的底部,它将显示 "Add People" 和左侧的可单击图标。如果你点击那个图标,你应该可以 select "Authorized View"。一旦完成 selected,您应该输入视图的完全限定名称 -- project:dataset.view
。在我们的示例中,这将是 my-project:public.public_customers
。点击 'Add' 它会出现在列表中,然后点击 "Save Changes" 提交。
将视图添加到 ACL 后,任何有权访问 'public' 数据集的人都应该能够 运行 查询 public.public_customers
视图。
有关此功能的更高级用法,它允许您为不同的用户提供不同的答案,请参阅此问题:
Google 今天宣布了此功能,但我没有看到它的任何文档。如何授予用户行级权限?
例如,假设我有一个 table private.all_customers
架构 {customer:string, id:integer, is_secret:boolean}
.
我想授予我们的销售人员访问字段 customer
和 id
的权限,但不授予 is_secret
字段的访问权限,此外,我想授予他们访问权限那些 is_secret = false
的行。我怎样才能做到这一点?
行级权限的关键部分是您实际上是在授予视图权限。该视图定义了您希望委派用户查看的行和列,但不授予他们访问基础 table.
的权限为此,请创建一个视图,该视图将 return 您希望用户看到的行和列。对于上面的示例,视图将如下所示:
SELECT customer, id FROM private.all_customers where is_secret = false
然后我可以将其保存为视图 "public.public_customers",并与分析师共享 public
数据集。
请注意,到目前为止,这 并不 意味着分析师可以访问数据。如果他们现在尝试 运行 它,他们会得到一个错误。仅仅访问读取 table 的视图并不能使您访问 table 上的基础数据。如果是这样,那么任何人都可以创建一个视图来读取他们想要查看的任何数据。
第二步是将该视图添加到 private
数据集的 ACL。这样做是为了记录视图应该有权访问数据。这样 private
数据集的所有者可以审核谁有权访问他们的数据,并在必要时撤销它。
将视图添加到 ACL 的最简单方法是使用 BigQuery Web UI。如果您在 Web UI 中单击 private
数据集名称旁边的箭头,然后单击 "Share this dataset",它会弹出一个对话框,让您编辑 ACL。
在该对话框的底部,它将显示 "Add People" 和左侧的可单击图标。如果你点击那个图标,你应该可以 select "Authorized View"。一旦完成 selected,您应该输入视图的完全限定名称 -- project:dataset.view
。在我们的示例中,这将是 my-project:public.public_customers
。点击 'Add' 它会出现在列表中,然后点击 "Save Changes" 提交。
将视图添加到 ACL 后,任何有权访问 'public' 数据集的人都应该能够 运行 查询 public.public_customers
视图。
有关此功能的更高级用法,它允许您为不同的用户提供不同的答案,请参阅此问题: