【问题标题】:How to create a Google BigQuery service account with access to a single dataset?如何创建可以访问单个数据集的 Google BigQuery 服务帐户?
【发布时间】:2013-10-22 19:13:32
【问题描述】:

是否有任何方法可以向给定的客户端 ID 授予对特定 BigQuery 数据集的只读访问权限?

我尝试过使用服务帐户,但这提供了对所有数据集的完全访问权限。

还尝试从其他应用程序创建服务帐户,并将与证书一起生成的电子邮件地址添加到 BigQuery > 某些数据集 > 共享数据集 > 可以查看,但这总是会导致 403“访问未配置”错误.

我正在使用文档中描述的服务器到服务器流程:

import httplib2

from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

# REPLACE WITH YOUR Project ID
PROJECT_NUMBER = 'XXXXXXXXXXX'
# REPLACE WITH THE SERVICE ACCOUNT EMAIL FROM GOOGLE DEV CONSOLE
SERVICE_ACCOUNT_EMAIL = 'XXXXX@developer.gserviceaccount.com'

f = file('key.p12', 'rb')
key = f.read()
f.close()

credentials = SignedJwtAssertionCredentials(
    SERVICE_ACCOUNT_EMAIL,
    key,
    scope='https://www.googleapis.com/auth/bigquery.readonly')

http = httplib2.Http()
http = credentials.authorize(http)

service = build('bigquery', 'v2')
tables = service.tables()
response = tables.list(projectId=PROJECT_NUMBER, datasetId='SomeDataset').execute(http)

print(response)

我基本上是在尝试为单个数据集提供对基于外部服务器的应用程序的只读访问。

【问题讨论】:

  • 您是否在新创建的应用上开启了 BigQuery api?
  • 谢谢!这实际上成功了。

标签: python google-app-engine google-oauth google-bigquery


【解决方案1】:

正如 Fh 所指出的,需要在创建服务帐户的 Google 帐户中激活 BigQuery API,无论它是否会查询绑定到不同应用程序 ID 的 BigQuery 端点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2020-05-01
    • 2019-01-26
    相关资源
    最近更新 更多