Prerequisiti per l'importazione e l'esportazione di immagini VM

Questo documento descrive i prerequisiti per l'importazione e l'esportazione di immagini su Compute Engine.

Puoi condividere istanze di macchine virtuali (VM), file di dischi virtuali e immagini macchina da altri ambienti cloud o dal tuo ambiente on-premise importando ed esportando immagini da Cloud Storage. Il seguente elenco di controllo riassume i requisiti che devi soddisfare prima di importare ed esportare le immagini:

  1. Configura l'accesso a un bucket Cloud Storage
  2. Concedi i ruoli richiesti al tuo account utente
  3. Concedi i ruoli richiesti al service account Cloud Build
  4. Concedi i ruoli richiesti al service account di Compute Engine

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo di verifica dell'identità per poter accedere a Trusted Cloud by S3NS servizi e 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 Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il seguente comando:

      gcloud init
    2. Set a default region and zone.

    REST

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

      Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il seguente comando:

      gcloud init

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

Configurare l'accesso a un bucket Cloud Storage

Devi avere accesso a un bucket Cloud Storage che lo strumento di importazione o esportazione può utilizzare. Se non hai un bucket Cloud Storage, consulta Creare un bucket Cloud Storage.

Per configurare l'accesso al tuo bucket Cloud Storage, vedi Concedi i ruoli richiesti al tuo account e Service account Compute Engine.

  • Se esporti un'immagine, lo strumento di esportazione la carica nel bucket Cloud Storage.

  • Se importi un'immagine, devi prima caricarla nel bucket Cloud Storage. Lo strumento di importazione scarica il file dal bucket Cloud Storage a Compute Engine, quindi crea un'immagine in Compute Engine da questo file del disco.

Concedi i ruoli IAM richiesti

Lo strumento di importazione ed esportazione di immagini VM richiede i seguenti account per eseguire l'operazione per suo conto:

  • Account utente. L'account da cui esegui i comandi di importazione ed esportazione.
  • Service account Cloud Build. Un account di servizio Cloud Build predefinito creato quando lo strumento di importazione o esportazione abilita l'API Cloud Build.
  • Service account Compute Engine. Un account di servizio Compute Engine predefinito o personalizzato richiesto per il flusso di lavoro di importazione ed esportazione.

Concedi i ruoli richiesti al tuo account utente

Per importare o esportare immagini, il tuo account utente richiede i seguenti ruoli:

  • Ruolo Amministratore Storage (roles/storage.admin)
  • Ruolo Visualizzatore (roles/viewer)
  • Ruolo Amministratore IAM progetto (roles/resourcemanager.projectIamAdmin)
  • Ruolo Editor Cloud Build (roles/cloudbuild.builds.editor)

Console

  1. Vai alla pagina IAM e amministrazione del progetto o dell'organizzazione.

    Vai a IAM e amministrazione

  2. Individua il tuo account e fai clic su Modifica.

  3. Nell'elenco Seleziona un ruolo, seleziona i seguenti ruoli:

    • Cloud Storage > Amministratore Storage
    • Progetto > Visualizzatore
    • Resource Manager > Project IAM Admin
    • Cloud Build > Editor Cloud Build
  4. Salva le modifiche.

gcloud

Nei passaggi seguenti, utilizzerai il gcloud projects add-iam-policy-binding comando per concedere i ruoli richiesti a livello di progetto.

  1. Concedi il ruolo roles/storage.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/storage.admin'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l' Trusted Cloud ID progetto per il tuo progetto
    • MEMBER: l'account che esegue i comandi di importazione ed esportazione, ad esempio user:export-user@gmail.com
  2. Concedi il ruolo roles/viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/viewer'
    
  3. Concedi il ruolo roles/resourcemanager.projectIamAdmin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/resourcemanager.projectIamAdmin'
    
  4. Concedi il ruolo roles/cloudbuild.builds.editor:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='MEMBER' \
      --role='roles/cloudbuild.builds.editor'
    

