Есть ли способ предоставить доступ только для чтения к определенному набору данных 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)
Я в основном пытаюсь обеспечить доступ только для чтения к внешнему приложению на основе сервера для одного набора данных.
Включили ли вы приложение BigQuery api для вновь созданного приложения? –
Спасибо! Это действительно сделало трюк. – maciekrb