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
- Configurar o VPC Service Controls
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Cloud de Confiance by S3NS . Para executar
códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console Cloud de Confiance para acessar serviços Cloud de Confiance by S3NS e APIs, não é necessário configurar a autenticação.
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para CLI gcloud.
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Cloud de Confiance .
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)
Console
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
- Resource Manager > Administrador de IAM do projeto
- Cloud Build > Editor do Cloud Build
Salve as alterações.
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.
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 projetoCloud de Confiance do seu projetoMEMBER: 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'
REST
Leia a política atual com o respectivo método
getIamPolicydo recurso. Para projetos, use o métodoprojects.getIamPolicy.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Substitua
PROJECT_IDpelo 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 Cloud de Confiance 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 à Conta de serviço do Cloud Build.
A conta de serviço usada para o Cloud Build depende de você ter usado o Cloud Build no projeto antes de maio de 2024. Se sim, a conta de serviço legada do Cloud Build será usada para builds futuros. Caso contrário, a conta de serviço padrão do Compute Engine será usada.
- 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.
No entanto, é possível conceder estes papéis manualmente para garantir que as permissões necessárias estejam aplicadas:
Console
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.s3ns-system.iam.gserviceaccount.com'
PROJECT_NUMBERpelo 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.
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.
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 a função personalizada anteriormente neste documento.gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:PROJECT_NUMBER@cloudbuild.s3ns-system.iam.gserviceaccount.com' \ --role='roles/compute.admin'
Substitua:
PROJECT_ID: o ID do projetoCloud de ConfiancePROJECT_NUMBER: o número do projetoCloud de Confiance do seu projeto
Conceda o papel
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'
Conceda o papel
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'
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.s3ns-system.iam.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
REST
Leia a política atual com o respectivo método
getIamPolicydo recurso. Para projetos, use o métodoprojects.getIamPolicy.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Substitua
PROJECT_IDpelo 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.s3ns-system.iam.gserviceaccount.com, adicione a seguinte vinculação à política:{ { "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" ] } }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 a função personalizada anteriormente neste documento.Opcional: se você estiver exportando ou importando imagens que usam VPC compartilhada, conceda o papel
roles/compute.networkUserno projeto de VPC compartilhada.POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:getIamPolicy
Substitua
HOST_PROJECT_IDpelo 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.s3ns-system.iam.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 Cloud de Confiance console 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.
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 - Papel de administrador do Storage
(
roles/storage.admin): obrigatório para exportar imagens de VM
Console
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.
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.
Conceda o papel
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'
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.s3ns-system.iam.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.s3ns-system.iam.gserviceaccount.com' \ --role='roles/storage.objectAdmin'
REST
Leia a política atual com o respectivo método
getIamPolicydo recurso. Para projetos, use o métodoprojects.getIamPolicy.POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Substitua
PROJECT_IDpelo 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.s3ns-system.iam.gserviceaccount.compara importar uma imagem, adicione a seguinte vinculação à política:{ { "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" ] } }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
Configurar o VPC Service Controls
Se você usa o VPC Service Controls para proteger
seus projetos, adicione uma regra de saída ao projeto
compute-image-import (número 71462206840).
Para seguir o princípio de privilégio mínimo, recomendamos que você permita apenas
o serviço artifactregistry.googleapis.com com os seguintes
métodos:
artifactregistry.repositories.downloadArtifactsartifactregistry.tags.getartifactregistry.tags.listartifactregistry.versions.get
Para mais informações, consulte Limitações do VPC Service Controls.