Как настроить ключи служебной учетной записи в контейнере Cloud Run? - PullRequest
0 голосов
/ 20 апреля 2020

Я создал бэкэнд в Go, который использует Secrets Manager, и развернул его в Cloud Run. Проблема состоит в том, что API-интерфейсу Secret Manager требуется учетная запись учетной записи службы json file для указания, и это работает на моем локальном компьютере, потому что я просто указываю путь к файлу в переменной среды GOOGLE_APPLICATION_CREDENTIALS, но я не не имеет такого же удобства в среде Cloud Run. Как мой бэкэнд в Cloud Run определит свою переменную окружения GOOGLE_APPLICATION_CREDENTIALS, так сказать?

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Согласно официальной документации

Настройка аутентификации для серверных производственных приложений

Если переменная среды не задана, AD C использует учетную запись службы по умолчанию, которую обеспечивают Compute Engine, Google Kubernetes Engine, Облачный запуск , App Engine и Облачные функции для приложений, работающих на этих службах.

Поэтому для При доступе к Secret Manager из Cloud Run, учетные данные приложения по умолчанию (AD C) будут использовать служебную учетную запись по умолчанию Cloud Run.

EDIT

По умолчанию облачный запуск использует compure engine служебная учетная запись PROJECT_NUMBER-compute@developer.gserviceaccount.com с ролью EDITOR. У вас есть 2 варианта: либо использовать учетную запись службы по умолчанию, либо развернуть облако, используя учетную запись службы не по умолчанию, которую вы создали с ролью Secret Manager Admin.

0 голосов
/ 20 апреля 2020

В дополнение к отличному ответу @ marian.vladoi, в двух словах, для доступа к GCP API (в вашем случае Secret Manager API) вам нужно сделать две вещи:

  1. Разверните приложение Cloud Run с указанной c учетной записью службы, используя параметр --service-account (или эквивалент пользовательского интерфейса).

  2. Дайте этой учетной записи службы разрешения на действия (в данном случае, для доступа к секрету).

Внутри контейнера Cloud Run (или приложения GKE, приложения Cloud Run, приложения Cloud Functions и т. д. c.) вам не нужно указывать ключ с GOOGLE_APPLICATION_CREDENTIALS. Необходимые учетные данные автоматически получаются во время работы в Google Cloud в любой клиентской библиотеке GCP.

...