REST

  1. Leggi la policy esistente con il metodo getIamPolicy della risorsa. Per i progetti, utilizza il metodo projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Sostituisci PROJECT_ID con l'ID progetto, ad esempio my-project-1.

  2. Per concedere i ruoli richiesti al tuo account, modifica la policy con un editor di testo.

    Ad esempio, per concedere il ruolo richiesto al tuo account user:export-user@gmail.com, aggiungi la seguente associazione alla policy:

    {
       {
         "role":"roles/storage.admin",
         "member":[
           "user:export-user@gmail.com"
         ]
       }
       {
         "roles":"roles/viewer",
         "member":[
           "user:export-user@gmail.com"
         ]
       }
       {
         "roles":"roles/resourcemanager.projectIamAdmin",
         "member":[
           "user:export-user@gmail.com"
         ]
       }
       {
         "roles":"roles/cloudbuild.builds.editor",
         "member":[
           "user:export-user@gmail.com"
         ]
       }
    }
    
  3. Per scrivere la policy aggiornata, utilizza il metodo setIamPolicy.

    Ad esempio, per impostare una policy a livello di progetto, utilizza il metodo project.setIamPolicy. Nel corpo della richiesta, fornisci la policy IAM aggiornata del passaggio precedente.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

Concedi i ruoli richiesti al account di servizio Cloud Build

Quando utilizzi la console Trusted Cloud o gcloud CLI per importare o esportare immagini per la prima volta, lo strumento tenta di attivare l'API Cloud Build e concedere i ruoli richiesti all'account di servizio Cloud Build.

  • Ruolo Creatore token service account (roles/iam.serviceAccountTokenCreator)
  • Ruolo Service Account User (roles/iam.serviceAccountUser)
  • Ruolo Compute Admin (roles/compute.admin)

    Per evitare di concedere il ruolo Amministratore Compute, puoi creare un ruolo personalizzato con le seguenti autorizzazioni IAM di Compute Engine e concederlo all'account di servizio Cloud Build:

  • Ruolo Utente di rete Compute (roles/compute.networkUser)

    Questo ruolo è obbligatorio solo quando importi o esporti immagini che utilizzano il VPC condiviso.

    Nel progetto VPC condiviso, concedi il ruolo Utente di rete Compute al account di servizio Cloud Build che si trova nel progetto in cui importi o esporti le immagini.

Tuttavia, puoi concedere manualmente questi ruoli per assicurarti che le autorizzazioni richieste siano effettive:

Console

  1. Dopo aver abilitato l'API Cloud Build, vai alla pagina IAM e amministrazione del progetto o dell'organizzazione.

    Vai a IAM e amministrazione

  2. Individua il account di servizio Cloud Build e fai clic su Modifica.

  3. Se i ruoli richiesti non sono elencati, procedi nel seguente modo:

    1. Fai clic su Aggiungi un altro ruolo.
    2. Nell'elenco Seleziona un ruolo, seleziona i ruoli richiesti che vuoi aggiungere:

      • Service Account > Creatore token service account
      • Service Account > Service Account User
      • Compute Engine > Amministratore Compute

        In alternativa, puoi selezionare il ruolo Personalizzato. Consulta la sezione Autorizzazioni richieste per il ruolo personalizzato di questo documento.

    3. Fai clic su Salva per salvare le modifiche.

  4. (Facoltativo) Se importi o esporti immagini che utilizzano il VPC condiviso, seleziona il ruolo Utente rete Compute nel progetto VPC condiviso:

    1. Dal selettore di progetti nella parte superiore della console, seleziona il progetto host VPC condiviso.
    2. Nella pagina IAM e amministrazione, fai clic su Concedi l'accesso.
    3. Nel campo Nuove entità, inserisci l'indirizzo email dell'account di servizio Cloud Build:
       PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com'
       
      Sostituisci PROJECT_NUMBER con il numero univoco del progetto in cui importi o esporti le immagini.
    4. Nell'elenco Seleziona un ruolo, seleziona Compute Engine > ruolo Utente rete Compute.
    5. Fai clic su Salva per salvare le modifiche.

