我想限制 BigQuery 中 1 个数据集的访问,以便除了 1 个用户(我)之外没有人能够查看该数据集。从文档来看,除非我更改项目级别权限并从那里删除
Editor
角色,否则这是不可能的。
目前,N(10-12) 个人拥有我的 Google 项目的项目级别
Editor
访问权限。他们时不时地与那里的多个服务进行交互。我想保持这种状态,或者至少拥有一个具有几乎相同权限的新角色。
根据我目前对
Google IAM
权限的理解,我们可以通过向用户授予资源级访问权限来做到这一点。但如果我将 BigQuery Editor 角色授予用户,他们仍然可以查看/访问所有内容 datasets
。
为了解决这个问题,我必须为每个用户提供更细粒度的访问权限,这意味着为所有用户提供单独的数据集级别的访问权限。这又意味着如果我有 10/12 人和 10/12 数据集这可能很难管理。
有没有更好的方法来做到这一点,我的意思是我可以指定所有
Editors
或Custom Role
可以像他们已经在做的那样访问所有内容,除了这个特定的dataset
您无法定义表的访问控制。仅到数据集级别,但还有其他选项可以帮助您:
正如 BigQuery 关于创建数据集的文档中所述:
您可以为自己提供以下划线开头的数据集在 BigQuery 网页界面和经典网页界面的导航窗格中隐藏。您仍然可以查询这些数据集中的表和视图,即使它们不可见。
bigquery.datasets.create
,以便创建这些远离此用户的“隐藏”数据集,或者按照此处的指定,为自己分配以下 Cloud IAM 角色:
bigquery.dataEditor
bigquery.dataOwner
bigquery.user
bigquery.admin
授权视图。正如这里所说:
授权视图允许您与特定用户和组共享查询结果最后我附上一篇关于,而无需授予他们访问基础表的权限。您还可以使用视图的 SQL 查询来限制用户能够查询的列(字段)。
如何通过组在行级别控制对 BigQuery 的访问的文章,这可以帮助您更好地了解行访问级别的工作原理。
我还将在此处附加有关让用户访问不同行而不创建单独视图的问题。
您可以开发一个模块来为用户创建适当的东西,例如数据集、存储桶、一些权限、服务帐户等。
这样您所需要做的就是将另一个用户添加到您的列表中并重新部署。这里的另一个额外好处是您可以使用存储 TF 的存储库作为事实来源。
您可以按照以下步骤使用行级安全性和隐藏数据集来限制对数据集或表的访问。
步骤1。 您可以在控制台中使用数据集名称前的 _ 键创建隐藏数据集,这将使数据集隐藏。
步骤 2。 使用此查询在表上创建行级安全性
CREATE ROW ACCESS POLICY your_filter_name
ON `projectid._dataset_name.table name`
GRANT TO ('user:[email protected]')
FILTER USING (True);