为表格支持的表格授予Bigquery客户端工具访问权限的正确方法,但API仍然失败

时间:2016-12-14 15:55:57

标签: permissions google-drive-api google-bigquery

在我们的组织中,我们有一个标准用户,他们创建了所有Bigquery项目,表格以及他们指向的一些Google表格。

我们在组织中创建了另一位用户,授予他们Bigquery Data ViewerBigquery Data User权限,并允许他们访问Google表格。他们可以访问标准表,但不是Google表格支持的表格;他们得到错误Encountered an error while globbing file pattern.

授予新用户Bigquery Editor权限,他们可以创建由工作表支持的自己的表,但是他们得到了这个对话框:

Bigquery Client Tools Would like to Allow

授予权限后,我们可以删除Bigquery Editor权限,用户可以继续访问所有现有的Bigquery表,包括表格支持的表。

查看新用户的Google帐户https://security.google.com/settings/security/permissions,我们发现他们已添加了Bigquery客户端工具:

Google Account shows Bigquery Client Tools

问题1:为新用户授予此权限的正确方法是什么?我们找到了两种解决方法:

  • 从弹出窗口中抓取URL并为新用户编辑,而无需授予他们编辑权限。
  • 让用户将查询保存到Google表格中,从而触发弹出窗口。

但我们发现没有以编程方式授予用户此权限。

此外...

然而,API似乎仍有问题。我们跑了:

gcloud auth login --enable-gdrive-access
# approve permissions in the web browser for the new user
bq query --apilog=apil.log "SELECT * FROM [warehouse:catalog.table]"

我们的日志显示"An internal error occurred and the request could not be completed.""Encountered an error while globbing file pattern.";例如:

INFO:root:{
 [...]
 "jobReference": {
  "projectId": [...]
  "jobId": "bqjob_r2410ded84270edc0_00000158fdea47bb_1"
 },
 "status": {
  "state": "DONE",
  "errorResult": {
   "reason": "internalError",
   "message": "An internal error occurred and the request could not be completed."
  },
  "errors": [
   {
    "reason": "internalError",
    "message": "An internal error occurred and the request could not be completed."
   }
  ]
 },
 [...]
}

问题2:我们还需要做些什么来通过API / cli授予数据访问权限?

1 个答案:

答案 0 :(得分:0)

我建议有一个单独的数据集,并带有查询原始数据集的视图。您可以share dataset with views。这意味着视图将有权访问数据集,然后您可以授予用户访问“视图数据集”的权限。

Dataset_A(Google表格)

  • 与数据集视图中的视图共享

Dataset_views

  • 与用户(或组)共享