Analiza el movimiento de proyectos

La API de Analyze Move de Cloud Asset Inventory te permite generar un informe detallado de las advertencias y los bloqueadores en los sistemas de políticas críticos antes de mover un proyecto. Este informe te ayuda a identificar posibles conflictos de políticas y resolver problemas antes de iniciar la migración.

Habilita las APIs

Selecciona o crea un proyecto como tu proyecto de consumidor de la API y habilita la API de Cloud Asset.

Este proyecto de consumidor puede ser diferente del proyecto que planeas analizar y migrar. El proyecto de consumidor se usará para generar credenciales que permitan realizar solicitudes a la API.

En la siguiente sección, se describen los roles y permisos necesarios que se deben otorgar en el proyecto de origen que planeas analizar.

Permisos necesarios

Para realizar un análisis de movimiento de proyectos, necesitas una función que otorgue el permiso cloudasset.assets.analyzeMove, como Visualizador de recursos de Cloud o Visualizador. Puedes otorgar este rol en el proyecto o en su carpeta superior o recurso de organización.

Para recibir análisis sobre un servicio, también necesitas roles relacionados con esos servicios. Entre estos permisos, se incluyen los siguientes:

  • Si deseas ver las políticas de permisos heredadas del recurso de organización superior del proyecto de origen, necesitas el permiso resourcemanager.organizations.getIamPolicy en el recurso de organización superior del proyecto de origen.

  • Si deseas ver las políticas de permisos heredadas de la carpeta superior del proyecto de origen, necesitas el permiso resourcemanager.folders.getIamPolicy en la carpeta superior del proyecto de origen.

  • Si deseas ver las políticas de permisos en el proyecto, necesitas el permiso resourcemanager.projects.getIamPolicy en el proyecto de origen.

  • Si quieres ver las políticas de denegación heredadas del recurso de organización superior del proyecto de origen, necesitas el permiso iam.denypolicies.get en el recurso de organización superior del proyecto de origen.

  • Si deseas ver las políticas de la organización que se heredan en este proyecto, necesitas el permiso orgpolicy.policy.get en el proyecto de origen.

  • Si deseas ver las políticas de firewall de Compute Engine que se heredan en este proyecto, necesitas el permiso compute.organizations.setSecurityPolicy en la carpeta de origen o en el recurso de organización. Aunque este permiso contiene "set", es necesario para recuperar y ver las políticas de seguridad heredadas.

  • Si quieres ver las etiquetas heredadas en este proyecto, necesitas el permiso resourcemanager.hierarchyNodes.listEffectiveTags en el proyecto de origen o en sus nodos principales.

Realiza el análisis

Puedes usar Google Cloud CLI o la API para analizar la migración de un recurso desde su lugar actual en la jerarquía de recursos.

gcloud

Para analizar los impactos de migrar un proyecto desde su posición actual en la jerarquía de recursos, usa el comando gcloud asset analyze-move:

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

Para analizar los impactos de mover un proyecto a una carpeta diferente, ejecuta el comando con --destination-folder:

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

Para analizar los impactos de mover un proyecto a una organización diferente, ejecuta el comando con --destination-organization:

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

Aquí:

  • PROJECT_ID es el ID del proyecto único del proyecto que estás migrando. Por ejemplo, --myProject123

  • FOLDER_ID es el ID numérico de la carpeta de destino en la que se realizará el análisis. Por ejemplo, 45678901123

  • ORGANIZATION_ID es el ID numérico de la organización de destino en la que se realizará el análisis. Por ejemplo, 78901123456

API

Para analizar los impactos de migrar un proyecto desde su posición actual en la jerarquía de recursos sin realizar el traslado, usa el método cloudasset.analyzeMove:

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

Aquí:

  • resource es el nombre del recurso en el que se realizará el análisis. Solo se admiten recursos de proyecto, por lo que debe ser el ID del proyecto o un número de proyecto. Por ejemplo, projects/my-project-id o projects/12345.

  • DESTINATION_NAME es el nombre del recurso de carpeta o de organización deGoogle Cloud para cambiar el recurso superior del recurso de destino. El análisis se realizará sobre los impactos de mover el recurso al elemento superior de destino especificado. El destino debe ser un número de carpeta o un número de recurso de organización. Por ejemplo: folders/123 o organizations/123.

Respuestas del análisis de movimiento

La respuesta que recibes de la API de Move Analysis se agrupa por nombre de servicio. Debajo de cada servicio, hay una lista de advertencias y bloqueadores aplicables a esta migración de proyectos. Cualquier obstáculo que se muestre en este análisis significa que la migración del proyecto se bloqueará en el entorno de ejecución si continúas con el traslado antes de resolverlo.

Solución de errores

Si la API de análisis de movimiento muestra un error, incluye un código gRPC estándar, así como un mensaje que describe el motivo del error de la API de análisis de movimiento para analizar el proyecto.

En la siguiente tabla, se describen los códigos de error que podría mostrar la API de Move Analysis:

Nombre del error Código de error Descripción
Argumento no válido 3 Se muestra si llamas a la API en un proyecto con un argumento no válido, como un nombre de recurso incorrecto.
Permiso denegado 7 Se muestra si no tienes los permisos necesarios para realizar el análisis o si el proyecto de origen no existe.
Interno 13 Se muestra si hay un problema con una llamada a un sistema de políticas, como Identity and Access Management o la política de la organización. Esto no indica que la migración no sea posible, y puedes volver a intentar el análisis después de verificar si hay una interrupción en el servicio.
No disponible 14 Se devuelve si un sistema interno no está sincronizado. Esto no indica que la migración no sea posible, y puedes volver a intentar el análisis.
Sin autenticar 16 Se muestra si no proporcionaste las credenciales correctas para realizar este análisis.

Ejemplo de mensaje de error

En el siguiente ejemplo, ilustra el código de error que se muestra para un usuario que no tiene el permiso cloudasset.assets.analyzeMove en el proyecto que se migrará:

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

Es posible que algunos de los sistemas de políticas no puedan analizar el traslado de recursos. En el siguiente ejemplo, se muestra el error que devuelve el servicio de firewall jerárquico cuando el usuario no tiene el permiso compute.organizations.setSecurityPolicy en el proyecto que se migrará:

{
  "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}"
     }}]
}

¿Qué sigue?

La API de Move Analysis proporciona detalles que ayudan a mitigar los bloqueadores y otros problemas cuando se mueve un proyecto de un recurso de organización a otro. Para obtener más información sobre cómo migrar proyectos entre recursos de organización, consulta Migra proyectos entre recursos de organización.