Autenticare i carichi di lavoro con gli account di servizio

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

In questa pagina viene descritto come utilizzare gli account di servizio per abilitare le app in esecuzione sulle istanze di macchine virtuali (VM) per eseguire l'autenticazione nelle API Google Cloud e autorizzare l'accesso alle risorse.

Per ulteriori informazioni su come Compute Engine utilizza gli account di servizio, consulta la panoramica degli account di servizio.

Prima di iniziare

Creazione di un nuovo account di servizio

Puoi creare e configurare un nuovo account di servizio utilizzando IAM. Dopo aver creato un account, concedi all'account uno o più ruoli IAM, quindi autorizza un'istanza di macchina virtuale a eseguire come quell'account di servizio.

Per creare un nuovo account di servizio:

  1. Crea un nuovo account di servizio come descritto in Creare un account di servizio.

  2. Ricevi l'email dell'account di servizio. Per configurare un'istanza da eseguire come questo account di servizio, devi avere l'email. Verifica l'indirizzo email dell'account di servizio nella console:

    1. Vai alla pagina Account di servizio.

      Vai agli account di servizio

    2. Se richiesto, seleziona un progetto.

    3. Cerca il nuovo account di servizio e prendi nota dell'email dell'account di servizio.

    Di solito, l'email dell'account di servizio deriva dall'ID dell'account di servizio nel formato:

    [SERVICE-ACCOUNT-NAME]@[PROJECT_ID].iam.gserviceaccount.com
    
  3. Concedi i ruoli IAM all'account di servizio. Se non concedi alcun ruolo, l'account di servizio non avrà accesso ad alcun servizio. Per un elenco completo dei ruoli IAM, consulta Informazioni sui ruoli nella documentazione di IAM.

  4. Successivamente, configura un'istanza da eseguire come account di servizio. Segui le istruzioni per configurare un'istanza da eseguire come account di servizio.

Configurazione di una nuova istanza da eseguire come account di servizio

Dopo aver creato un nuovo account di servizio, puoi creare nuove istanze di macchine virtuali da eseguire come account di servizio. Se l'account di servizio si trova in un progetto diverso da quello delle istanze, devi configurare l'account di servizio per una risorsa in un progetto diverso.

Se vuoi assegnare o modificare un account di servizio per un'istanza esistente, consulta l'articolo su come modificare l'account di servizio e gli ambiti di accesso per un'istanza.

Puoi abilitare più istanze di macchine virtuali per utilizzare lo stesso account di servizio, ma un'istanza di macchina virtuale può avere una sola identità di account di servizio. Se assegni lo stesso account di servizio a più istanze di macchine virtuali, le modifiche successive apportate all'account di servizio verranno applicate alle istanze che utilizzano l'account di servizio. Sono incluse le modifiche che apporti ai ruoli IAM concessi all'account di servizio. Ad esempio, se rimuovi un ruolo, tutte le istanze che utilizzano l'account di servizio perderanno le autorizzazioni concesse da tale ruolo.

In genere, puoi semplicemente impostare l'ambito di accesso cloud-platform per consentire l'accesso alla maggior parte delle API Cloud, quindi concedere all'account di servizio solo i ruoli IAM pertinenti. La combinazione degli ambiti di accesso concessi all'istanza della macchina virtuale e dei ruoli IAM concessi all'account di servizio determina la quantità di accesso dell'account di servizio per l'istanza. L'account di servizio può eseguire i metodi API solo se sono consentiti sia dall'ambito di accesso che dai ruoli IAM.

In alternativa, puoi scegliere di impostare ambiti specifici che consentano l'accesso ai particolari metodi API che il servizio chiamerà. Ad esempio, per chiamare il metodo instances.insert è necessaria l'autorizzazione con l'ambito https://www.googleapis.com/auth/compute o l'ambito https://www.googleapis.com/auth/cloud-platform, oltre a un ruolo IAM che concede l'accesso a quel metodo. Puoi impostare l'ambito compute al posto dell'ambito cloud-platform, per concedere al servizio l'accesso ai metodi di chiamata in Compute Engine, ma nessun accesso ai metodi API di chiamata all'esterno di Compute Engine.