gcloud

Nei passaggi seguenti, utilizzerai il gcloud projects add-iam-policy-binding comando per concedere i ruoli richiesti a livello di progetto.

  1. Concedi il ruolo roles/compute.admin al service account Cloud Build. Per evitare di concedere il ruolo roles/compute.admin, puoi creare un ruolo personalizzato con le autorizzazioni richieste e poi concederlo al account di servizio Cloud Build. Consulta la sezione Autorizzazioni richieste per il ruolo personalizzato all'inizio di questo documento.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member='serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com' \
       --role='roles/compute.admin'
    

    Sostituisci quanto segue:

  2. Concedi il ruolo roles/iam.serviceAccountUser:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member='serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com' \
       --role='roles/iam.serviceAccountUser'
    
  3. Concedi il ruolo roles/iam.serviceAccountTokenCreator:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member='serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com' \
       --role='roles/iam.serviceAccountTokenCreator'
    
  4. (Facoltativo) Se esporti o importi immagini che utilizzano il VPC condiviso, concedi il ruolo roles/compute.networkUser:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
       --member='serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com' \
       --role='roles/compute.networkUser'
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto host in cui si trova laVPC condivisoa
    • PROJECT_NUMBER: il numero univoco del progetto in cui importi o esporti le immagini

REST

  1. Leggi la policy esistente con il metodo getIamPolicy della risorsa. Per i progetti, utilizza il metodo projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Sostituisci PROJECT_ID con l'ID progetto, ad esempio my-project-1.

  2. Per concedere i ruoli richiesti al tuo account, modifica la policy con un editor di testo.

    Ad esempio, per concedere i ruoli richiesti a serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com, aggiungi la seguente associazione alla policy:

    {
       {
         "role":"roles/compute.admin",
         "member":[
           "serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com"
         ]
       }
       {
         "roles":"roles/iam.serviceAccountUser",
         "member":[
           "serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com"
         ]
       }
      {
         "roles":"roles/iam.serviceAccountTokenCreator",
         "member":[
           "serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com"
         ]
       }
    }
    

    Per evitare di concedere il ruolo roles/compute.admin, puoi creare un ruolo personalizzato con le autorizzazioni richieste e poi concederlo al account di servizio Cloud Build. Consulta la sezione Autorizzazioni richieste per il ruolo personalizzato all'inizio di questo documento.

  3. (Facoltativo) Se esporti o importi immagini che utilizzano il VPC condiviso, concedi il ruolo roles/compute.networkUser nel progetto VPC condiviso.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
    

    Sostituisci HOST_PROJECT_ID con l'ID del progetto VPC condiviso.

    Aggiungi il seguente binding IAM al service account Cloud Build:

    {
       {
         "roles":"roles/compute.networkUser",
         "member":[
           "serviceAccount:12345@cloudbuild.s3ns-system.iam.gserviceaccount.com"
         ]
       }
    }
    
  4. Per scrivere la policy aggiornata, utilizza il metodo setIamPolicy.

    Ad esempio, per impostare una policy a livello di progetto, utilizza il metodo project.setIamPolicy. Nel corpo della richiesta, fornisci la policy IAM aggiornata del passaggio precedente.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

Per ulteriori informazioni sulla gestione dell'accesso alle risorse, vedi Concessione, modifica e revoca dell'accesso alle risorse.

Concedi i ruoli richiesti al account di servizio Compute Engine

Quando utilizzi la console Trusted Cloud o gcloud CLI per importare o esportare immagini per la prima volta, lo strumento tenta di concedere i ruoli richiesti al service account predefinito di Compute Engine.

