Account di servizio

Un account di servizio è un account associato a un'applicazione anziché a un utente finale. Potresti dover utilizzare un account di servizio per autenticarti in Earth Engine se stai sviluppando un'app o utilizzi l'API REST. Scopri di più sull'autenticazione con gli account di servizio.

Crea un account di servizio

Innanzitutto, crea un progetto Google Cloud, se non l'hai ancora fatto.

Per gestire gli account di servizio per il tuo progetto Cloud, vai al menu della console Cloud () e seleziona IAM e amministrazione > Account di servizio. Scegli il progetto, se richiesto.

Per creare un nuovo account di servizio, fai clic sul link + CREA ACCOUNT DI SERVIZIO.

Se hai creato un progetto App Engine, potresti già avere un account di servizio predefinito (account di servizio predefinito di App Engine) per quel progetto. Se stai configurando un progetto App Engine, per il Ruolo dell'account di servizio, scegli Progetto > Editor.

Crea una chiave privata per l'account di servizio

Dopo aver creato un account di servizio, fai clic sul menu dell'account (), quindi su Crea chiave > JSON. Scarica il file della chiave JSON.

Tieni al sicuro il file della chiave

Il file della chiave è un file speciale che consente ai programmi di accedere alle API di Google per conto del tuo account di servizio. Assicurati che non sia possibile per nessuno ottenere accesso non autorizzato, in quanto potrebbe accedere alle API di Google per tuo conto. Non conservare mai la chiave privata in un luogo pubblico, come una cartella condivisa o un repository di origine. Se smarrisci la chiave privata, puoi revocare facilmente l'accesso a un account di servizio e crearne uno nuovo utilizzando la console Cloud. Per informazioni dettagliate, consulta questa guida.

Registra l'account di servizio per utilizzare Earth Engine

Tutti gli account di servizio vengono creati all'interno di un progetto Cloud, che può essere lo stesso progetto utilizzato per l'app App Engine o la VM Cloud. Assicurati che il progetto Cloud sia registrato per accedere a Earth Engine e che l'API Earth Engine sia abilitata nel progetto. Tutti gli account di servizio del progetto con le autorizzazioni corrette avranno accesso a Earth Engine e non è necessario registrarli separatamente.

Tieni presente che non è più possibile registrare singoli account di servizio. Deve essere registrato il progetto Cloud stesso.

Utilizzare un account di servizio con una chiave privata

Per autenticarti in Earth Engine utilizzando un account di servizio:

  1. Crea e scarica un file della chiave privata JSON (.private-key.json) per l'account di servizio.
  2. Prova il seguente codice Python da dove hai inserito il file .private-key.json:
    import ee
    service_account = 'my-service-account@...gserviceaccount.com'
    credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json')
    ee.Initialize(credentials)

Se riesci a eseguire l'inizializzazione senza errori, il tuo account di servizio è pronto per l'uso.

Cosa devo fare se ricevo un errore invalid_grant?

OAuth2 può essere molto sensibile al disallineamento del clock. Se hai la certezza di aver impostato tutto correttamente e il tuo contatto Google ha verificato che l'account di servizio sia stato approvato, controlla se l'orologio del computer è sincronizzato con l'ora di rete.

Per i sistemi Ubuntu, la chiamata per sincronizzare l'orologio del computer è:

ntpdate ntp.ubuntu.com

Per i sistemi che utilizzano OS X, apri Preferenze di sistema > Data e ora > Data e ora (di nuovo) e seleziona Imposta data e ora automaticamente.

Utilizzare un account di servizio predefinito

Se utilizzi un account di servizio predefinito, devi prima modificare gli ambiti di accesso della VM per l'account di servizio Compute Engine in "Consenti accesso completo a tutte le API Cloud". Se utilizzi account di servizio predefiniti in Dataflow o App Engine, questo passaggio non è necessario.

Per eseguire l'autenticazione in Earth Engine utilizzando un account di servizio predefinito, utilizza il seguente codice:

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

Configurare l'accesso all'API REST

Se l'account di servizio deve eseguire calcoli utilizzando l'API REST, devi concedergli l'autorizzazione a livello di progetto, in particolare il ruolo Visualizzatore risorse Earth Engine. A seconda della configurazione del progetto, potrebbe essere necessario anche assegnare all'account di servizio il ruolo Consumatore di utilizzo del servizio. Per ulteriori informazioni sulle autorizzazioni del progetto richieste per utilizzare Earth Engine, consulta la pagina Controllo dell'accesso.