Puoi configurare una nuova istanza da eseguire come account di servizio tramite la Google Cloud Console, Google Cloud CLI o direttamente tramite l'API.

Console

  1. Vai alla pagina Crea un'istanza.

    Vai a Creare un'istanza

  2. Specifica i dettagli della VM.

  3. Nella sezione Identity and API access (Identità e accesso API), scegli l'account di servizio che vuoi utilizzare dall'elenco a discesa.

  4. Continua il processo di creazione della VM.

gcloud

Per creare una nuova istanza e autorizzarla all'esecuzione come account di servizio personalizzato utilizzando l'interfaccia a Google Cloud CLI, fornisci l'email dell'account di servizio e gli ambiti di accesso desiderati per l'istanza.

gcloud compute instances create [INSTANCE_NAME] \
    --service-account [SERVICE_ACCOUNT_EMAIL] \
    --scopes [SCOPES,...]

dove:

  • [SERVICE_ACCOUNT_EMAIL] è l'indirizzo email dell'account di servizio che vuoi utilizzare. Ad esempio: my-sa-123@my-project-123.iam.gserviceaccount.com. Se non sai di che tipo di email si tratta, scopri come ricevere un'email dell'account di servizio.
  • [INSTANCE_NAME] è il nome dell'istanza.
  • [SCOPES] è un elenco separato da virgole di URI dell'ambito completi o alias di ambito forniti nella descrizione per il flag --scopes.

Ad esempio:

gcloud compute instances create example-vm \
    --service-account 123-my-sa@my-project-123.iam.gserviceaccount.com \
    --scopes https://www.googleapis.com/auth/cloud-platform

L'interfaccia a riga di comando gcloud offre anche alias di ambito al posto degli URI più lunghi. Ad esempio, l'ambito dell'accesso completo a Cloud Storage è https://www.googleapis.com/auth/devstorage.full_control. L'alias di questo ambito è storage-full.

Puoi visualizzare un elenco di ambiti e alias di ambito nella pagina instances create nella descrizione del flag --scopes. La guida per il comando instances create elenca anche questi ambiti e alias:

gcloud compute instances create --help

Specifica l'alias come faresti per l'URI di ambito normale. Ad esempio:

gcloud compute instances create [INSTANCE_NAME] \
    --service-account [SERVICE_ACCOUNT_EMAIL] \
    --scopes cloud-platform

API

Nell'API, crea una richiesta standard per creare un'istanza, ma includere la proprietà serviceAccounts. Ottieni l'indirizzo email del tuo account di servizio e includilo nella proprietà email, insieme agli ambiti di accesso desiderati per l'istanza.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances

{
  "machineType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
  "name": "[INSTANCE_NAME]",
  "serviceAccounts": [
   {
    "email": "[SERVICE_ACCOUNT_EMAIL]",
    "scopes": ["https://www.googleapis.com/auth/cloud-platform"]
   }
  ],
  ...
}

Dopo aver configurato l'esecuzione di un'istanza come account di servizio, un'applicazione in esecuzione sull'istanza può utilizzare uno dei seguenti metodi per l'autenticazione:

Autenticazione delle applicazioni mediante le credenziali dell'account di servizio

Dopo aver configurato l'esecuzione di un'istanza come account di servizio, puoi utilizzare le credenziali dell'account di servizio per autenticare le applicazioni in esecuzione sull'istanza.

Autenticazione delle applicazioni con una libreria client

Le librerie client possono utilizzare le credenziali predefinite dell'applicazione per eseguire l'autenticazione con le API di Google e inviare richieste a tali API. Credenziali predefinite dell'applicazione consentono alle applicazioni di ottenere automaticamente le credenziali da più origini in modo da poter testare l'applicazione in locale e quindi eseguirne il deployment in un'istanza di Compute Engine senza modificare il codice dell'applicazione.

