Analizar el traslado de proyectos

En esta guía se describe cómo usar la API Analyze Move de Cloud Asset Inventory para obtener un informe detallado sobre las advertencias y los bloqueos de una lista de sistemas de políticas críticas antes de mover tu proyecto.

Habilitar APIs

Selecciona o crea un proyecto que actúe como consumidor de la API, habilita la API Cloud Asset

Este proyecto de consumidor puede ser diferente del proyecto que quieras analizar y migrar. El proyecto de consumidor se usará para generar credenciales con las que hacer solicitudes a la API.

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

Permisos obligatorios

Para realizar un análisis de movimiento de proyectos, necesitas un rol que conceda el permiso cloudasset.assets.analyzeMove, como Lector de Cloud Asset o Lector.

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

  • Si quieres ver las políticas de permiso 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 quieres ver las políticas de permiso heredadas de la carpeta superior del proyecto de origen, necesitas el permiso resourcemanager.folders.getIamPolicy en la carpeta superior del proyecto de origen.

  • Si quieres ver las políticas de permiso del 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 quieres ver las políticas de organización que se heredan en este proyecto, debes tener el permiso orgpolicy.policy.get en el proyecto de origen.

  • Si quieres ver las políticas de cortafuegos de Compute Engine que se han heredado en este proyecto, necesitas el permiso compute.organizations.setSecurityPolicy en el recurso de la carpeta o la organización de origen.

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

Realizar el análisis

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

gcloud

Para analizar los efectos 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 efectos de mover un proyecto a otra carpeta, ejecuta el comando con --destination-folder:

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

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

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

Donde:

  • PROJECT_ID es el ID de proyecto único del proyecto que vas a migrar. Por ejemplo, --myProject123.

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

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

API

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

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

Donde:

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

  • DESTINATION_NAME es el nombre del recurso de carpeta u organización al que se va a reasignar el recurso de destino.Google Cloud El análisis se realizará sobre los efectos 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.

Mover respuestas de análisis

La respuesta que recibes de la API Move Analysis se agrupa por nombre de servicio. Debajo de cada servicio, se muestra una lista de advertencias y bloqueos aplicables a esta migración de proyecto. Si este análisis devuelve algún bloqueo, significa que la migración del proyecto se bloqueará en el tiempo de ejecución si continúas con el traslado antes de resolverlos.

Solucionar errores

Si la API Move Analysis devuelve un error, incluye un código gRPC estándar, así como un mensaje que describe el motivo por el que la API Move Analysis no ha podido analizar el proyecto.

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

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

Ejemplo de mensaje de error

En el siguiente ejemplo se muestra el código de error devuelto para un usuario que no tiene el permiso cloudasset.assets.analyzeMove en el proyecto que se va a 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 movimiento de recursos. En el siguiente ejemplo se muestra el error devuelto por el servicio de cortafuegos jerárquico cuando el usuario no tiene permiso compute.organizations.setSecurityPolicy en el proyecto que se va a 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}"
     }}]
}

Siguientes pasos

La API Move Analysis proporciona detalles que ayudan a mitigar los bloqueos y otros problemas al mover 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 el artículo Migrar proyectos.