Neste documento, descrevemos os pré-requisitos para importar e exportar imagens no Compute Engine.
É possível compartilhar instâncias de máquina virtual (VM), arquivos de disco virtual e imagens de máquina de outros ambientes de nuvem ou do ambiente local, importando e exportando imagens do Cloud Storage. A lista de verificação a seguir resume os requisitos que você precisa atender antes de importar e exportar imagens:
- Configurar o acesso a um bucket do Cloud Storage
- Conceda os papéis necessários à sua conta de usuário
- Conceder papéis necessários à conta de serviço do Cloud Build
- Conceder os papéis necessários à conta de serviço do Compute Engine
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud .
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
-
Configurar o acesso a um bucket do Cloud Storage
Você precisa ter acesso a um bucket do Cloud Storage que a ferramenta de importação ou exportação pode usar. Se você não tiver um bucket do Cloud Storage, consulte Criar um bucket do Cloud Storage.
Para configurar o acesso ao bucket do Cloud Storage, consulte Conceder papéis necessários à conta e conta de serviço do Compute Engine.
Se você estiver exportando uma imagem, a ferramenta de exportação fará o upload da imagem para o bucket do Cloud Storage.
Se você estiver importando uma imagem, será necessário primeiro fazer o upload dela para o bucket do Cloud Storage. A ferramenta de importação faz o download do arquivo do bucket do Cloud Storage para o Compute Engine e, em seguida, cria uma imagem no Compute Engine desse arquivo de disco.
Conceder os papéis do IAM necessários
A ferramenta de importação e exportação de imagens de VM requer as seguintes contas para executar a operação em nome delas:
- Conta de usuário. A conta da qual você está executando os comandos de importação e exportação.
- Conta de serviço do Cloud Build. Uma conta de serviço padrão do Cloud Build criada quando a ferramenta de importação ou exportação ativa a API Cloud Build.
- Conta de serviço do Compute Engine. Uma conta de serviço padrão ou personalizada do Compute Engine necessária para o fluxo de trabalho de importação e exportação.
Conceda os papéis necessários à sua conta de usuário
Para importar ou exportar imagens, sua conta de usuário requer os seguintes papéis:
- Papel de administrador de armazenamento (
roles/storage.admin
) - Papel de leitor (
roles/viewer
) - Papel de Administrador de projetos do IAM (
roles/resourcemanager.projectIamAdmin
) - Papel de editor do Cloud Build (
roles/cloudbuild.builds.editor
)
Acesse a página IAM e administrador do projeto ou da organização.
Localize sua conta e clique em
Editar.Na lista Selecionar um papel, selecione os seguintes papéis:
- Cloud Storage > Administrador do Storage
- Projeto > Leitor
- Gerente de recursos > Administrador de IAM do projeto
- Cloud Build > Editor do Cloud Build
Salve as alterações.
Nas etapas a seguir, use o comando
gcloud projects add-iam-policy-binding
para conceder os
papéis necessários no nível do projeto.
Conceda o papel
roles/storage.admin
:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='MEMBER ' \ --role='roles/storage.admin'Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud do seu projeto.MEMBER
: a conta que executa os comandos de importação e exportação, por exemplo,user:export-user@gmail.com
Conceda o papel
roles/viewer
:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='MEMBER ' \ --role='roles/viewer'Conceda o papel
roles/resourcemanager.projectIamAdmin
:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='MEMBER ' \ --role='roles/resourcemanager.projectIamAdmin'Conceda o papel
roles/cloudbuild.builds.editor
:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='MEMBER ' \ --role='roles/cloudbuild.builds.editor'
Leia a política atual com o respectivo método
getIamPolicy
do recurso. Para projetos, use o métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/
PROJECT_ID :getIamPolicySubstitua
PROJECT_ID
pelo ID do projeto, comomy-project-1
.Para conceder os papéis necessários à sua conta, edite a política com um editor de texto.
Por exemplo, para conceder o papel necessário à sua conta
user:export-user@gmail.com
, adicione a seguinte vinculação à política:{ { "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" ] } }
Para gravar a política atualizada, use o método
setIamPolicy
.Por exemplo, para definir uma política no nível do projeto, use o método
project.setIamPolicy
. No corpo da solicitação, forneça a política de IAM atualizada da etapa anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/
PROJECT_ID :setIamPolicy
Conceder papéis necessários à conta de serviço do Cloud Build
Quando você usa o Console do Google Cloud ou a CLI gcloud para importar ou exportar imagens pela primeira vez, a ferramenta tenta ativar a API Cloud Build e conceder os papéis necessários a Conta de serviço do Cloud Build.
- Papel Criador de token da conta de serviço
(
roles/iam.serviceAccountTokenCreator
) - Papel usuário da conta de serviço
(
roles/iam.serviceAccountUser
) - Papel Administrador do Compute (
roles/compute.admin
)Para evitar a concessão do papel de administrador do Compute, crie um papel personalizado com as seguintes permissões do IAM do Compute Engine e conceda o papel à Conta de serviço do Cloud Build:
Permissões necessárias para o papel personalizado
A conta de serviço do Cloud Build precisa ter as seguintes permissões:
compute.disks.create
compute.disks.delete
compute.disks.get
compute.disks.getIamPolicy
compute.disks.list
compute.disks.resize
compute.disks.setLabels
compute.disks.use
compute.disks.useReadOnly
compute.images.create
compute.images.get
compute.images.getFromFamily
compute.images.getIamPolicy
compute.images.list
compute.images.useReadOnly
compute.instances.attachDisk
compute.instances.create
compute.instances.delete
compute.instances.detachDisk
compute.instances.get
compute.instances.getSerialPortOutput
compute.instances.list
compute.instances.setLabels
compute.instances.setMetadata
compute.instances.setServiceAccount
compute.machineTypes.list
compute.networks.list
compute.projects.get
compute.subnetworks.list
compute.subnetworks.use
compute.subnetworks.useExternalIp
compute.zoneOperations.get
compute.zones.list
- Papel Usuário de rede do Compute (
roles/compute.networkUser
)Esse papel é necessário somente quando você importa ou exporta imagens que usam a VPC compartilhada.
No projeto de VPC compartilhada, conceda o papel de usuário da rede do Compute à conta de serviço do Cloud Build localizada no projeto em que você importa ou exporta imagens.
No entanto, é possível conceder estes papéis manualmente para garantir que as permissões necessárias estejam aplicadas:
Depois de ativar a API Cloud Build, acesse a página IAM e administrador do projeto ou da organização.
Localize a conta de serviço do Cloud Build e clique em
Editar.Se os papéis necessários não estiverem listados, faça o seguinte:
- Clique em Adicionar outro papel.
Na lista Selecionar um papel, selecione os papéis necessários que você quer adicionar:
- Service Account > Criador de token da conta de serviçor
- Service Account > Usuário da conta de serviço
Compute Engine > Administrador do Compute
Como alternativa, é possível selecionar o papel Personalizado. Consulte Permissões necessárias para o papel personalizado anteriormente neste documento.
Clique em Salvar para armazenar as mudanças.
Opcional: se você estiver importando ou exportando imagens que usam VPC compartilhada, selecione o papel Usuário de rede do Compute no projeto VPC compartilhado:
- No seletor de projetos na parte superior do console, selecione o projeto host da VPC compartilhada.
- Na página IAM e administrador, clique em Conceder acesso.
- No campo Novos principais, insira o endereço de e-mail da conta de serviço do Cloud Build.
SubstituaPROJECT_NUMBER @cloudbuild.gserviceaccount.com'PROJECT_NUMBER
pelo número exclusivo do projeto em que você importa ou exporta imagens. - Na lista Selecionar um papel, selecione o papel Compute Engine > Usuário da rede do Compute.
- Clique em Salvar para armazenar as mudanças.
Nas etapas a seguir, use o comando
gcloud projects add-iam-policy-binding
para conceder os
papéis necessários no nível do projeto.
Conceda o papel
roles/compute.admin
à conta de serviço do Cloud Build. Para evitar conceder o papelroles/compute.admin
, crie um papel personalizado com as permissões necessárias e conceda esse papel à conta de serviço do Cloud Build. Consulte Permissões necessárias para o papel personalizado anteriormente neste documento.gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER @cloudbuild.gserviceaccount.com' \ --role='roles/compute.admin'Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud do seu projeto.PROJECT_NUMBER
: o número do projeto do Google Cloud do projeto;
Conceda o papel
roles/iam.serviceAccountUser
:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER @cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountUser'Conceda o papel
roles/iam.serviceAccountTokenCreator
:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER @cloudbuild.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'Opcional: se você estiver exportando ou importando imagens que usam VPCs compartilhadas, conceda o papel
roles/compute.networkUser
:gcloud projects add-iam-policy-binding
HOST_PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER @cloudbuild.gserviceaccount.com' \ --role='roles/compute.networkUser'Substitua:
HOST_PROJECT_ID
: o ID do projeto host em que a VPC compartilhada está localizada.PROJECT_NUMBER
: o número exclusivo do projeto em que você importa ou exporta imagens
Leia a política atual com o respectivo método
getIamPolicy
do recurso. Para projetos, use o métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/
PROJECT_ID :getIamPolicySubstitua
PROJECT_ID
pelo ID do projeto, comomy-project-1
.Para conceder os papéis necessários à sua conta, edite a política com um editor de texto.
Por exemplo, para conceder os papéis necessários a
serviceAccount:12345@cloudbuild.gserviceaccount.com
, adicione a seguinte vinculação à política:{ { "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" ] } }
Para evitar a concessão do papel
roles/compute.admin
, crie um papel personalizado com as permissões necessárias e conceda esse papel à conta de serviço do Cloud Build. Consulte Permissões necessárias para o papel personalizado anteriormente neste documento.Opcional: se você estiver exportando ou importando imagens que usam VPC compartilhada, conceda o papel
roles/compute.networkUser
no projeto de VPC compartilhada.POST https://cloudresourcemanager.googleapis.com/v1/projects/
HOST_PROJECT_ID :getIamPolicySubstitua
HOST_PROJECT_ID
pelo ID do projeto da VPC compartilhada.Adicione a seguinte vinculação do IAM à conta de serviço do Cloud Build:
{ { "roles":"roles/compute.networkUser", "member":[ "serviceAccount:12345@cloudbuild.gserviceaccount.com" ] } }
Para gravar a política atualizada, use o método
setIamPolicy
.Por exemplo, para definir uma política no nível do projeto, use o método
project.setIamPolicy
. No corpo da solicitação, forneça a política de IAM atualizada da etapa anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/
PROJECT_ID :setIamPolicy
Para mais informações sobre como gerenciar o acesso a recursos, consulte Como conceder, alterar e revogar o acesso a recursos.
Conceder os papéis necessários à conta de serviço do Compute Engine
Quando você usa o Console do Google Cloud ou a CLI gcloud para importar ou exportar imagens pela primeira vez, a ferramenta tenta conceder os papéis necessários à conta de serviço padrão do Compute Engine.
Dependendo da configuração da política da organização, a conta de serviço padrão pode
receber automaticamente o papel de Editor no
projeto. É altamente recomendável desativar a concessão automática de papéis
aplicando a restrição
da política da organização iam.automaticIamGrantsForDefaultServiceAccounts
. Se você criou a organização após 3 de maio de 2024, essa
restrição será aplicada por padrão.
Se você desativar a concessão automática de papéis, precisará decidir quais papéis conceder às contas de serviço padrão e, em seguida, conceder esses papéis por conta própria.
Se a conta de serviço padrão já tiver o papel de Editor, recomendamos que você o substitua por papéis menos permissivos.Para modificar com segurança os papéis da conta de serviço, use o Simulador de política para conferir o impacto da mudança e, em seguida, conceda e revogue os papéis apropriados.
Sua conta de serviço do Compute Engine precisa ter os seguintes papéis:
- Papel de administrador do Compute Storage
(
roles/compute.storageAdmin
): necessário para exportar e importar imagens de VM - Papel de leitor de objetos do Storage
(
roles/storage.objectViewer
): necessário para importar imagens de VM - Papel de administrador de objetos do Storage
(
roles/storage.objectAdmin
): obrigatório para exportar imagens de VM
Acesse a página IAM e administrador do projeto ou da organização.
Localize a conta de serviço do Compute Engine e clique em
Editar.Na lista Selecionar um papel, selecione os seguintes papéis:
- Compute Engine > Administrador do Compute Storage
- Cloud Storage > Visualizador de objetos do Storage
- Cloud Storage > Administrador de objetos do Storage
Salve as alterações.
Nas etapas a seguir, use o comando
gcloud projects add-iam-policy-binding
para conceder os
papéis necessários no nível do projeto.
Conceda o papel
roles/compute.storageAdmin
:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER -compute@developer.gserviceaccount.com' \ --role='roles/compute.storageAdmin'Se você estiver importando uma imagem, conceda o papel
roles/storage.objectViewer
:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER -compute@developer.gserviceaccount.com' \ --role='roles/storage.objectViewer'Se você estiver exportando uma imagem, conceda o papel
roles/storage.objectAdmin
:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER -compute@developer.gserviceaccount.com' \ --role='roles/storage.objectAdmin'
Leia a política atual com o respectivo método
getIamPolicy
do recurso. Para projetos, use o métodoprojects.getIamPolicy
.POST https://cloudresourcemanager.googleapis.com/v1/projects/
PROJECT_ID :getIamPolicySubstitua
PROJECT_ID
pelo ID do projeto, comomy-project-1
.Para conceder os papéis necessários à sua conta, edite a política com um editor de texto.
Por exemplo, para conceder os papéis necessários a
serviceAccount:12345-compute@developer.gserviceaccount.com
para importar uma imagem, adicione a seguinte vinculação à política:{ { "role":"roles/compute.storageAdmin", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } { "roles":"roles/storage.objectViewer", "member":[ "serviceAccount:12345-compute@developer.gserviceaccount.com" ] } }
Para gravar a política atualizada, use o método
setIamPolicy
.Por exemplo, para definir uma política no nível do projeto, use o método
project.setIamPolicy
. No corpo da solicitação, forneça a política de IAM atualizada da etapa anterior.POST https://cloudresourcemanager.googleapis.com/v1/projects/
PROJECT_ID :setIamPolicy
Se você não quiser usar a conta de serviço padrão do Compute Engine,
especifique uma conta de serviço gerenciada pelo usuário
usando a sinalização --compute-service-account
nos comandos gcloud
importar e exportar. Para mais informações sobre como usar a conta de serviço
personalizada do Compute Engine, consulte os seguintes recursos:
- Como importar discos virtuais com contas de serviço personalizadas
- Como importar dispositivos virtuais com contas de serviço personalizadas
- Como importar imagens de máquina de dispositivos virtuais com contas de serviço personalizadas
- Como exportar imagens personalizadas com contas de serviço personalizadas
A seguir
- Exportar imagens personalizadas para o Cloud Storage.
- Compartilhe suas imagens entre projetos.
- Escolha um método de importação.
- Como importar discos virtuais
- Importação de dispositivos virtuais
- Como importar imagens de máquina a partir de dispositivos virtuais