Executar a migração

É possível migrar um projeto do Google Cloud entre recursos da organização ou mover um projeto independente (sem um recurso da organização) para um recurso da organização. Para migrar um projeto entre organizações, é preciso ter as permissões necessárias do Identity and Access Management (IAM) e configurar as políticas da organização necessárias nos recursos da organização de origem e de destino. Para mover um projeto independente, você só precisa das permissões do IAM necessárias no projeto e no recurso da organização de destino, além das políticas da organização necessárias no recurso da organização de destino.

Antes de começar

A migração de um projeto é uma operação entre organizações. Para evitar a movimentação não autorizada de recursos, é necessário atender aos requisitos a seguir.

Funções exigidas

Para receber as permissões necessárias para migrar projetos entre recursos da organização, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Esses papéis precisam ser concedidos à mesma conta de usuário nas organizações de origem e de destino. Esses papéis predefinidos contêm as permissões necessárias para migrar projetos. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias.

Permissões necessárias

As seguintes permissões são necessárias para migrar projetos:

  • resourcemanager.projects.getIamPolicy no projeto que você quer migrar entre recursos da organização
  • resourcemanager.projects.update no projeto que você quer migrar entre recursos da organização
  • resourcemanager.projects.move no recurso pai do projeto (pasta ou recurso da organização)
  • Se o recurso de destino for uma pasta: resourcemanager.projects.move no recurso de destino
  • Se o recurso de destino for um recurso de organização: resourcemanager.projects.create no recurso de destino
  • Se você quiser migrar um projeto que não está associado a uma organização: resourcemanager.projects.setIamPolicy no projeto que você quer migrar

Também é possível conseguir essas permissões com um papel personalizado ou outros papéis predefinidos.

Políticas da organização necessárias

Por padrão, a migração de projetos é restrita. É preciso permitir explicitamente a exportação e a importação definindo políticas da organização na raiz de ambas as organizações. Para configurar as políticas da organização necessárias para a migração, você precisa ter o papel roles/orgPolicy.policyAdmin na organização de origem e na organização de destino.

  • No recurso da organização de origem: defina a política constraints/resourcemanager.allowedExportDestinations. Adicione o ID da organização de destino como um valor permitido.

  • No recurso da organização de destino: defina a política constraints/resourcemanager.allowedImportSources. Adicione o ID da organização de origem como um valor permitido.

Faça a migração

Depois que as permissões forem concedidas e as políticas forem aplicadas, será possível migrar o projeto usando a Google Cloud CLI ou a API Resource Manager.

gcloud

Para migrar um projeto para outro recurso de organização, execute o seguinte comando:

gcloud beta projects move PROJECT_ID \
    --organization ORGANIZATION_ID

Também é possível especificar uma pasta como o recurso de destino com o seguinte comando:

gcloud beta projects move PROJECT_ID \
    --folder FOLDER_ID

Substitua os seguintes campos:

  • PROJECT_ID: o ID ou número do projeto que você quer migrar.
  • ORGANIZATION_ID: o ID do recurso da organização para o qual você está movendo o projeto.
  • FOLDER_ID: o ID da pasta para onde você está movendo o projeto.

Só é possível especificar um destino, que pode ser uma pasta ou um recurso de organização.

API

Usando a API Resource Manager v1, é possível migrar um projeto entre recursos de organização definindo o campo parent como o ID do recurso de destino.

Para migrar um projeto, faça o seguinte:

  • Acesse o objeto project usando o método projects.get().
  • Atualize o campo parent para o ID do recurso de destino.
  • Execute o método projects.update().

O snippet de código abaixo demonstra essas etapas:

    project = crm.projects().get(projectId=flags.projectId).execute()
    project['parent'] = {
        'type': 'organization',
        'id': flags.organizationId
    }

    project = crm.projects().update(
    projectId=flags.projectId, body=project).execute()

Tarefas pós-migração

Depois de migrar o projeto, você precisa realizar várias tarefas pós-migração para garantir a continuidade das operações, a conformidade de segurança e o faturamento adequado. A migração de um projeto altera a hierarquia de recursos, o que afeta as permissões herdadas e as políticas no nível da organização.

Confira algumas etapas que você pode concluir após a migração:

  1. Verificação de políticas: verifique se o projeto está herdando as políticas da organização esperadas do novo pai.

  2. Controle de acesso: audite os papéis do IAM para garantir que os usuários na nova organização tenham o acesso necessário.

  3. Faturamento: atualize a conta de faturamento se o projeto precisar ser faturado para a organização de destino. Essa é uma etapa opcional. Para mais detalhes, consulte Alterar a conta de faturamento de um projeto e Migrar uma conta de faturamento entre recursos da organização.

  4. Limpeza: revogue os papéis temporários de Transportador de projetos e remova as restrições allowedExportDestinations e allowedImportSources.

Alterar a conta de faturamento de um projeto

As contas do Cloud Billing podem ser usadas em recursos da organização. Mover um projeto de um recurso de organização para outro não afeta o faturamento, e as cobranças continuam sendo feitas na conta de faturamento antiga. No entanto, a migração de projetos entre recursos de organização geralmente também inclui um requisito para migrar para uma nova conta de faturamento.

Para mudar a conta de faturamento, faça o seguinte:

  1. Acesse a página Faturamento no console do Google Cloud .
    Acessar a página "Faturamento"
  2. Clique no nome da conta de faturamento que você quer alterar.
  3. Em Projetos vinculados a esta conta de faturamento, encontre o nome do projeto a ser migrado e clique no botão de menu à direita.
  4. Clique em Alterar faturamento e selecione a nova conta de faturamento.
  5. Clique em Definir conta.

As cobranças já incorridas, mas que ainda não apareceram no histórico de faturamento, serão efetuadas na conta de faturamento anterior. Isso pode incluir cobranças de até dois dias antes da migração do projeto.

Migrar uma conta de faturamento entre recursos da organização

Uma conta de faturamento pode ser migrada de um recurso de organização para outro, embora essa não seja uma etapa necessária com frequência. A maioria dos recursos de organização já tem uma conta de faturamento que deve ser usada.

Se uma nova conta de faturamento não tiver um recurso de organização associado, você precisará receber o papel roles/billing.admin na conta de faturamento e os papéis roles/billing.admin e roles/billing.creator no recurso de organização que você quer associar à sua conta de faturamento.

Se você precisar migrar uma conta de faturamento:

  1. No console do Google Cloud , acesse a página Faturamento.
    Acessar a página "Faturamento"
  2. Clique no nome da conta de faturamento que você quer migrar.
  3. Na parte de cima da página Gerenciamento de contas, clique em Mudar organização.
  4. Selecione o recurso de organização de destino e clique em Ok.

A conta de faturamento agora está associada ao recurso de organização especificado.

Reverter uma migração

As migrações doGoogle Cloud entre organizações não são reverter automaticamente se ocorrer um problema durante ou após a migração. Se você precisar reverter uma migração, faça uma reversão manual.

Se você migrou um projeto por engano, é possível reverter a operação realizando a migração novamente, com a origem antiga como o novo destino e o destino antigo como a nova origem. Você precisa ter as permissões do IAM necessárias e as políticas da organização aplicadas para permitir isso como se fosse uma migração totalmente nova.

Para reverter uma migração, faça o seguinte:

  1. Troque os IDs de origem e destino nas políticas da organização (allowedExportDestinations e allowedImportSources).
  2. Repita o comando de migração, movendo o projeto de volta para o ID de origem original.

A seguir