Начиная с этого:
- пользователи имеют свои собственные учетные записи пользователей Google, которые настраиваются локально с помощью входа в систему gcloud
- приложение использует API-интерфейсы gcp обычным способом - по умолчанию он будет искать GOOGLE_APPLICATION_CREDENTIALS, роли GCE, служебные учетные записи или использовать учетные данные, настроенные для локальных пользователей gcloud
- , когда пользователи запускают его локально, он использует свою собственную учетную запись, при запуске в gcp он будет использовать служебную учетную запись
- У учетной записи пользователя также есть доступ к олицетворению учетной записи службы. Поэтому, когда приложение запускается локально, пользователи сначала делают
gcloud config set
auth/impersonate_service_account [SA_FULL_EMAIL]
, и оно может запускаться с теми же кредитами, что и в среде dev - без необходимости загружать какие-либо ключи
Теперь это работает. НО я также хочу сделать возможным локально запускать приложения в контейнерах. Используя docker / docker -compose / minikube / et c, как я могу выдать себя за служебную учетную запись?
контейнеру потребуется доступ к кредитам gcloud , и ему потребуется также настроить олицетворение в сеансе, прежде чем приложение каким-либо образом запустится. Это не должно быть сделано в коде - приложение должно просто использовать API-интерфейсы как обычно без необходимости делать что-то иначе.
РЕДАКТИРОВАТЬ: когда приложения запускаются в учетных записях / проектах dev или prod GCP, которые они запускают в контексте служебная учетная запись с правильно заданными правами доступа для указанного приложения c. Собственные учетные записи разработчиков имеют широкие права доступа к среде разработки. При локальном запуске полезно запускать с той же учетной записью службы, с которой приложение запускается в среде разработчика, а не с собственной учетной записью разработчика