Per informazioni sulla configurazione Credenziali predefinite dell'applicazione, consulta Fornire le credenziali alle credenziali predefinite dell'applicazione.

In questo esempio viene utilizzata la libreria client di Python per eseguire l'autenticazione ed effettuare una richiesta all'API Cloud Storage per elencare i bucket in un progetto. L'esempio utilizza la procedura seguente:

  1. Ottieni le credenziali di autenticazione necessarie per l'API Cloud Storage e inizializza il servizio Cloud Storage con il metodo build() e le credenziali.
  2. Elenca i bucket in Cloud Storage.

Puoi eseguire questo esempio su un'istanza che ha accesso alla gestione dei bucket in Cloud Storage.


import argparse

import googleapiclient.discovery

def create_service():
    # Construct the service object for interacting with the Cloud Storage API -
    # the 'storage' service, at version 'v1'.
    # Authentication is provided by application default credentials.
    # When running locally, these are available after running
    # `gcloud auth application-default login`. When running on Compute
    # Engine, these are available from the environment.
    return googleapiclient.discovery.build('storage', 'v1')

def list_buckets(service, project_id):
    buckets = service.buckets().list(project=project_id).execute()
    return buckets

def main(project_id):
    service = create_service()
    buckets = list_buckets(service, project_id)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud Project ID.')

    args = parser.parse_args()

    main(args.project_id)

Autenticazione delle applicazioni direttamente con i token di accesso

Per la maggior parte delle applicazioni, puoi eseguire l'autenticazione utilizzando le credenziali predefinite dell'applicazione, che trovano le credenziali e gestiscono i token per te. Tuttavia, se l'applicazione richiede di fornire un token di accesso OAuth2, Compute Engine ti consente di ottenere un token di accesso dal server dei metadati da utilizzare nell'applicazione.

Esistono diverse opzioni per ottenere e utilizzare questi token di accesso per autenticare le tue applicazioni. Ad esempio, puoi utilizzare curl per creare una richiesta semplice o usare un linguaggio di programmazione come Python per avere maggiore flessibilità.

URL

Per utilizzare curl per richiedere un token di accesso e inviare una richiesta a un'API:

  1. Nell'istanza in cui viene eseguita l'applicazione, invia una query al server di metadati per cercare un token di accesso eseguendo il comando seguente:

    $ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \
    -H "Metadata-Flavor: Google"

    La richiesta restituisce una risposta simile alla seguente:

    {
          "access_token":"ya29.AHES6ZRN3-HlhAPya30GnW_bHSb_QtAS08i85nHq39HE3C2LTrCARA",
          "expires_in":3599,
          "token_type":"Bearer"
     }

    Per le richieste API devi includere il valore access_token, non l'intera risposta. Se hai installato il processore JSON della riga di comando jq, puoi utilizzare il comando seguente per estrarre il valore del token di accesso dalla risposta:

    $ ACCESS_TOKEN=`curl \
    "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \
    -H "Metadata-Flavor: Google" | jq -r '.access_token'`
    
  2. Copia il valore della proprietà access_token dalla risposta e utilizzalo per inviare richieste all'API. Ad esempio, la richiesta seguente stampa un elenco di istanze nel progetto da una determinata zona:

    $ curl https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances \
    -H "Authorization":"Bearer [ACCESS_TOKEN]"
    

    dove:

    • [PROJECT_ID] è l'ID progetto per questa richiesta.
    • [ZONE] è la zona da cui elencare le istanze.
    • [ACCESS_TOKEN] è il valore del token di accesso ricevuto nel passaggio 1.

    Per informazioni sui parametri che puoi impostare nella richiesta, consulta la documentazione relativa ai parametri.

Python

