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

Pir*_*ran 7 permissions google-drive-api google-bigquery

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

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

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

Bigquery客户端工具想要允许

授予权限后,我们可以删除Bigquery Editor权限,并且用户可以继续访问所有现有Bigquery表,包括由工作表支持的表.

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

Google帐户显示Bigquery客户端工具

问题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]"
Run Code Online (Sandbox Code Playgroud)

我们的日志显示"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."
   }
  ]
 },
 [...]
}
Run Code Online (Sandbox Code Playgroud)

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

小智 0

我建议使用一个单独的数据集,其中包含查询原始数据集的视图。您可以与视图共享数据集。这意味着视图将有权访问数据集,然后您可以授予用户访问“视图数据集”的权限。

数据集_A(谷歌表格)

  • 与 Dataset_views 中的视图共享

数据集视图

  • 与用户(或组)共享