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

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

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

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

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

Для создания новой учетной записи службы нажмите ссылку + СОЗДАТЬ УЧЕТНУЮ ЗАПИСЬ СЛУЖБЫ .

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

Настройте учетную запись службы для использования Earth Engine.

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

Аутентификация в Earth Engine с использованием учетных данных приложения по умолчанию.

Использование учетных данных по умолчанию для приложений (ADC) — это рекомендуемый способ аутентификации в средах, работающих в автоматическом режиме (например, Cloud Run или Compute Engine), без необходимости ручного управления закрытыми ключами.

import google.auth
import ee

credentials, project_id = google.auth.default()
ee.Initialize(credentials, project='my-ee-project')

Аутентификация с помощью закрытого ключа.

Если вашему приложению требуется аутентификация с использованием закрытого ключа учетной записи службы (не рекомендуется для производственных сред, где можно использовать ADC):

  1. Создайте закрытый ключ для учетной записи службы:
  2. Храните файл ключа в безопасном месте. Файл ключа — это специальный файл, который позволяет программам получать доступ к API Google от имени вашей учетной записи службы. Никогда не храните свой закрытый ключ в общедоступном месте. Если вы потеряете свой закрытый ключ, вы можете отозвать доступ к учетной записи службы и создать новую с помощью консоли Cloud Console. Подробнее см. раздел «Создание и удаление ключей учетных записей служб» .
  3. Протестируйте следующий код на Python, используя файл .private-key.json , в том месте, где он находится:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

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

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

Если вы используете учетную запись службы по умолчанию , сначала необходимо изменить области доступа виртуальной машины для учетной записи службы Compute Engine, установив параметр «Разрешить полный доступ ко всем облачным API» . (Если вы используете учетные записи служб по умолчанию в 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, см. на странице «Контроль доступа» .

Поиск неисправностей

Ошибка: invalid_grant

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

Ошибка: "Указанные области действия не авторизованы" при экспорте в облачное хранилище.

Если вы видите эту ошибку при выполнении задачи в Cloud Run, не указывайте аргумент scopes при создании учетных данных (например, в google.auth.default(scopes=...) ). Указание scopes может повлиять на стандартные разрешения в этой среде.