Cambia l'account di servizio collegato

Questo documento spiega come configurare una macchina virtuale (VM) esistente da utilizzare a un altro account di servizio. Un account di servizio è un tipo speciale di di Compute Engine, generalmente utilizzato da un'applicazione o un carico di lavoro di chiamate API autorizzate.

Gli account di servizio sono necessari negli scenari in cui un carico di lavoro, ad esempio applicazione, deve accedere alle risorse Google Cloud o eseguire azioni il coinvolgimento dell'utente finale. Per ulteriori informazioni su quando utilizzare gli account di servizio, consulta le best practice per l'utilizzo degli account di servizio.

Se hai applicazioni che devono effettuare chiamate alle API Google Cloud, Google consiglia di collegare un account di servizio gestito dall'utente alla VM su cui dell'applicazione o del carico di lavoro. Quindi, concedi l'account di servizio i ruoli IAM, che forniscono all'account di servizio per estensione, le applicazioni in esecuzione sulla VM: l'accesso dell'accesso a specifiche risorse Google Cloud.

Prima di iniziare

  • Se non l'hai già fatto, configura l'autenticazione. Autenticazione è Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione Compute Engine come segue.

    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. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    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.

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per ulteriori informazioni, vedi Esegui l'autenticazione 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 tua VM, chiedi all'amministratore di concederti Ruolo IAM Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1) sulla VM o sul progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per configurare gli account di servizio sulla VM. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per configurare gli account di servizio sulla tua VM sono necessarie le seguenti autorizzazioni:

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

Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati e altri ruoli predefiniti.

Panoramica

Ti consigliamo di configurare gli account di servizio per le VM che segue:

  1. Crea un nuovo account di servizio gestito dall'utente anziché utilizzare Compute Engine l'account di servizio predefinito e concedere i ruoli IAM a quest'ultimo per e solo le risorse e le operazioni di cui ha bisogno.
  2. Collega l'account di servizio alla VM.
  3. Imposta l'ambito Cloud Platform (https://www.googleapis.com/auth/cloud-platform) su della VM. Ciò consente all'account di servizio della VM di chiamare le API Google Cloud che dispone dell'autorizzazione all'utilizzo.
    • Se specifichi l'account di servizio utilizzando la console Google Cloud, l'ambito di accesso della VM viene impostato automaticamente sul cloud-platform l'ambito di attività.
    • Se specifichi l'account di servizio utilizzando Google Cloud CLI o Compute Engine puoi utilizzare il parametro scopes per impostare l'ambito di accesso.

Configurare l'account di servizio

Puoi creare un account di servizio gestito dall'utente o utilizzare Account di servizio predefinito Compute Engine. Un account di servizio gestito dall'utente è consigliato.

Per l'account di servizio selezionato, assicurati che i requisiti richiesti Vengono assegnati ruoli IAM (Identity and Access Management).

Gestita dall'utente

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

Predefinito

Se hai familiarità con il servizio predefinito di Compute Engine, e vuoi usare le credenziali fornite dal servizio predefinito anziché creare nuovi account di servizio, puoi concedere i ruoli IAM all'account di servizio predefinito.

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

  • Concessione di un ruolo IAM all'account di servizio predefinito influisce su tutte le VM in esecuzione come account di servizio predefinito. Ad esempio, se concedi all'account di servizio predefinito Ruolo roles/storage.objectAdmin, tutte le VM in esecuzione come servizio predefinito l'account con gli ambiti di accesso richiesti disporrà delle autorizzazioni concesse il ruolo roles/storage.objectAdmin. Allo stesso modo, se limiti l'accesso omettendo alcuni ruoli, ciò influisce a tutte le VM in esecuzione come account di servizio predefinito.

  • A seconda della configurazione dei criteri dell'organizzazione, l'account di servizio predefinito potrebbe automaticamente il ruolo Editor progetto. Ti consigliamo vivamente di disabilitare la concessione automatica del ruolo entro il giorno applicazione del criterio dell'organizzazione iam.automaticIamGrantsForDefaultServiceAccounts di blocco. Se hai creato la tua organizzazione dopo il 3 maggio 2024, viene applicato per impostazione predefinita.

    Se disabiliti la concessione automatica del ruolo, devi decidere quali ruoli concedere a quelli predefiniti account di servizio e poi concedi ruoli.

    Se l'account di servizio predefinito ha già il ruolo Editor, ti consigliamo di sostituire il valore Ruolo Editor con ruoli meno permissivi. Per modificare in modo sicuro i ruoli dell'account di servizio, utilizza il Simulatore di criteri per vedere l'impatto dei la modifica e quindi concedere e revocare ruoli appropriati.