Questo esempio mostra come richiedere un token per accedere all'API Cloud Storage in un'applicazione Python. L'esempio utilizza la procedura seguente:

  1. Richiedere un token di accesso al server di metadati.
  2. Estrai il token di accesso dalla risposta del server.
  3. Utilizza il token di accesso per effettuare una richiesta a Cloud Storage.
  4. Se la richiesta ha esito positivo, lo script stampa la risposta.

import argparse

import requests

METADATA_URL = 'http://metadata.google.internal/computeMetadata/v1/'
METADATA_HEADERS = {'Metadata-Flavor': 'Google'}
SERVICE_ACCOUNT = 'default'

def get_access_token():
    url = '{}instance/service-accounts/{}/token'.format(
        METADATA_URL, SERVICE_ACCOUNT)

    # Request an access token from the metadata server.
    r = requests.get(url, headers=METADATA_HEADERS)
    r.raise_for_status()

    # Extract the access token from the response.
    access_token = r.json()['access_token']

    return access_token

def list_buckets(project_id, access_token):
    url = 'https://www.googleapis.com/storage/v1/b'
    params = {
        'project': project_id
    }
    headers = {
        'Authorization': 'Bearer {}'.format(access_token)
    }

    r = requests.get(url, params=params, headers=headers)
    r.raise_for_status()

    return r.json()

def main(project_id):
    access_token = get_access_token()
    buckets = list_buckets(project_id, access_token)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud project ID.')

    args = parser.parse_args()

    main(args.project_id)

I token di accesso scadono dopo un breve periodo di tempo. Il server metadati memorizza i token di accesso nella cache finché non hanno a disposizione 5 minuti di tempo rimanente prima che scadano. Puoi richiedere nuovi token tutte le volte che vuoi, ma le tue applicazioni devono avere un token di accesso valido per consentire l'esecuzione delle chiamate API.

Autenticazione degli strumenti su un'istanza mediante un account di servizio

Alcune applicazioni potrebbero utilizzare comandi degli strumenti gcloud e gsutil, che sono inclusi per impostazione predefinita nella maggior parte delle immagini di Compute Engine. Questi strumenti riconoscono automaticamente l'account di servizio di un'istanza e le autorizzazioni pertinenti concesse all'account di servizio. In particolare, se concedi i ruoli corretti all'account di servizio, puoi utilizzare gli strumenti gcloud e gsutil delle tue istanze senza dover utilizzare gcloud auth login.

Questo riconoscimento dell'account di servizio avviene automaticamente e si applica solo agli strumenti gcloud e gsutil inclusi nell'istanza. Se crei nuovi strumenti o aggiungi strumenti personalizzati, devi autorizzare l'applicazione utilizzando una libreria client o utilizzando i token di accesso direttamente nell'applicazione.

Per sfruttare il riconoscimento automatico degli account di servizio, concedi i ruoli IAM appropriati all'account di servizio e configura un'istanza da eseguire come account di servizio. Ad esempio, se concedi a un account di servizio il ruolo roles/storage.objectAdmin, lo strumento gsutil può gestire e accedere automaticamente agli oggetti Cloud Storage.

Analogamente, se abiliti roles/compute.instanceAdmin.v1 per l'account di servizio, lo strumento gcloud compute può gestire automaticamente le istanze.

Modifica dell'account di servizio e degli ambiti di accesso per un'istanza

Se vuoi eseguire la VM con un'identità diversa o se ritieni che l'istanza abbia bisogno di un insieme di ambiti diverso per chiamare le API richieste, puoi modificare l'account di servizio e gli ambiti di accesso di un'istanza esistente. Ad esempio, puoi modificare gli ambiti di accesso per concedere l'accesso a una nuova API, puoi rimuovere l'account di servizio e gli ambiti di accesso per impedire a una VM di accedere ai servizi Google Cloud oppure puoi cambiare una VM in modo che venga eseguita come account di servizio che hai creato al posto dell'account di servizio predefinito di Compute Engine. Tuttavia, Google consiglia di utilizzare criteri IAM granulari anziché fare affidamento sugli ambiti di accesso per controllare l'accesso alle risorse per l'account di servizio.

