【问题标题】:How to fix 'User does not have permission to query table XYZ.' in BigQuery?如何修复“用户无权查询表 XYZ。”在 BigQuery 中?
【发布时间】:2023-04-07 20:40:02
【问题描述】:

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

这是我的命令:

bq query    --application_default_credential_file $GOOGLE_APPLICATION_CREDENTIALS  
  --nouse_legacy_sql 'SELECT * FROM `my_project.data.Document` limit 100' 

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(服务帐户):

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

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

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

    不推荐使用 bq 授权标志。配置授权 bq 命令行工具见Authorizing Cloud SDK tools

    Default@appspot.gserviceaccount.comApp Engine 服务帐号已授予primitiveEditor 角色,承认它可以访问所有资源,额外的roles/bigquery.dataViewerroles/bigquery.user 权限在这里是完全不需要的。

    【讨论】:

      猜你喜欢
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多