После некоторого копания и частично благодаря @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, который использует приложение.