2015-10-19 3 views
2

Я просматриваю руководство Google OAuth 2.0 for Server to Server Applications и пытаюсь использовать учетные данные учетной записи службы для вызова API Google.Ограничение разрешения учетной записи Google Service?

У меня есть объект data, который содержит учетные данные, проанализированные из файла ключей JSON.

def get_bigquery_service(): 
    # ... Read and parse JSON Key file 
    scope = ["https://www.googleapis.com/auth/bigquery"] 
    credentials = SignedJwtAssertionCredentials(
     data['client_email'], 
     data['private_key'], 
     scope=scope) 
    http = httplib2.Http() 
    http = credentials.authorize(http) 
    return build("bigquery", "v2", http=http) 

Тогда я буду иметь доступ к BigQuery API, потому что я утверждал, что это в scope.

Моя забота заключается в том, что я не вижу никакой опции, которая позволяет мне фактически ограничить учетную запись службы, чтобы иметь возможность использовать BigQuery API в консоли разработчика Google. Предположим, что если файл учетных данных был случайно просочился другим, они могут по существу сделать что-либо для любых моих услуг, просто объявив, что они хотят получить доступ в scope.

Можно ли каким-либо образом ограничить разрешение, которое имеют учетные записи службы?

ответ

1

У вас есть проект-A, и вы хотите создать учетную запись службы, которая может использовать BigQuery и анализировать данные в проекте-A?

Создайте проект-B и включите для него только API BigQuery. Создайте учетную запись службы для проекта-B. Затем в проекте-A предоставляется доступ к проекту-B для анализа его данных.

+0

Хм. Но у меня уже есть огромное количество исторических данных в Project A, которые нельзя перенести в Project B. –

+0

вам не нужно переносить данные, просто скажите, скажите BigQuery, что ProjectB может заглянуть в данные ProjectA (разрешения на чтение) –

+1

Обратите внимание, что вы имеют два варианта предоставления доступа для чтения: (1) вы можете добавить учетную запись Project B в качестве Project Reader в Project A. Это даст доступ к чтению всех наборов данных Project A, а также доступ к доступу к состоянию проекта Project A. (2) вы можете добавить служебную учетную запись Project B к конкретным наборам данных в Project A, которые вы хотите разделить. Это даст доступ к чтению только для этих наборов данных. В любом случае учетная запись службы проекта B будет отправлять задания запроса в проект B, который считывает таблицы в проекте A. Вам нужно будет использовать полностью квалифицированные ссылки на таблицы, то есть «[projectA: dataset.table]». –

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