Modifica il service account collegato


Questo documento spiega come configurare una macchina virtuale (VM) esistente per utilizzare un account di servizio diverso. Un account di servizio è un particolare tipo di account utilizzato in genere da un'applicazione o da un workload di calcolo per effettuare chiamate API autorizzate.

I service account sono necessari per gli scenari in cui un workload, ad esempio un'applicazione personalizzata, deve accedere alle risorse Google Cloud o eseguire azioni senza il coinvolgimento dell'utente finale. Per ulteriori informazioni su quando utilizzare i service account, consulta Best practice per l'utilizzo dei service account.

Se hai applicazioni che devono effettuare chiamate alle API di Google Cloud , Google consiglia di collegare un account di servizio gestito dall'utente alla VM su cui è in esecuzione l'applicazione o il workload. Poi, concedi al account di servizio i ruoli IAM, che danno al account di servizio e, per estensione, alle applicazioni in esecuzione sulla VM, l'accesso alle risorseGoogle Cloud .

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. REST

        Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare gli account di servizio sulla VM, chiedi all'amministratore di concederti il ruolo IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) sulla VM o sul progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per configurare i service account sulla VM. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per configurare i service account sulla VM sono necessarie le seguenti autorizzazioni:

  • compute.instances.setServiceAccount
  • compute.instances.stop
  • compute.instances.start

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Panoramica

Ti consigliamo di configurare i service account per le tue VM come segue:

  1. Crea un nuovo account di servizio gestito dall'utente anziché utilizzare il account di servizio predefinito di Compute Engine e concedi a questo account di servizio i ruoli IAM solo per le risorse e le operazioni di cui ha bisogno.
  2. Collega il account di servizio alla tua VM.
  3. Imposta l'ambito della piattaforma cloud (https://www.googleapis.com/auth/cloud-platform) sulla tua VM. In questo modo, il account di servizio della VM può chiamare le API di Google Cloud che ha l'autorizzazione a utilizzare.
    • Se specifichi il account di servizio utilizzando la console Google Cloud , imposta l'ambito di accesso del service account di servizio su Consenti l'accesso completo a tutte le API Cloud.
    • Se specifichi l'account di servizio utilizzando Google Cloud CLI o l'API Compute Engine, puoi utilizzare il parametro scopes per impostare l'ambito di accesso.

Configura il account di servizio

Puoi creare un account di servizio gestito dall'utente o utilizzare l'account di servizio Compute Engine predefinito. È consigliato un account di servizio gestito dall'utente.

Per il account di servizio selezionato, assicurati che siano assegnati i ruoli Identity and Access Management (IAM) richiesti.

Gestita dall'utente

Se non hai ancora un account di servizio gestito dall'utente, creane uno. Per istruzioni dettagliate, vedi Configurare un service account.

Predefinito

Se hai familiarità con il service account predefinito di Compute Engine e vuoi utilizzare le credenziali fornite da questo service account anziché creare nuovi service account, puoi concedere ruoli IAM al account di servizio predefinito.

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

  • La concessione di un ruolo IAM al account di servizio predefinito interessa tutte le VM in esecuzione comeaccount di serviziot predefinito. Ad esempio, se concedi all'account di servizio predefinito il ruolo roles/storage.objectAdmin, tutte le VM in esecuzione come account di servizio predefinito con gli ambiti di accesso richiesti avranno le autorizzazioni concesse dal ruolo roles/storage.objectAdmin. Allo stesso modo, se limiti l'accesso omettendo determinati ruoli, ciò influisce su tutte le VM in esecuzione come account di servizio predefinito.

  • A seconda della configurazione della policy dell'organizzazione, al account di servizio predefinito potrebbe essere concesso automaticamente il ruolo Editor nel tuo progetto. Ti consigliamo vivamente di disattivare la concessione automatica dei ruoli applicando il vincolo iam.automaticIamGrantsForDefaultServiceAccounts del criterio dell'organizzazione. Se hai creato la tua organizzazione dopo il 3 maggio 2024, questo vincolo viene applicato per impostazione predefinita.

    Se disattivi la concessione automatica dei ruoli, devi decidere quali ruoli concedere agli account di servizio predefiniti e poi concederli personalmente.

    Se l'account di servizio predefinito dispone già del ruolo Editor, ti consigliamo di sostituirlo con ruoli meno permissivi.Per modificare in modo sicuro i ruoli dell'account di servizio, utilizza Policy Simulator per visualizzare l'impatto della modifica, quindi concedi e revoca i ruoli appropriati.

Se non hai la certezza di concedere ruoli IAM al account di servizio predefinito, crea un nuovo service account gestito dall'utente.

Collega il account di servizio e aggiorna l'ambito di accesso

Per modificare l'account di servizio e gli ambiti di accesso di una VM, è necessario arrestarla temporaneamente.

Se il account di servizio si trova in un progetto diverso dalla VM, devi configurare il account di servizio per una risorsa in un progetto diverso.

