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:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
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.
- 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.
- 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.
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:getIamPolicy
Substitua
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
- 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:
- 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.
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.
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:getIamPolicy
Substitua
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:getIamPolicy
Substitua
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
- 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.
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:getIamPolicy
Substitua
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
- 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
- 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
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.
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:
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:
Console
gcloud
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.REST
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.
No entanto, é possível conceder estes papéis manualmente para garantir que as permissões necessárias estejam aplicadas:
Console
gcloud
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.REST
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:
Console
gcloud
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.REST
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 comandosgcloud
importar e exportar. Para mais informações sobre como usar a conta de serviço personalizada do Compute Engine, consulte os seguintes recursos:A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-12-22 UTC.
-