Analisar a mudança do projeto

Veja neste guia como usar a API Cloud Asset Inventory Analyze Move para ver um relatório detalhado sobre avisos e bloqueadores de uma lista de sistemas de políticas críticas antes de migrar seu projeto.

Ative as APIs

Selecione ou crie um projeto como o projeto de consumidor da API, ative a API Cloud Asset

Esse projeto de consumidor pode ser diferente do projeto que você planeja analisar e migrar. O projeto do consumidor será usado para gerar credenciais e fazer solicitações de API.

A próxima seção descreve os papéis e as permissões necessários que precisam ser concedidos no projeto de origem que você planeja analisar.

Atribuir permissões

Para executar uma análise de migração de projetos, você precisa de um papel que conceda a permissão cloudasset.assets.analyzeMove, como Visualizador de recursos do Cloud ou Visualizador.

Para analisar um serviço, você também precisa de papéis relacionados a ele. Essas permissões incluem o seguinte:

  • Se você quiser conferir as políticas de IAM herdadas do recurso de organização pai do projeto de origem, será necessário ter a permissão resourcemanager.organizations.getIamPolicy no recurso de organização pai do projeto de origem.

  • Se você quiser ver as políticas de IAM herdadas da pasta pai do projeto de origem, precisará da permissão resourcemanager.folders.getIamPolicy na pasta pai do projeto de origem.

  • Se você quiser ver as políticas de IAM no projeto, precisará da permissão resourcemanager.projects.getIamPolicy no projeto de origem.

  • Para visualizar as políticas da organização herdadas neste projeto, é preciso ter a permissão orgpolicy.policy.get no projeto de origem.

  • Para visualizar as políticas de firewall do Compute Engine herdadas neste projeto, é necessário ter a permissão compute.organizations.setSecurityPolicy na pasta de origem ou no recurso da organização.

  • Se você quiser conferir as tags herdadas neste projeto, é necessário ter a permissão resourcemanager.hierarchyNodes.listEffectiveTags no projeto de origem ou nos nós ancestrais.

Realize a análise

Use a CLI ou a API do Google Cloud para analisar a migração de um recurso do local atual na hierarquia dele.

gcloud

Para analisar os impactos da migração de um projeto da posição atual na hierarquia de recursos, use o comando gcloud asset analyze-move:

gcloud asset analyze-move --project=PROJECT_ID \
  (--destination-folder=FOLDER_ID \
    | --destination-organization=ORGANIZATION_ID)

Para analisar os impactos da transferência de um projeto para uma pasta diferente, execute o comando com --destination-folder:

gcloud asset analyze-move --project=PROJECT_ID \
  --destination-folder=FOLDER_ID

Para analisar os impactos da transferência de um projeto para uma organização diferente, execute o comando com --destination-organization:

gcloud asset analyze-move --project=PROJECT_ID \
  --destination-organization=ORGANIZATION_ID

Em que:

  • PROJECT_ID é o ID do projeto exclusivo do projeto que você está migrando. Por exemplo, --myProject123.

  • FOLDER_ID é o ID numérico da pasta de destino em que a análise será realizada. Por exemplo, 45678901123.

  • ORGANIZATION_ID é o ID numérico da organização de destino em que a análise será realizada. Por exemplo, 78901123456.

API

Para analisar os impactos da migração de um projeto da posição atual na hierarquia de recursos sem realizar a mudança, use o método cloudasset.analyzeMove:

GET https://cloudasset.googleapis.com/v1/{resource=*/*}: \
  analyzeMove?destinationParent=DESTINATION_NAME

Em que:

  • resource é o nome do recurso em que a análise será realizada. Somente recursos de projeto são aceitos. Portanto, esse valor precisa ser o ID ou o número do projeto. Por exemplo, projects/my-project-id ou projects/12345.

  • DESTINATION_NAME é o nome da pasta ou do recurso de organização do Google Cloud para tornar o recurso de destino um filho. A análise será realizada sobre os impactos da transferência do recurso para o pai de destino especificado. O destino precisa ser um número de pasta ou de recurso de organização. Por exemplo, folders/123 ou organizations/123.

Mover as respostas da análise

A resposta que você recebe da API Move Analysis é agrupada por nome de serviço. Em cada serviço há uma lista de avisos e bloqueadores aplicáveis a essa migração. Os bloqueadores retornados por essa análise significam que a migração do projeto será bloqueada no momento da execução se você prosseguir com a transferência antes de resolvê-los.

Como solucionar erros

Se um erro for retornado pela API Move Analysis, ele incluirá um código gRPC padrão, além de uma mensagem que descreve o motivo da falha da análise do movimento{101 }API para analisar o projeto.

A tabela a seguir descreve os códigos de erro que podem ser retornados pela API Move Analysis:

Nome do erro Código do erro Descrição
Argumento inválido 3 Retornado se você chamar a API em um projeto com um argumento inválido, como um nome de recurso incorreto.
Permissão negada 7 Retornado se você não tiver as permissões necessárias para realizar a análise ou se o projeto de origem não existir.
Interno 13 Retornado se houver um problema com uma chamada para um sistema de políticas, como o gerenciamento de identidade e acesso ou a política da organização. Isso não indica que a migração não é possível e é possível repetir a análise depois de verificar o serviço em busca de uma interrupção.
Indisponível 14 Retornado se um sistema interno não estiver sincronizado. Isso não indica que a migração não é possível, e é possível repetir a análise.
Não autenticado 16 Retornado se você não tiver fornecido as credenciais corretas para realizar essa análise.

Exemplo de mensagem de erro

O exemplo a seguir demonstra o código de erro retornado para um usuário que não tem a permissão cloudasset.assets.analyzeMove no projeto a ser migrado:

{
  "error": {
  "code": 403,
  "message": "Failed to fetch Project: projects/test-project-service-3 to perform
              move analysis.",
  "status": "PERMISSION_DENIED"}
}

Alguns sistemas de políticas podem não analisar a mudança do recurso. O exemplo a seguir demonstra o erro retornado do serviço Hierárquico Firewall quando o usuário não tem a permissão compute.organizations.setSecurityPolicy no projeto a ser migrado:

{
  "moveAnalysis": [{
    "displayName": "name hidden",
    "analysis": {
      "warnings": [{
        "detail": "details hidden"
      }]
    }
  }, {
    "displayName": "name hidden",
    "analysis": {
      "warnings": [{
        "detail": "details hidden"
      }]
    }
  }, {
    "displayName": "Hierarchical Firewall",
    "error": {
      "code": 7,
      "message": "Failed to retrieve inherited security policies to perform
                  analysis. Required 'compute.organizations.setSecurityPolicy'
                  permission for {resource ID}"
     }}]
}

A seguir

A API Move Analysis fornece detalhes que ajudam a reduzir bloqueadores e outros problemas ao mover um projeto de um recurso de organização para outro. Para mais informações sobre como migrar projetos entre recursos da organização, consulte Como migrar projetos.