Аутентификация с использованием служебной учетной записи в Google Cloud Platform - PullRequest
0 голосов
/ 14 июня 2019

Я разрабатываю свой собственный CLI на Python для управления определенными операциями в службах Google Cloud Platform через API GCP / клиентские библиотеки Python.

Более конкретно, я буду управлять диспетчером ресурсов, облачным хранилищем, BigQuery и администратором развертывания..

Я создал центральный проект GCP и учетную запись службы с полными разрешениями в узле организации, и эта учетная запись будет действовать от имени любого пользователя для управления этими службами и выполнения таких операций, как, например, создание / удаление развертываний.с помощью вызова API Deployment Manager.

Мой вопрос заключается в том, как мне обрабатывать аутентификацию при каждом вызове API / клиента.Поскольку CLI будет выполнять звонки в различные службы от имени пользователей-пользователей, я хотел бы использовать учетную запись службы.Я знаю, что мы можем генерировать ключи для учетной записи службы и читать ее содержимое с помощью функции, подобной service_account.Credentials.from_service_account_file(key.json), но затем, если другой коллега хочет запустить мой CLI, я должен отправить им сгенерированный файл ключа json и указать на него локально, и, очевидно, я нене хочу выставлять ключ в репозиторий github.

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

from google.oauth2 import service_account
from googleapiclient import discovery
credentials = service_account.Credentials.from_service_account_file(
        'service_account_key.json')
service = discovery.build('cloudresourcemanager', 'v1', credentials=credentials)
request = service.projects().list()
response = request.execute()

Можно ли программно аутентифицировать служебную учетную запись таким образом, чтобы мне не приходилось отправлять файл ключа json кому-то, кто будет запускать CLI?

...