Utilizza uno dei seguenti metodi per modificare il account di servizio e gli ambiti di accesso sulla tua VM.

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

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

  3. Fai clic su Interrompi. Se non è presente l'opzione Arresta, fai clic su Altre azioni > Arresta. Attendi l'arresto della VM.

  4. Fai clic su Modifica.

  5. Scorri verso il basso fino alla sezione Service Account.

  6. Dall'elenco a discesa, seleziona l'account di servizio da assegnare alla VM.

    • Se scegli un account di servizio gestito dall'utente, l'ambito di accesso della VM viene impostato per impostazione predefinita sull'ambito cloud-platform consigliato. Se hai bisogno di un ambito diverso per il account di servizio gestito dall'utente, utilizza gcloud CLI o l'API Compute Engine per collegare il service account.
    • Se scegli il account di servizio predefinito di Compute Engine, 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.
      • Consigliato Se non conosci gli ambiti di accesso corretti da impostare, scegli Consenti l'accesso completo a tutte le API Cloud e poi assicurati di limitare l'accesso impostando i ruoli IAM sul account di servizio.
  7. Fai clic su Salva per salvare le modifiche.

  8. Fai clic su Avvia/Riprendi per riavviare la VM.

gcloud

  1. Arresta la VM utilizzando il comando instances stop. Sostituisci VM_NAME con il nome dell'istanza VM.

    gcloud compute instances stop VM_NAME
    
  2. Collega il account di servizio. Per collegare il account di servizio, utilizza il comando instances set-service-account e fornisci il nome della VM, l'email del account di servizio e gli ambiti desiderati. Per saperne di più sull'impostazione degli ambiti di accesso, consulta le best practice.

    gcloud compute instances set-service-account VM_NAME \
      --service-account=SERVICE_ACCOUNT_EMAIL \
      --scopes=SCOPES
    

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email del account di servizio che hai creato. Ad esempio: my-sa-123@my-project-123.iam.gserviceaccount.com. Per visualizzare l'indirizzo email, vedi Elenco degli account di servizio.

      Se vuoi rimuovere il account di servizio dalla VM, utilizza il flag --no-service-account.

    • VM_NAME: il nome dell'istanza VM.

    • SCOPES: un elenco separato da virgole di URI o alias di ambito forniti nella descrizione del flag --scopes.

      Se vuoi rimuovere tutti gli ambiti per la VM, utilizza il flag --no-scopes.

    Ad esempio, il seguente comando assegna il account di servizio my-sa-123@my-project-123.iam.gserviceaccount.com a una VM denominata example-instance e imposta gli ambiti di accesso su quella VM 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
    
  3. Avvia la VM utilizzando il comando instances start. Sostituisci VM_NAME con il nome dell'istanza VM.

    gcloud compute instances start VM_NAME
    

REST

  1. Arresta la VM inviando una richiesta POST utilizzando il metodo instances.stop:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    Sostituisci quanto segue:

    • PROJECT_ID: il progetto in cui si trova la VM
    • ZONE: la zona in cui si trova la VM
    • VM_NAME: il nome della VM da arrestare
  2. Collega il account di servizio inviando una richiesta POST al metodo setServiceAccount:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setServiceAccount
    
    {
      "email": "SERVICE_ACCOUNT_EMAIL",
      "scopes": [
        "SCOPE_URI",
        "SCOPE_URI",
        ...
      ]
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta.
    • ZONE: la zona a cui appartiene questa VM.
    • VM_NAME: il nome della VM.
    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email del account di servizio che hai creato. Ad esempio: my-sa-123@my-project-123.iam.gserviceaccount.com. Per visualizzare l'indirizzo email, vedi Elenco degli account di servizio.
    • SCOPE_URI: l'URI dell'ambito richiesto.

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setServiceAccount
    
    {
      "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"
      ]
    }
    
  3. Avvia la VM creando una richiesta POST utilizzando il metodo instances.start:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
    

    Sostituisci quanto segue:

    • PROJECT_ID: il progetto in cui si trova la VM
    • ZONE: la zona in cui si trova la VM
    • VM_NAME: il nome della VM che vuoi avviare

Visualizzare il account di servizio utilizzato da una VM

Per visualizzare tutti gli account di servizio in un progetto, vedi Elenco degli account di servizio.

Se devi identificare il account di servizio utilizzato da una VM, completa una delle seguenti procedure:

console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

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

  3. Vai alla sezione Gestione di API e identità. Questa sezione mostra ilaccount di serviziot e l'ambito di accesso utilizzati dalla VM.

gcloud

Esegui il comando gcloud compute instances describe:

gcloud compute instances describe VM_NAME \
    --format json

L'output è simile al seguente:

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

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

Server metadati

Esegui query sul server di metadati dall'interno della VM. Invia 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 attivato uno o più service account durante la creazione dell'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.

Best practice

  • Limita i privilegi degli account di servizio e controlla regolarmente le autorizzazioni dell'account di servizio per assicurarti che siano aggiornate.
  • Elimina i service account con cautela. Prima di eliminare un account di servizio, assicurati che le tue applicazioni critiche non lo utilizzino più. Se non hai la certezza che venga utilizzato un account di servizio, ti consigliamo di disabilitarlo anziché eliminarlo. I service account disabilitati possono essere riattivati se sono ancora necessari.
  • Mitiga i rischi per la sicurezza del tuo account di servizio. Per saperne di più, consulta Best practice per l'utilizzo dei service account.

Passaggi successivi