如何修复“用户无权查询表 XYZ”。在 BigQuery 中?

Ant*_*ong 11 google-bigquery

我想通过命令进行 BQ 查询bq

这是我的命令:

bq query    --application_default_credential_file $GOOGLE_APPLICATION_CREDENTIALS  
  --nouse_legacy_sql 'SELECT * FROM `my_project.data.Document` limit 100' 
Run Code Online (Sandbox Code Playgroud)

GOOGLE_APPLICATION_CREDENTIALS指向凭证文件。我可以使用此变量来启用gcloud命令来访问我的项目资源。

如果我直接在 bigquery 查询 UI 中运行查询,则查询运行正常。我以我自己的身份登录。

但是bq 因这个错误而失败Access Denied: Table my_project:data.Document: User does not have permission to query table my_project:data.Document.

我已将这些角色授予了凭证文件中包含的 id(服务帐户):

在此输入图像描述

我是否错过了任何角色/权限?

Nic*_*_Kh 0

我想您可能知道bq执行程序的 授权标志已被弃用并且不再使用,因此标志--application_default_credential_file在您的初始命令中更像是多余的bq query。一般来说,bq授权参数有时会干扰gcloud凭证设置,从而导致不可预测的结果。根据官方指南,您应该遵循常规的 SDK 说明来执行授权设置:

bq 授权标志已弃用。要配置 bq 命令行工具的授权,请参阅授权 Cloud SDK 工具

默认的 @appspot.gserviceaccount.comApp Engine服务帐户已授予原始 Editor角色,承认它可以访问所有资源,这里不需要额外roles/bigquery.dataViewer的权限。roles/bigquery.user