Разница в том, что один - это учетные данные, а другой - стратегия поиска учетных данных.
Учетные данные служебной учетной записи являются рекомендуемым методом авторизации запросов Google API.Эти учетные данные хранятся в файле (JSON или P12).Однако при работе в некоторых службах, таких как Compute Engine, учетные данные автоматически создаются для экземпляра и становятся доступными через сервер метаданных.
Учетные данные приложения по умолчанию (ADC) будут искать учетные данные.
- Если установлена переменная среды
GOOGLE_APPLICATION_CREDENTIALS
, ADC будет использовать файл для учетных данных, на которые указывает переменная. - Если переменная не задана, то при запуске будет использоваться учетная запись службы по умолчанию.в Compute Engine, App Engine, Kubernetes Engine или облачных функциях.
Если на предыдущих двух шагах не удалось найти действительные учетные данные, произойдет сбой АЦП и возникнет ошибка.
Использование средыпеременная для указания учетных данных учетной записи службы:
export GOOGLE_APPLICATION_CREDENTIALS="/mysecretpath/service_account.json"
ADC автоматически загрузит учетные данные из GOOGLE_APPLICATION_CREDENTIALS
Загрузка учетных данных из json (пример Python):
client = storage.Client.from_service_account_json(
'/mysecretpath/service_account.json')
Загрузка учетных данных учетной записи службы по умолчанию в Compute Engine:
from google.auth import compute_engine
from google.cloud import storage
credentials = compute_engine.Credentials()
client = storage.Client(credentials=credentials, project=project)
Загрузка учетной записи службы default учетные данные в App Engine:
from google.auth import app_engine
from google.cloud import storage
credentials = app_engine.Credentials()
client = storage.Client(credentials=credentials, project=project)
и т. д. для Kubernetes, облачных функций и т. д.
ADC использует аналогичные методы для создания учетных данных, используя приведенные выше примеры.
В примере используется стратегия ADC для определения местоположения учетных данных:
from google.cloud import storage
client = storage.Client()
Существует еще один распространенный способ получения учетных данных.Это End User Credentials
, которые получены из OAuth 2.0 Flow
.Эти учетные данные требуют настройки учетных данных клиента Secrets, которые используются для авторизации учетных данных пользователя.Это метод получения учетных данных из учетной записи пользователя, такой как Google Accounts .
Эта ссылка предоставит более подробную информацию.