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

Authenticating the Service Account and Performing a Simple Query

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

我正在使用 .NET API 使用他们提供的服务帐户从他们的数据库中提取数据 我正在尝试 运行 一个简单的查询“select 来自 [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. 执行 'select' 的唯一方法是获得工作许可?
  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 键或向 SDK 指出 json 键位置。

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