Учетная запись службы — это учетная запись, связанная с приложением, а не с конечным пользователем. Вам может потребоваться использовать учетную запись службы для аутентификации в 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 с помощью учетной записи службы:
- Создайте и загрузите файл закрытого ключа JSON (
.private-key.json
) для учетной записи службы. - Проверьте следующий код 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.