Зачем использовать служебную учетную запись из экземпляра виртуальной машины при перечислении заданий BQ - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь перечислить задания, выполняющиеся в большом запросе для многих проектов, используя учетную запись пользователя, имеющего доступ владельца к проектам gcp.Мы используем API-интерфейсы Python, и весь этот процесс выполняется на экземпляре виртуальной машины.Но перечислить задание не удается, поскольку учетная запись службы по умолчанию для экземпляра виртуальной машины не имеет разрешения для других проектов.

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

Это код Python, который я используюдля перечисления работы:

from google.cloud import bigquery
import pandas as pd

client = bigquery.Client(project=<project_ID>)
job_list = client.list_jobs(project=<project_ID>,max_results=100000, state_filter='running', all_users=True)

Я попытался дать учетные данные с помощью файла json, используя команду ниже, но это также не помогло.

client = bigquery.Client.from_service_account_json("0874ee00257b.json")

1 Ответ

0 голосов
/ 08 февраля 2019

Поскольку по умолчанию экземпляр GCE (ВМ) проходит проверку подлинности с использованием учетной записи службы, к которой ему был предоставлен доступ при создании (учетная запись службы по умолчанию).Эта учетная запись VM & service связана только с проектом, в котором она была создана, а не с пользователем.Это имеет смысл, когда вы думаете об этом.Вы не хотели бы, чтобы виртуальные машины (или любые сервисы на GCP фактически) аутентифицировались / привязывались к отдельному пользователю.Это было бы плохой практикой, например, что означает, что пользователь покидает компанию, и его учетная запись удаляется.

Так что в любом случае мы можем перечислять задания BQ только с нашей собственной учетной записью и не используя служебную учетную запись.

Итак, вернемся к вашему актуальному вопросу.Да, но я бы не советовал делать это, если вы собираетесь развертывать и производить / вводить в эксплуатацию.

  1. SSH на ВМ
  2. Выполнить gcloud auth login
  3. Следуйте инструкциям

Примечание : когда вы сделаете это, Google даже скажет вам, что это не рекомендуется, и вместо этого вы должны использовать служебные учетные записи:

enter image description here

Дополнительная информация здесь: https://cloud.google.com/sdk/docs/authorizing

...