Per modificare l'account di servizio e gli ambiti di accesso di un'istanza, è necessario arrestare temporaneamente l'istanza. Per arrestare l'istanza, leggi la documentazione sull'arresto di un'istanza. Dopo aver modificato l'account di servizio o gli ambiti di accesso, ricorda di riavviare l'istanza. Utilizza uno dei seguenti metodi per modificare l'account di servizio o gli ambiti di accesso dell'istanza arrestata.

Console

  1. Vai alla pagina Istanze VM.

    Vai alle istanze VM

  2. Fai clic sul nome dell'istanza VM per cui vuoi modificare l'account di servizio.

  3. Se l'istanza non è arrestata, fai clic su Arresta. Attendi l'arresto dell'istanza.

  4. Successivamente, fai clic su Modifica.

  5. Scorri verso il basso fino alla sezione Account di servizio.

  6. Dall'elenco a discesa, seleziona l'account di servizio da assegnare all'istanza.

    • Se scegli l'account di servizio predefinito, puoi modificarne gli ambiti di accesso nella console Google Cloud.
      • Per modificare gli ambiti, nella sezione Ambiti di accesso, seleziona Imposta l'accesso per ogni API e imposta gli ambiti appropriati per le tue esigenze.
      • Se non hai la certezza degli ambiti di accesso corretti da impostare, scegli Consenti l'accesso completo a tutte le API Cloud e assicurati di limitare l'accesso impostando i ruoli IAM nell'account di servizio.
    • Se scegli un altro account di servizio, per impostazione predefinita l'ambito di accesso della VM è l'ambito cloud-platform. Puoi modificare l'ambito utilizzando l'interfaccia a riga di comando gcloud o l'API Compute Engine.
    • Per ulteriori informazioni sull'impostazione degli ambiti di accesso, consulta le best practice.
  7. Fai clic su Salva per salvare le modifiche.

gcloud

Usa il comando instances set-service-account e fornisci il nome dell'istanza, l'indirizzo email dell'account di servizio e gli ambiti desiderati. Per ulteriori informazioni sull'impostazione degli ambiti di accesso, consulta le best practice.

gcloud compute instances set-service-account [INSTANCE_NAME] \
   [--service-account [SERVICE_ACCOUNT_EMAIL] | --no-service-account] \
   [--no-scopes | --scopes [SCOPES,...]]

dove:

  • [SERVICE_ACCOUNT_EMAIL] è l'indirizzo email dell'account di servizio che vuoi utilizzare. Ad esempio: my-sa-123@my-project-123.iam.gserviceaccount.com.
  • [INSTANCE_NAME] è il nome dell'istanza.
  • [SCOPES] è un elenco separato da virgole di URI dell'ambito completi o alias di ambito forniti nella descrizione per il flag --scopes. Se vuoi rimuovere tutti gli ambiti per l'istanza, utilizza il flag --no-scopes.

Ad esempio, il comando seguente assegna l'account di servizio my-sa-123@my-project-123.iam.gserviceaccount.com a un'istanza denominata example-instance e imposta gli ambiti di accesso su quell'istanza per consentire l'accesso in lettura/scrittura a Compute Engine e l'accesso in sola lettura a Cloud Storage:

gcloud compute instances set-service-account example-instance \
   --service-account my-sa-123@my-project-123.iam.gserviceaccount.com \
   --scopes compute-rw,storage-ro

API

Nell'API, esegui una richiesta POST al metodo setServiceAccount:

https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setServiceAccount

dove:

  • [PROJECT_ID] è l'ID progetto per questa richiesta.
  • [ZONE] è la zona a cui appartiene questa istanza.
  • [INSTANCE_NAME] è il nome dell'istanza.

