2013-10-15 1 views
4

Есть ли способ предоставить доступ только для чтения к определенному набору данных BigQuery к данному идентификатору клиента?Как создать учетную запись службы BigQuery Google с доступом к одному набору данных?

Я пробовал использовать учетную запись службы, но это дает полный доступ ко всем наборам данных.

Также попытался создать учетную запись службы из другого приложения и добавил адрес электронной почты, сгенерированный вместе с сертификатом, в BigQuery> Some Dataset> Share Dataset> Can view, но это всегда приводит к 403 «Access not Configured», ошибка.

Я использую сервер для потока сервера, описанный в документации:

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 = '[email protected]' 

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) 

Я в основном пытаюсь обеспечить доступ только для чтения к внешнему приложению на основе сервера для одного набора данных.

+1

Включили ли вы приложение BigQuery api для вновь созданного приложения? –

+0

Спасибо! Это действительно сделало трюк. – maciekrb

ответ

1

Как указано в Fh, требуется активировать API BigQuery в учетной записи Google, в которой создается учетная запись службы, независимо от того, будет ли она запрашивать конечную точку BigQuery, привязанную к другому идентификатору приложения.

Смежные вопросы