验证服务帐户并执行简单查询

问题描述

我有一个由供应商客户提供的服务帐户

我正在使用.NET API通过他们提供的服务帐户从他们的数据库中提取数据 我正在尝试运行一个简单的查询“从[projectId]。[datasetId]。[table]中选择名称” 我收到以下错误:

Access Denied: Project [projectId]: User does not have bigquery.jobs.create permission in project [projectId]. [403]
Errors [
    Message[Access Denied: Project [projectId]: User does not have bigquery.jobs.create permission in project [projectId].] Location[ - ] Reason[accessDenied] Domain[global]
]
  1. 如何查看我的服务帐户权限?
  2. 如何验证我的服务帐户?
  3. 执行“选择”的唯一方法是获得工作许可?

解决方法

  1. 有多种方法可以测试documentation website上的IAM权限。使用curl可以做到:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://cloudresourcemanager.googleapis.com/v1/projects/project-id:testIamPermissions

尽管您已经知道缺少哪些权限,所以您需要询问供应商客户端以提供BigQuery访问权限。 To add access the instructions are here.

  1. 就身份验证而言,您只需要发送服务帐户json密钥或通过SDK进行身份验证即可,具体取决于您访问它的方式,但是通常您会以某种方式发送json密钥或指出json密钥的位置到SDK。

  2. 有一个number of ways to query BigQuery,但所有这些都是通过“作业”发送的,即查询本身。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...