Nel corpo della richiesta, fornisci l'indirizzo email dell'account di servizio e gli URI dell'ambito desiderati per l'istanza. Per ulteriori informazioni sull'impostazione degli ambiti di accesso, consulta le best practice.

{
  "email": "[SERVICE_ACCOUNT_EMAIL]",
  "scopes": [
    "[SCOPE_URI]",
    "[SCOPE_URI]",
    ...
  ]
}

Ad esempio, la richiesta seguente utilizza l'email dell'account di servizio my-sa-123@my-project-123.iam.gserviceaccount.com e imposta un ambito Cloud Storage e BigQuery:

{
  "email": "my-sa-123@my-project-123.iam.gserviceaccount.com",
  "scopes": [
    "https://www.googleapis.com/auth/bigquery",
    "https://www.googleapis.com/auth/devstorage.read_only"
  ]
}

Ottenere un'email per l'account di servizio

Per identificare un account di servizio, devi disporre dell'email dell'account. Ottieni un'email dell'account di servizio tramite una delle seguenti opzioni:

Console

  1. Vai alla pagina Account di servizio.

    Vai agli account di servizio

  2. Se richiesto, seleziona un progetto. Nella pagina Account di servizio sono elencati tutti gli account di servizio per il progetto e i loro indirizzi email.

gcloud

Utilizza il comando gcloud compute instances describe della tua macchina locale:

gcloud compute instances describe [INSTANCE_NAME] --format json
{
      ...
      "serviceAccounts":[
         {
            "email":"123845678986-compute@developer.gserviceaccount.com",
            "scopes":[
               "https://www.googleapis.com/auth/devstorage.full_control"
            ]
         }
      ]
      ...
   }

Se l'istanza non utilizza un account di servizio, ricevi una risposta senza la proprietà serviceAccounts.

Server metadati

Esegui una query sul server di metadati dall'istanza stessa. Fai una richiesta a http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/:

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" \
-H "Metadata-Flavor: Google"

Se hai abilitato uno o più account di servizio quando hai creato l'istanza, questo comando curl restituisce un output simile al seguente:

123845678986-compute@developer.gserviceaccount.com/
default/

Se l'istanza non utilizza un account di servizio, ricevi una risposta vuota.

API

Fai una richiesta all'API Service Accounts.

Utilizzo dell'account di servizio predefinito di Compute Engine

Se hai dimestichezza con l'account di servizio predefinito di Compute Engine e vuoi utilizzare le credenziali fornite da quest'ultimo invece di creare nuovi account di servizio, puoi concedere i ruoli IAM all'account di servizio predefinito.

Per impostazione predefinita, tutte le istanze Compute Engine possono essere eseguite come account di servizio predefinito. Quando crei un'istanza utilizzando Google Cloud CLI o Google Cloud Console e ometti tutte le specifiche dell'account di servizio, l'account di servizio predefinito viene assegnato all'istanza.

Prima di assegnare i ruoli IAM all'account di servizio predefinito, tieni presente che:

  • La concessione di un ruolo IAM all'account di servizio predefinito influisce su tutte le istanze in esecuzione come account di servizio predefinito. Ad esempio, se concedi all'account di servizio predefinito il ruolo roles/storage.objectAdmin, tutte le istanze in esecuzione come account di servizio predefinito con gli ambiti di accesso richiesti avranno le autorizzazioni concesse dal ruolo roles/storage.objectAdmin. Analogamente, se limiti l'accesso omettendo determinati ruoli, la modifica influirà su tutte le istanze in esecuzione come account di servizio predefinito.

  • Devi revocare l'autorizzazione di editor del progetto per l'account di servizio. L'account di servizio predefinito viene aggiunto ai progetti per impostazione predefinita come editor di progetto. Per utilizzare i ruoli IAM, devi revocare l'autorizzazione dell'editor di progetto.

