Сервисные аккаунты

Учетная запись службы — это учетная запись, связанная с приложением, а не с конечным пользователем. Вам может потребоваться использовать учетную запись службы для аутентификации в Earth Engine, если вы разрабатываете приложение или используете REST API. Узнайте больше о аутентификации с помощью сервисных учетных записей.

Создать учетную запись службы

Сначала создайте проект Google Cloud, если вы еще этого не сделали.

Вы можете управлять учетными записями служб для своего облачного проекта, перейдя в меню Cloud Console ( ) и выбрав IAM & Admin > Сервисные учетные записи . (Выберите проект, если будет предложено.)

Чтобы создать новую учетную запись службы, нажмите ссылку + СОЗДАТЬ СЕРВИСНУЮ АККАУНТ .

Если вы создали проект App Engine, возможно, у вас уже есть учетная запись службы по умолчанию ( учетная запись службы по умолчанию App Engine ) для этого проекта. Если вы настраиваете проект App Engine, для роли сервисного аккаунта выберите «Проект» > «Редактор» .

Создайте закрытый ключ для учетной записи службы.

Если у вас есть учетная запись службы, щелкните меню этой учетной записи ( ), затем «Создать ключ» > JSON . Загрузите файл ключа JSON.

Храните файл ключей в безопасности

Ключевой файл – это специальный файл, который позволяет программам получать доступ к API Google от имени вашей учетной записи службы. Убедитесь, что кто-либо не сможет получить к нему несанкционированный доступ, поскольку они смогут получить доступ к API Google от вашего имени. Никогда не храните свой закрытый ключ в общедоступном месте, например в общей папке или исходном репозитории. Если вы потеряете свой закрытый ключ, вы можете легко отозвать доступ к сервисному аккаунту и создать новый с помощью Cloud Console. Подробности смотрите в этом руководстве .

Зарегистрируйте учетную запись службы, чтобы использовать Earth Engine.

Все учетные записи служб создаются в проекте Cloud, который может быть тем же проектом, который используется для вашего приложения App Engine или виртуальной машины Cloud. Убедитесь, что проект Cloud зарегистрирован для доступа к Earth Engine и что API Earth Engine включен в проекте. Все сервисные учетные записи в проекте с правильными разрешениями будут иметь доступ к Earth Engine, и их не нужно регистрировать отдельно.

Обратите внимание, что регистрация индивидуальной учетной записи службы больше невозможна; сам проект Cloud должен быть зарегистрирован.

Используйте сервисную учетную запись с закрытым ключом

Чтобы пройти аутентификацию в Earth Engine с помощью учетной записи службы:

  1. Создайте и загрузите файл закрытого ключа JSON ( .private-key.json ) для учетной записи службы.
  2. Проверьте следующий код Python там, где вы поместили файл .private-key.json :
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

Если вам удалось выполнить инициализацию без ошибок, ваша учетная запись службы готова к использованию.

Что мне делать, если я получаю ошибку valid_grant?

OAuth2 может быть очень чувствителен к перекосу часов. Если вы уверены, что все настроили правильно, и ваш контакт в Google подтвердил, что учетная запись службы одобрена, проверьте, синхронизированы ли часы вашего компьютера с сетевым временем.

Для систем Ubuntu вызов для синхронизации часов вашего компьютера:

ntpdate ntp.ubuntu.com

Для систем, использующих OS X, откройте «Системные настройки» > «Дата и время» > «Дата и время» (снова) и выберите «Установить дату и время автоматически» .

Использовать учетную запись службы по умолчанию

Если вы используете учетную запись службы по умолчанию , сначала необходимо изменить области доступа виртуальной машины для учетной записи службы Compute Engine, указав «Разрешить полный доступ ко всем API Cloud» . (Если вы используете учетные записи служб по умолчанию в Dataflow или App Engine, этот шаг не обязателен.)

Для аутентификации в Earth Engine с использованием учетной записи службы по умолчанию используйте следующий код:

from google.auth import compute_engine
import ee
credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine'])
ee.Initialize(credentials)

Настройте доступ к REST API

Если учетная запись службы должна выполнять вычисления с использованием REST API, вам необходимо предоставить ей разрешение на уровне проекта , в частности роль средства просмотра ресурсов Earth Engine . В зависимости от конфигурации вашего проекта вам также может потребоваться предоставить учетной записи службы роль потребителя использования службы . См. страницу «Контроль доступа» для получения дополнительной информации о разрешениях проекта, необходимых для использования Earth Engine.