Я пытаюсь создать скрипт для запроса API групп Google из экземпляра GCP. Экземпляр имеет присоединенный SA, этот SA имеет SCOPE - 'https://www.googleapis.com/auth/admin.directory.group.readonly', разрешенный в GSuite, и пользователь также настроен в GSuite с пользовательской ролью, прикрепленной к нему (группы списков).
Для SA я создал файл ключа в консоли GCP. Затем я получаю учетные данные, поскольку в документации написано:
from googleapiclient.discovery import build
from google.oauth2 import service_account
creds = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
, затем добавьте пользователя - чтобы действовать как.
creds = creds.with_subject('user@domain.com')
service = build('admin', 'directory_v1', credentials=creds)
results = service.groups().list(domain=tenant, maxResults=10,
orderBy='email',
query='email:{}*'.format(group_name)).execute()
Затем я запрашиваю API, все работает отлично, и я получаю группы.
Итак, мой вопрос: есть ли способ использовать SA, прикрепленный к экземпляру, без генерации файла ключа json. Как получить compute_instance / учетные данные по умолчанию / из метаданных экземпляра и затем каким-то образом аутентифицировать их в API GSuite?
Или есть способ запрашивать группы, не обращаясь к API Gsuite, просто вызвать некоторые из них из GCP?