In caso di dubbi sulla concessione dei ruoli IAM all'account di servizio predefinito, crea un nuovo account di servizio.

Per concedere un ruolo IAM all'account di servizio predefinito:

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai a IAM

  2. Se richiesto, seleziona un progetto.

  3. Cerca l'account di servizio denominato Account di servizio predefinito di Compute Engine.

  4. Nella colonna Ruoli, espandi il menu a discesa per l'account di servizio predefinito di Compute Engine.

  5. Rimuovi l'accesso come Editor e salva le modifiche.

  6. Successivamente, concedi ruoli IAM all'account di servizio.

Qualsiasi istanza di macchina virtuale attualmente in esecuzione come account di servizio predefinito avrà accesso ad altre API Google Cloud in base ai ruoli IAM che hai concesso all'account.

Se vuoi configurare una nuova istanza da eseguire come account di servizio predefinito, segui queste istruzioni:

Console

  1. Vai alla pagina Crea un'istanza.

    Vai a Creare un'istanza

  2. Specifica i dettagli della VM.

  3. Nella sezione Identità e accesso API, scegli Account di servizio predefinito Compute Engine dall'elenco a discesa Account di servizio.

  4. Continua il processo di creazione della VM.

gcloud

Per creare una nuova istanza e autorizzarla ad accedere a tutti i servizi di Google Cloud utilizzando l'account di servizio predefinito:

gcloud compute instances create [INSTANCE_NAME] \
     --scopes cloud-platform

API

Nell'API, crea una richiesta standard per creare un'istanza, ma includere la proprietà serviceAccounts. Ottieni il tuo ID account di servizio predefinito e includilo come email dell'account di servizio. Quindi, imposta uno o più ambiti nella proprietà scopes.

POST https://compute.googleapis.com/compute/v1/projects/zones/[ZONE]/instances

{
  "machineType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
  "name": "[INSTANCE_NAME]",
  "serviceAccounts": [
   {
    "email": "[DEFAULT_SERVICE_ACCOUNT_EMAIL]",
    "scopes": ["https://www.googleapis.com/auth/cloud-platform"]
   }
  ],
  ...
}

Best practice

  • Google consiglia di eseguire ogni istanza VM che deve chiamare un'API Google come account di servizio con le autorizzazioni minime necessarie per eseguire la VM.
  • Segui queste istruzioni per configurare gli account di servizio per le tue VM:

    1. Crea un nuovo account di servizio anziché utilizzare quello predefinito di Compute Engine.
    2. Concedi i ruoli IAM all'account di servizio solo per le risorse di cui ha bisogno.
    3. Configura la VM da eseguire come nuovo account di servizio che hai creato.
    4. Concedi alla tua VM l'ambito https://www.googleapis.com/auth/cloud-platform per consentire l'accesso alla maggior parte delle API di Google Cloud, in modo che le autorizzazioni di IAM della VM siano determinate completamente dai ruoli IAM che hai concesso all'account di servizio della VM. L'account di servizio può eseguire solo metodi API consentiti sia dall'ambito di accesso che dai ruoli IAM specifici dell'account di servizio.
  • Limita i privilegi degli account di servizio e controlla regolarmente le autorizzazioni dell'account di servizio per assicurarti che siano aggiornate.

  • Elimina gli account di servizio con attenzione. Assicurati che le tue applicazioni critiche non utilizzino più un account di servizio prima di eliminarlo. Se non hai la certezza che sia in uso un account di servizio, ti consigliamo di disattivarlo anziché eliminarlo. Gli account di servizio disattivati possono essere riattivati se ancora necessari.

  • Riduci i rischi per la sicurezza del tuo account di servizio. Per ulteriori informazioni, consulta le best practice per l'utilizzo degli account di servizio.

Passaggi successivi

Provalo

Se non hai mai utilizzato Google Cloud, crea un account per valutare le prestazioni di Compute Engine in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Prova Compute Engine gratuitamente