Google Cloud - Как аутентифицировать пользователя вместо учетной записи службы в коде приложения? - PullRequest
0 голосов
/ 05 марта 2020

Я могу авторизовать учетные записи служб, создав и загрузив учетные данные. json в консоли G C. Но эта опция недоступна для реальных учетных записей пользователей. Моя учетная запись пользователя имеет определенные роли, которые я хотел бы использовать в приложении, и должна авторизоваться под этой учетной записью. Как я могу go об этом? Есть ли способ загрузить аналогичный файл creds. json для учетных записей пользователей?

1 Ответ

2 голосов
/ 07 марта 2020

После некоторого копания и частично благодаря @JohnHanley мне удалось использовать библиотеку oauth Google-cloud для аутентификации моего приложения от имени пользователя-пользователя, у которого были права:

from google.cloud import secretmanager_v1beta1 as secretmanager
from google_auth_oauthlib import flow

SecretManagerAdminCreds = 'credentials.json'
LAUNCH_BROWSER = True


class SecretManagerAdmin:
    def __init__(self, project_id: str = "gcp_project_id",
                 scopes: list = ['https://www.googleapis.com/auth/cloud-platform']):
        self._scopes = scopes
        self._project_id = project_id

        appflow = flow.InstalledAppFlow.from_client_secrets_file(SecretManagerAdminCreds, scopes=self._scopes)

        if LAUNCH_BROWSER:
            appflow.run_local_server()
        else:
            appflow.run_console()

        authed_creds = appflow.credentials

        self.client = secretmanager.SecretManagerServiceClient(credentials=authed_creds)

Когда Я создаю экземпляр моего класса SecretManagerAdmin, запускается браузер и просит пользователя войти в систему Google и подтвердить разрешения для приложения, а также возвращает второй набор учетных данных, которые затем используются для создания экземпляра клиента Secretmanager, который использует приложение.

...