Analisar a mudança do projeto

A API Analyze Move do Inventário de recursos do Cloud permite gerar um relatório detalhado de avisos e bloqueadores em sistemas de políticas essenciais antes de mover um projeto. Esse relatório ajuda a identificar possíveis conflitos de política e resolver problemas antes de iniciar a migração.

Ativar 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.

Permissões exigidas

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. É possível conceder esse papel no projeto ou na pasta pai ou no recurso da organização.

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

  • Se você quiser ver as políticas de permissão herdadas do recurso da organização pai do projeto de origem, precisará da permissão resourcemanager.organizations.getIamPolicy no recurso da organização pai do projeto de origem.

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

  • Para ver as políticas de permissão no projeto, é necessário ter a permissão resourcemanager.projects.getIamPolicy no projeto de origem.

  • Se você quiser ver as políticas de negação herdadas do recurso da organização pai do projeto de origem, precisará da permissão iam.denypolicies.get no recurso da organização pai do 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.

  • Se você quiser ver as políticas de firewall do Compute Engine herdadas neste projeto, precisará da permissão compute.organizations.setSecurityPolicy na pasta de origem ou no recurso da organização. Embora essa permissão contenha "set", ela é necessária para recuperar e visualizar as políticas de segurança herdadas.

  • Para ver as tags herdadas neste projeto, você precisa da permissão resourcemanager.hierarchyNodes.listEffectiveTags no projeto de origem ou nos nós ancestrais dele.

Como fazer a análise

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

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 de mover 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 de mover um projeto para outra organização, 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, precisa ser o ID do projeto ou o número do projeto. Por exemplo, projects/my-project-id ou projects/12345.

  • DESTINATION_NAME é o nome da pasta ou 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 do 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 mitigar 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 Migrar projetos entre recursos da organização.