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:
- Configura l'accesso a un bucket Cloud Storage
- Concedi i ruoli richiesti al tuo account utente
- Concedi i ruoli richiesti al service account Cloud Build
- Concedi i ruoli richiesti al service account Compute Engine
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa a come intendi utilizzare i campioni in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi Google Cloud e alle API, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
- Imposta una regione e una zona predefinite.
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.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .
Configurare l'accesso a un bucket Cloud Storage
Devi disporre dell'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, consulta Concedere 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 Storage Admin (
roles/storage.admin) - Ruolo Visualizzatore (
roles/viewer) - Ruolo Amministratore IAM progetto (
roles/resourcemanager.projectIamAdmin) - Ruolo Editor Cloud Build (
roles/cloudbuild.builds.editor)
Console
Vai alla pagina IAM e amministrazione del progetto o dell'organizzazione.
Individua il tuo account e fai clic su Modifica.
Nell'elenco Seleziona un ruolo, seleziona i seguenti ruoli:
- Cloud Storage > Amministratore Storage
- Progetto > Visualizzatore
- Resource Manager > Project IAM Admin
- Cloud Build > Cloud Build Editor
Salva le modifiche.
gcloud
Nei passaggi seguenti, utilizzerai il comando gcloud projects add-iam-policy-binding per concedere i ruoli richiesti a livello di progetto.
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' Google Cloud ID progetto del tuo progettoMEMBER: l'account che esegue i comandi di importazione ed esportazione, ad esempiouser:export-user@gmail.com
Concedi il ruolo
roles/viewer:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/viewer'
Concedi il ruolo
roles/resourcemanager.projectIamAdmin:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/resourcemanager.projectIamAdmin'
Concedi il ruolo
roles/cloudbuild.builds.editor:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='MEMBER' \ --role='roles/cloudbuild.builds.editor'
REST
Leggi la policy esistente con il metodo
getIamPolicydella risorsa. Per i progetti, utilizza il metodoprojects.getIamPolicy.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Sostituisci
PROJECT_IDcon l'ID progetto, ad esempiomy-project-1.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" ] } }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 Google Cloud o gcloud CLI per importare o esportare immagini per la prima volta, lo strumento tenta di abilitare l'API Cloud Build e concedere i ruoli richiesti all'account di servizio Cloud Build.
Il account di servizio utilizzato per Cloud Build dipende dal fatto che tu abbia utilizzato Cloud Build nel progetto prima di maggio 2024. In caso affermativo, il account di servizio Cloud Build legacy viene utilizzato per le build future. In caso contrario, viene utilizzato il account di servizio Compute Engine predefinito.
- 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 è necessario 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
Dopo aver abilitato l'API Cloud Build, vai alla pagina IAM e amministrazione del progetto o dell'organizzazione.
Individua il account di servizio Cloud Build e fai clic su Modifica.
Se i ruoli richiesti non sono elencati, procedi nel seguente modo:
- Fai clic su Aggiungi un altro ruolo.
Nell'elenco Seleziona un ruolo, seleziona i ruoli richiesti che vuoi aggiungere:
- Service account > Creatore token service account
- Service Account > Utente service account
Compute Engine > Amministratore Compute
In alternativa, puoi selezionare il ruolo Personalizzato. Consulta la sezione Autorizzazioni richieste per il ruolo personalizzato di questo documento.
Fai clic su Salva per salvare le modifiche.
(Facoltativo) Se importi o esporti immagini che utilizzano il VPC condiviso, seleziona il ruolo Utente di rete Compute nel progetto VPC condiviso:
- Nel selettore di progetti nella parte superiore della console, seleziona il progetto host VPC condiviso.
- Nella pagina IAM e amministrazione, fai clic su Concedi l'accesso.
- Nel campo Nuove entità, inserisci l'indirizzo email del account di servizio Cloud Build:
SostituisciPROJECT_NUMBER@cloudbuild.gserviceaccount.com'
PROJECT_NUMBERcon il numero univoco del progetto in cui importi o esporti le immagini. - Nell'elenco Seleziona un ruolo, seleziona Compute Engine > ruolo Utente rete Compute.
- Fai clic su Salva per salvare le modifiche.
gcloud
Nei passaggi seguenti, utilizzerai il comando gcloud projects add-iam-policy-binding per concedere i ruoli richiesti a livello di progetto.
Concedi il ruolo
roles/compute.adminal service account Cloud Build. Per evitare di concedere il ruoloroles/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.gserviceaccount.com' \ --role='roles/compute.admin'
Sostituisci quanto segue:
PROJECT_ID: l' Google Cloud ID progetto per il tuo progettoPROJECT_NUMBER: il Google Cloud numero di progetto del tuo progetto
Concedi il ruolo
roles/iam.serviceAccountUser:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountUser'
Concedi il ruolo
roles/iam.serviceAccountTokenCreator:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
(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.gserviceaccount.com' \ --role='roles/compute.networkUser'
Sostituisci quanto segue:
HOST_PROJECT_ID: l'ID del progetto host in cui si trova il VPC condivisoPROJECT_NUMBER: il numero univoco del progetto in cui importi o esporti le immagini
REST
Leggi la policy esistente con il metodo
getIamPolicydella risorsa. Per i progetti, utilizza il metodoprojects.getIamPolicy.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Sostituisci
PROJECT_IDcon l'ID progetto, ad esempiomy-project-1.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.gserviceaccount.com, aggiungi la seguente associazione alla policy:{ { "role":"roles/compute.admin", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } { "roles":"roles/iam.serviceAccountTokenCreator", "member":[ "serviceAccount:12345@cloudbuild.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.(Facoltativo) Se esporti o importi immagini che utilizzano il VPC condiviso, concedi il ruolo
roles/compute.networkUsernel progetto VPC condiviso.POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
Sostituisci
HOST_PROJECT_IDcon l'ID del progetto VPC condiviso.Aggiungi il seguente binding IAM al account di servizio Cloud Build:
{ { "roles":"roles/compute.networkUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }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 saperne di più sulla gestione dell'accesso alle risorse, consulta Concessione, modifica e revoca dell'accesso alle risorse.
Concedi i ruoli richiesti al account di servizio Compute Engine
Quando utilizzi la console Google 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.Per modificare in sicurezza i ruoli del service account, utilizza Policy Simulator per vedere l'impatto della modifica, quindi concedi e revoca i ruoli appropriati.
Il account di servizio Compute Engine deve avere i seguenti ruoli:
- Ruolo Compute Storage Admin
(
roles/compute.storageAdmin): richiesto sia per l'esportazione che per l'importazione di immagini VM - Ruolo Storage Object Viewer
(
roles/storage.objectViewer): obbligatorio per l'importazione di immagini VM - Ruolo Amministratore oggetti Storage
(
roles/storage.objectAdmin): richiesto per l'esportazione di immagini VM
Console
Vai alla pagina IAM e amministrazione del progetto o dell'organizzazione.
Individua il account di servizio Compute Engine e fai clic su Modifica.
Nell'elenco Seleziona un ruolo, seleziona i seguenti ruoli:
- Compute Engine > Amministratore Storage Compute
- Cloud Storage > Storage Object Viewer
- Cloud Storage > Amministratore oggetti Storage
Salva le modifiche.
gcloud
Nei passaggi seguenti, utilizzerai il comando gcloud projects add-iam-policy-binding per concedere i ruoli richiesti a livello di progetto.
Concedi il ruolo
roles/compute.storageAdmin:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/compute.storageAdmin'
Se importi un'immagine, concedi il ruolo
roles/storage.objectViewer:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectViewer'
Se esporti un'immagine, concedi il ruolo
roles/storage.objectAdmin:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com' \ --role='roles/storage.objectAdmin'
REST
Leggi la policy esistente con il metodo
getIamPolicydella risorsa. Per i progetti, utilizza il metodoprojects.getIamPolicy.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Sostituisci
PROJECT_IDcon l'ID progetto, ad esempiomy-project-1.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.gserviceaccount.comper importare un'immagine, aggiungi la seguente associazione alla policy:{ { "role":"roles/compute.storageAdmin", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } { "roles":"roles/storage.objectViewer", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } }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:
- Importazione di dischi virtuali con service account personalizzati
- Importazione di appliance virtuali con service account personalizzati
- Importazione di immagini macchina da appliance virtuali con service account personalizzati
- Esportazione di immagini personalizzate con service account personalizzati
Passaggi successivi
- Esporta immagini personalizzate in Cloud Storage.
- Condividi le tue immagini tra i progetti.
- Scegli un metodo di importazione.
- Importazione di dischi virtuali
- Importazione di appliance virtuali
- Importazione di immagini macchina da appliance virtuali