我如何授予其他人在 BigQuery 中阅读我的 INFORMATION_SCHEMA.SCHEMATA 的权限?

How can I give others permission to read my INFORMATION_SCHEMA.SCHEMATA in BigQuery?

我可以授予什么权限让世界上的每个人都可以查询我的信息模式?即我希望每个人都能够 运行:

select * from `projectid`.INFORMATION_SCHEMA.SCHEMATA

目前我回来了:

Access Denied: Table projectid:INFORMATION_SCHEMA.SCHEMATA: User does not have permission to query table projectid:INFORMATION_SCHEMA.SCHEMATA

通常在 BigQuery 中,您可以在数据集级别设置权限。例如,此查询将为任何人 运行,因为数据集对每个人都是 public:

SELECT * 
FROM `fh-bigquery.flights.INFORMATION_SCHEMA.TABLES`

但是你不能这样做:

SELECT * 
FROM `fh-bigquery.INFORMATION_SCHEMA.SCHEMATA`

这是因为您需要项目级别的权限才能查看我的所有数据集,即使是我没有创建的数据集 public。

如果您真的想与全世界共享所有数据集的架构,那么您可以为此创建一个自定义角色,并获得 bigquery.datasets.get 权限:

然后您需要将此角色分配给所有用户 - 但这不是一个选项。

在项目级别,您可以将此角色分配给以下角色之一:

Google Account email: user@gmail.com
Google Group: admins@googlegroups.com
Service account: server@example.gserviceaccount.com
G Suite domain: example.com

本例中的一个选项:

  • 创建一个 Google 组。
  • 将这个新角色赋予这个新 Google 组。
  • 让这个 Google 群组免费加入。
  • 告诉人们"hey, if you want to see my project SCHEMATA, join this group".

然后一切正常。