Comptes de service

Un compte de service est un compte associé à une application plutôt qu'à un utilisateur final. Vous devrez peut-être utiliser un compte de service pour vous authentifier auprès d'Earth Engine si vous développez une application ou si vous utilisez l'API REST. En savoir plus sur l'authentification avec des comptes de service

Créer un compte de service

Commencez par créer un projet Google Cloud si vous ne l'avez pas déjà fait.

Pour gérer les comptes de service de votre projet Cloud, accédez au menu Cloud Console (), puis sélectionnez IAM et administration > Comptes de service. (Choisissez le projet si vous y êtes invité.)

Pour créer un compte de service, cliquez sur le lien + CRÉER UN COMPTE DE SERVICE.

Si vous avez créé un projet App Engine, vous disposez peut-être déjà d'un compte de service par défaut (compte de service App Engine par défaut) pour ce projet. Si vous configurez un projet App Engine, pour le rôle du compte de service, sélectionnez Project > Editor (Projet > Éditeur).

Créer une clé privée pour le compte de service

Une fois que vous avez un compte de service, cliquez sur le menu de ce compte (), puis sur Créer une clé > JSON. Téléchargez le fichier de clé JSON.

Protéger votre fichier de clé

Le fichier de clé est un fichier spécial qui permet aux programmes d'accéder aux API Google au nom de votre compte de service. Assurez-vous que personne ne peut y accéder de manière non autorisée, car il pourrait accéder aux API Google en votre nom. Ne stockez jamais votre clé privée dans un emplacement public, comme un dossier partagé ou un dépôt source. Si vous égarez votre clé privée, vous pouvez facilement révoquer l'accès à un compte de service et en créer un autre à l'aide de la console Cloud. Pour en savoir plus, consultez ce guide.

Enregistrer le compte de service pour utiliser Earth Engine

Tous les comptes de service sont créés dans un projet Cloud, qui peut être le même que celui utilisé pour votre application App Engine ou votre VM Cloud. Assurez-vous que le projet Cloud est enregistré pour accéder à Earth Engine et que l'API Earth Engine est activée dans le projet. Tous les comptes de service du projet disposant des autorisations appropriées auront accès à Earth Engine, et il n'est pas nécessaire de les enregistrer séparément.

Notez que l'enregistrement individuel d'un compte de service n'est plus possible. Le projet Cloud lui-même doit être enregistré.

Utiliser un compte de service avec une clé privée

Pour vous authentifier sur Earth Engine à l'aide d'un compte de service:

  1. Créez et téléchargez un fichier de clé privée JSON (.private-key.json) pour le compte de service.
  2. Testez le code Python suivant à partir de l'emplacement où vous avez placé le fichier .private-key.json:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

Si vous pouvez l'initialiser sans erreur, votre compte de service est prêt à l'emploi.

Que faire si je reçois une erreur invalid_grant ?

OAuth2 peut être très sensible à la variation d'horloge. Si vous êtes certain d'avoir tout configuré correctement et que votre contact Google a vérifié que le compte de service a été approuvé, vérifiez si l'horloge de votre ordinateur est synchronisée avec l'heure réseau.

Pour les systèmes Ubuntu, l'appel permettant de synchroniser l'horloge de votre ordinateur est le suivant:

ntpdate ntp.ubuntu.com

Pour les systèmes utilisant OS X, ouvrez Préférences système > Date et heure > Date et heure (à nouveau) et sélectionnez Définir la date et l'heure automatiquement.

Utiliser un compte de service par défaut

Si vous utilisez un compte de service par défaut, vous devez d'abord modifier les niveaux d'accès de la VM pour le compte de service Compute Engine afin de définir "Autoriser l'accès complet à l'ensemble des API Cloud". (Si vous utilisez des comptes de service par défaut dans Dataflow ou App Engine, cette étape n'est pas nécessaire.)

Pour vous authentifier auprès d'Earth Engine à l'aide d'un compte de service par défaut, utilisez le code suivant:

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

Configurer l'accès à l'API REST

Si le compte de service doit effectuer des calculs à l'aide de l'API REST, vous devez lui accorder une autorisation au niveau du projet, en particulier le rôle de visionneuse de ressources Earth Engine. Selon la configuration de votre projet, vous devrez peut-être également attribuer au compte de service le rôle Consommateur de Service Usage. Pour en savoir plus sur les autorisations de projet requises pour utiliser Earth Engine, consultez la page Contrôle des accès.