Se hai dubbi sulla concessione dei ruoli IAM all'account di servizio predefinito, crea un nuovo account di servizio gestito dall'utente.

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

Per modificare l'account di servizio e gli ambiti di accesso di una VM, la VM deve essere interrotto temporaneamente.

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

Utilizza uno dei seguenti metodi per modificare l'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 la quale vuoi modificare l'account di servizio.

  3. Se la VM non viene arrestata, fai clic su Arresta. Attendi l'attivazione VM da arrestare.

  4. 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' VM.

    • Se scegli un account di servizio gestito dall'utente, l'ambito di accesso della VM il valore predefinito è l'ambito cloud-platform consigliato. Se hai bisogno per il tuo account di servizio gestito dall'utente, usa gcloud CLI o l'API Compute Engine per collegare il servizio .
    • Se scegli l'account di servizio predefinito di Compute Engine, puoi modificare gli ambiti di accesso nella console Google Cloud.
      • Per modificare gli ambiti, nella sezione Ambiti di accesso, seleziona Imposta per ciascuna API e imposta gli ambiti appropriati per il tuo e alle esigenze aziendali.
      • Consigliato: se non hai la certezza degli ambiti di accesso corretti Impostare, scegli Consenti l'accesso completo a tutte le API Cloud e quindi assicurati di limitare l'accesso impostando ruoli IAM nell'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 Comando instances stop. Sostituisci VM_NAME con il nome della tua istanza VM.

    gcloud compute instances stop VM_NAME
    
  2. Collega l'account di servizio. Per collegare l'account di servizio, utilizza il Comando instances set-service-account e fornire il nome della VM, l'email dell'account di servizio e ambiti. Per saperne di più sull'impostazione degli ambiti di accesso, consulta 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 di l'account di servizio che hai creato. Ad esempio: my-sa-123@my-project-123.iam.gserviceaccount.com. A visualizzare l'indirizzo email, vedere Elenco degli account di servizio.

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

    • VM_NAME: il nome dell'istanza VM.

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

      Se vuoi rimuovere tutti gli ambiti per la VM, 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 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 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 Comando instances start. Sostituisci VM_NAME con il nome della tua istanza VM.

    gcloud compute instances start VM_NAME
    

REST

  1. Arresta la VM effettuando una richiesta POST utilizzando il metodo 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 tua VM
    • ZONE: la zona in cui si trova la VM
    • VM_NAME: il nome della VM che vuoi arrestare
  2. Collega l'account di servizio inviando una richiesta POST all'account 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 di l'account di servizio che hai creato. Ad esempio: my-sa-123@my-project-123.iam.gserviceaccount.com. A visualizzare l'indirizzo email, vedere Elenco degli account di servizio.
    • SCOPE_URI: il campo obbligatorio URI ambito.

    Ad esempio, la seguente richiesta utilizza l'account di servizio invia un'email a my-sa-123@my-project-123.iam.gserviceaccount.com e imposta un Ambito di 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 Metodo instances.start:

    POST https://www.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 tua VM
    • ZONE: la zona in cui si trova la VM
    • VM_NAME: il nome della VM che vuoi avviare

Visualizza l'account di servizio utilizzato da una VM

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

Se devi identificare l'account di servizio utilizzato da una VM, completare una delle seguenti procedure:

console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

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

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

gcloud

Esegui l' 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 una query sul server metadati dall'interno della VM per trovare le regole. 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 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 un campo risposta.

Best practice

  • Limitare i privilegi degli account di servizio e controllare regolarmente le autorizzazioni dell'account di servizio per sempre aggiornate.
  • Elimina gli account di servizio con cautela. Assicurati che le applicazioni critiche non utilizzano più un account di servizio prima dell'eliminazione. In caso di dubbi se un account di servizio viene utilizzato, ti consigliamo di disattivare il servizio. account anziché che lo elimina. Gli account di servizio disabilitati possono essere riattivati se sono ancora necessaria.
  • Riduci i rischi per la sicurezza per il tuo account di servizio. Per ulteriori informazioni, consulta le best practice per l'uso del servizio Google Cloud.

Passaggi successivi