A seconda della configurazione della policy dell'organizzazione, al service account predefinito potrebbe essere assegnato automaticamente il ruolo Editor nel progetto. Ti consigliamo vivamente di disattivare la concessione automatica dei ruoli forzando l'applicazione del vincolo iam.automaticIamGrantsForDefaultServiceAccounts della policy dell'organizzazione. Se hai creato la tua organizzazione dopo il 3 maggio 2024, questo vincolo viene imposto per impostazione predefinita.

Se disattivi la concessione automatica dei ruoli, devi decidere quali ruoli concedere ai service account predefiniti, quindi concedere personalmente questi ruoli.

Se il service account predefinito dispone già del ruolo Editor, ti consigliamo di sostituire il ruolo Editor con ruoli meno permissivi.

Il account di servizio Compute Engine deve avere i seguenti ruoli:

  • Ruolo Amministratore archiviazione Compute (roles/compute.storageAdmin): richiesto sia per l'esportazione che per l'importazione di immagini VM
  • Ruolo Storage Object Viewer (roles/storage.objectViewer): richiesto per l'importazione di immagini VM
  • Ruolo Amministratore oggetti Storage (roles/storage.objectAdmin): richiesto per l'esportazione di immagini VM

Console

  1. Vai alla pagina IAM e amministrazione del progetto o dell'organizzazione.

    Vai a IAM e amministrazione

  2. Individua il account di servizio Compute Engine e fai clic su Modifica.

  3. Nell'elenco Seleziona un ruolo, seleziona i seguenti ruoli:

    • Compute Engine > Amministratore Storage Compute
    • Cloud Storage > Storage Object Viewer
    • Cloud Storage > Amministratore oggetti Storage
  4. Salva le modifiche.

gcloud

Nei passaggi seguenti, utilizzerai il gcloud projects add-iam-policy-binding comando per concedere i ruoli richiesti a livello di progetto.

  1. Concedi il ruolo roles/compute.storageAdmin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com' \
      --role='roles/compute.storageAdmin'
    
  2. Se importi un'immagine, concedi il ruolo roles/storage.objectViewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com' \
      --role='roles/storage.objectViewer'
    
  3. Se esporti un'immagine, concedi il ruolo roles/storage.objectAdmin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com' \
      --role='roles/storage.objectAdmin'
    

REST

  1. Leggi la policy esistente con il metodo getIamPolicy della risorsa. Per i progetti, utilizza il metodo projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Sostituisci PROJECT_ID con l'ID progetto, ad esempio my-project-1.

  2. Per concedere i ruoli richiesti al tuo account, modifica la policy con un editor di testo.

    Ad esempio, per concedere i ruoli richiesti a serviceAccount:12345-compute@developer.s3ns-system.iam.gserviceaccount.com per importare un'immagine, aggiungi la seguente associazione alla policy:

    {
       {
         "role":"roles/compute.storageAdmin",
         "member":[
           "serviceAccount:12345-compute@developer.s3ns-system.iam.gserviceaccount.com"
         ]
       }
       {
         "roles":"roles/storage.objectViewer",
         "member":[
           "serviceAccount:12345-compute@developer.s3ns-system.iam.gserviceaccount.com"
         ]
       }
    }
    
  3. Per scrivere la policy aggiornata, utilizza il metodo setIamPolicy.

    Ad esempio, per impostare una policy a livello di progetto, utilizza il metodo project.setIamPolicy. Nel corpo della richiesta, fornisci la policy IAM aggiornata del passaggio precedente.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

Se non vuoi utilizzare il account di servizio Compute Engine predefinito, puoi specificare un service account gestito dall'utente utilizzando il flag --compute-service-account nei comandi di importazione ed esportazione gcloud. Per ulteriori informazioni sull'utilizzo di un service account Compute Engine personalizzato, consulta le seguenti risorse:

Passaggi successivi