Migra una carga de trabajo

En esta página, se describe cómo realizar un análisis de cumplimiento antes de migrar un proyecto existente en una carpeta de Assured Workloads. Este análisis compara el proyecto de origen y la carpeta de destino de Assured Workloads determinar los cambios que se podrían requerir antes o después de iniciar el migración de sistemas. Por ejemplo, si tienes un proyecto que quieres mover a una carpeta de Assured Workloads configurada para FedRAMP Moderate, puedes abordar de forma proactiva cualquier posible incumplimiento de cumplimiento que pueda ocurrir antes de mover el proyecto.

El análisis de movimientos muestra los siguientes tipos de resultados:

  • El proyecto de origen usa productos o servicios no compatibles.
  • El proyecto fuente contiene recursos que se encuentran en una ubicación no permitida.
  • El proyecto de origen está configurado con valores de restricción de la política de la organización que son incompatibles con la carpeta de destino de Assured Workloads.

Es importante descubrir estos hallazgos antes de intentar un traslado. De forma predeterminada, una carpeta de Assured Workloads solo puede contener tipos de recursos para el servicios compatibles con el paquete de control de la carpeta. Si tu proyecto contiene recursos para un servicio no admitido por el paquete de control de la carpeta, es posible que debas para volver a implementar o quitar esos recursos.

Si bien puedes cambiar la lista predeterminada de servicios admitidos para una carpeta de Assured Workloads si modificas su política de la organización de restricción del uso de recursos, lo que permite que se implementen servicios que no cumplen con las políticas en tu carpeta, las verificaciones de cumplimiento en segundo plano ignorarán el servicio que no cumple con las políticas y sus recursos. Por lo tanto, si habilitas un servicio no compatible, estás aceptando el riesgo de que tu carga de trabajo deje de cumplir con los requisitos.

Antes de comenzar

  • Recopila los IDs de recursos del proyecto de origen y del destino. Assured Workloads.
  • Asigna o verifica los permisos de IAM en el proyecto de origen y en la carpeta de Assured Workloads de destino para garantizar que el emisor esté autorizado para realizar la migración.

Permisos de IAM obligatorios

Para realizar un análisis de migración, se debe otorgar IAM al emisor permisos con un función predefinida que incluya un conjunto más amplio de permisos o una rol personalizado restringido los permisos mínimos necesarios.

Los siguientes permisos son obligatorios:

  • assuredworkloads.workload.get en la carga de trabajo de destino
  • cloudasset.assets.searchAllResources en el proyecto de origen
  • orgpolicy.policy.get en el proyecto de origen y en la carpeta de Assured Workloads de destino

Realiza un análisis de migración

Cuando se realiza un análisis sobre el proyecto de origen y el destino de Assured Workloads, debes abordar los hallazgos antes de migrar del proyecto al destino. Si bien los resultados no te impiden mover el proyecto, pueden generar incumplimientos de cumplimiento en la carpeta de Assured Workloads de destino.

Estos hallazgos son de dos tipos diferentes:

  • Advertencia: Un resultado de advertencia se produce cuando el proyecto de origen es potencialmente incompatible con el destino y puede generar un incumplimiento de cumplimiento. Se deben investigar las advertencias para verificar que la incompatibilidad sea aceptable o que se deba abordar antes del traslado.
  • Bloqueador: Un resultado bloqueador se produce cuando se detecta un incumplimiento entre el proyecto de origen y el de destino. Se deben abordar los bloqueadores antes de continuar con el traslado.

Se informan los siguientes tipos de resultados:

  • Ubicaciones de recursos: Muchos paquetes de control aplican restricciones de ubicación. para que los recursos se adhieran a los requisitos de cumplimiento, por ejemplo, si la fuente El proyecto contiene recursos ubicados en una ubicación no permitida.

    Para resolver este problema, mueve los recursos afectados a ubicaciones permitidas, bórralos o modifica la configuración de la restricción de la política de la organización gcp.resourceLocations del destino.

  • Productos o servicios no compatibles: Cada paquete de control admite una lista específica de productos y servicios de Google Cloud. Si tu proyecto utiliza un servicio que no es compatible con Assured Workloads de destino del paquete de control de la carpeta, aparecerá como hallazgo.

  • Restricciones de las políticas de la organización: Se puede configurar tu proyecto de origen con valores de restricción de la política de la organización que difieren del destino Política vigente de la carpeta de Assured Workloads o no cumplen con las políticas con el paquete de control de destino. Este análisis se realiza solo para las restricciones que son relevantes para el paquete de control de la carpeta de destino de Assured Workloads. No se evalúan todos los valores de restricción del proyecto. Existen varios resultados posibles, como los siguientes problemas:

    • Tu proyecto y la política vigente del destino no son compatibles.
    • Tu proyecto tiene valores de restricción de la política de la organización que no están establecidos en el destino, o viceversa.
    • Tu proyecto tiene valores de restricción de la política de la organización que no cumplen con el paquete de control de destino.

    Si se encuentra un bloqueador para una restricción de la política de la organización, la respuesta incluye los valores esperados que cumplen con el objetivo de control . Puedes usar estos valores esperados para realizar cambios en tu proyecto antes de realizar una migración.

Para resolver este problema, determina qué restricción de la política de la organización se debe modificarse y realiza los cambios necesarios.

Tipos de resultados no admitidos

El análisis de migración no admite los siguientes tipos de resultados:

  • Incompatibilidades a nivel de los recursos para restricciones de políticas de la organización que no sean gcp.resourceLocations Por ejemplo, algunos paquetes de control configurada con la restricción gcp.restrictCmekCryptoKeyProjects global el objeto compute.disableNestedVirtualization específico de Compute Engine restricción; incompatibilidades con estas restricciones entre la fuente destino no se analizan ni se informan.
  • Funciones específicas del servicio que pueden estar inhabilitadas para un paquete de control determinado. Por ejemplo, las verificaciones de tiempo de actividad de Cloud Monitoring están inhabilitadas para las carpetas IL4 y las funciones remotas de BigQuery están inhabilitadas para las carpetas ITAR. Si tu proyecto de origen usa estas funciones inhabilitadas, estas incompatibilidades no se analizan ni se informan.

Analiza cómo mover un proyecto a una carpeta de Assured Workloads

El método analyzeWorkloadMove realiza un análisis del movimiento del proyecto de origen a la carpeta de destino de Assured Workloads.

En el siguiente ejemplo de solicitud, reemplaza los siguientes parámetros por los tuyos:

  • ENDPOINT_URI: el URI del extremo de servicio de Assured Workloads. Este URI debe ser el extremo que coincida con la ubicación de la carga de trabajo de destino, como https://us-west1-assuredworkloads.googleapis.com para una carga de trabajo regionalizada en la región us-west1 y https://us-assuredworkloads.googleapis.com para una carga de trabajo multirregional en EE.UU.
  • DESTINATION_ORGANIZATION_ID: El ID de la organización de la carga de trabajo de destino a la que se migrará el proyecto de origen. Por ejemplo: 919698201234
  • DESTINATION_LOCATION_ID: Es la ubicación del destino. carga de trabajo. Por ejemplo: us-west1 o us. Corresponde al valor data region de la carga de trabajo.
  • DESTINATION_WORKLOAD_ID: El ID de la carpeta de cargas de trabajo garantizadas de destino a la que se migrará el proyecto de origen. Por ejemplo: 00-701ea036-7152-4780-a867-9f5
  • SOURCE_PROJECT_ID: Parámetro de consulta para el ID de la fuente proyecto que se migrará. Por ejemplo: my-project-123.
  • ASSET_TYPES: Opcional Un tipo de activo por parámetro de consulta que filtrará los resultados solo para los tipos especificados. Por ejemplo: cloudresourcemanager.googleapis.com/Project
  • PAGE_SIZE: Opcional Es un parámetro de consulta para la cantidad de resultados que se mostrarán por página. Por ejemplo: 5.
  • PAGE_TOKEN: Opcional Parámetro de consulta del token para continuar resultados paginados. Por ejemplo: CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA.

Método HTTP, URL y parámetros de consulta:

GET https://[ENDPOINT_URI]/v1/organizations/[DESTINATION_ORGANIZATION_ID]/locations/[DESTINATION_LOCATION_ID]/workloads/[DESTINATION_WORKLOAD_ID]:analyzeWorkloadMove?project=projects/SOURCE_PROJECT_ID&page_size=PAGE_SIZE&page_token=PAGE_TOKEN

Por ejemplo:

GET https://us-west1-assuredworkloads.googleapis.com/v1/organizations/919698298765/locations/us-west1/workloads/00-701ea036-7152-4781-a867-9f5:analyzeWorkloadMove?project=projects/my-project-123&page_size=5&page_token=CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "assetMoveAnalyses": [
    {
      "asset": "//orgpolicy.googleapis.com/projects/130536381852/policies/container.restrictNoncompliantDiagnosticDataAccess",
      "assetType": "orgpolicy.googleapis.com/Policy"
    },
    {
      "asset": "//compute.googleapis.com/projects/my-project-123/global/routes/default-route-9ca6e6b0ab7326f0",
      "assetType": "compute.googleapis.com/Route",
      "analysisGroups": [
        {
          "displayName": "RESOURCE_LOCATIONS",
          "analysisResult": {
            "warnings": [
              {
                "detail": "The asset's location 'global' is incompatible with the gcp.resourceLocations org policy effective at the target. In case of 'global only' assets, this may be ignored."
              }
            ]
          }
        }
      ]
    },
    {
      "asset": "//compute.googleapis.com/projects/my-project-123/regions/europe-west10/subnetworks/default",
      "assetType": "compute.googleapis.com/Subnetwork",
      "analysisGroups": [
        {
          "displayName": "RESOURCE_LOCATIONS",
          "analysisResult": {
            "blockers": [
              {
                "detail": "The asset's location 'europe-west10' is incompatible with the gcp.resourceLocations org policy effective at the target."
              }
            ]
          }
        }
      ]
    },
    {
      "asset": "//serviceusage.googleapis.com/projects/130536381852/services/servicemanagement.googleapis.com",
      "assetType": "serviceusage.googleapis.com/Service"
    },
    {
      "asset": "//serviceusage.googleapis.com/projects/130536381852/services/monitoring.googleapis.com",
      "assetType": "serviceusage.googleapis.com/Service"
    },
    {
      "asset": "//serviceusage.googleapis.com/projects/130536381852/services/bigquerymigration.googleapis.com",
      "assetType": "serviceusage.googleapis.com/Service",
      "analysisGroups": [
        {
          "displayName": "DISALLOWED_SERVICES",
          "analysisResult": {
            "warnings": [
              {
                "detail": "This service is not allowed by the gcp.restrictServiceUsage org policy effective at the target"
              }
            ]
          }
        }
      ]
    },
    {
      "asset": "//cloudresourcemanager.googleapis.com/projects/my-project-123",
      "assetType": "cloudresourcemanager.googleapis.com/Project",
      "analysisGroups": [
        {
          "displayName": "ORG_POLICIES",
          "analysisResult": {
            "warnings": [
              {
                "detail": "constraints/gcp.resourceLocations: Target applies/inherits this custom policy and it is not applied by the source. Upon moving, this policy will get inherited from the target."
              },
              {
                "detail": "constraints/compute.disableInstanceDataAccessApis: Source applies this custom policy and it is not applied by the target."
              },
              {
                "detail": "constraints/cloudkms.allowedProtectionLevels: Source and target set different values for this policy."
              },
              {
                "detail": "constraints/container.restrictNoncompliantDiagnosticDataAccess: Source and target set different values for this policy."
              },
              {
                "detail": "constraints/gcp.restrictServiceUsage: Target applies/inherits this custom policy and it is not applied by the source. Upon moving, this policy will get inherited from the target."
              }
            ],
            "blockers": [
              {
                "detail": "constraints/gcp.resourceLocations: The value applied at the source is not compliant with the target compliance program. The expected allowed values are [us-west4, us-west1, us-west2, us-west3, us-central1, us-east1, us-east4, us-south1, us-central2, us-east5]."
              },
              {
                "detail": "constraints/container.restrictNoncompliantDiagnosticDataAccess: The value applied at the source is not compliant with the target compliance program. The expected value is [true]."
              },
              {
                "detail": "constraints/container.restrictTLSVersion: The value applied at the source is not compliant with the target compliance program. The expected denied values are [TLS_VERSION_1, TLS_VERSION_1_1]."
              }
            ]
          }
        }
      ]
    }
  ],
  "nextPageToken": "Ch8wLDc0MzY3NTExNCwzMzg4ODM1NTM2NDQ0NTg4MDMy"
}

Para filtrar los resultados por un tipo de activo específico, usa el parámetro de consulta asset_types:

GET https://assuredworkloads.googleapis.com/v1/organizations/919698298765/locations/us-west1/workloads/00-701ea036-7152-4781-a867-9f5:analyzeWorkloadMove?project=projects/my-project-123&asset_types=cloudresourcemanager.googleapis.com/Project&page_size=5&page_token=CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA

Los resultados solo contendrán los hallazgos del tipo especificado (cloudresourcemanager.googleapis.com/Project):

{
  "assetMoveAnalyses": [
    {
      "asset": "//cloudresourcemanager.googleapis.com/projects/my-project-123",
      "assetType": "cloudresourcemanager.googleapis.com/Project",
      "analysisGroups": [
        {
          "displayName": "ORG_POLICIES",
          "analysisResult": {
            "warnings": [
              {
                "detail": "constraints/gcp.resourceLocations: Target applies/inherits this custom policy and it is not applied by the source. Upon moving, this policy will get inherited from the target."
              },
              {
                "detail": "constraints/compute.disableInstanceDataAccessApis: Source applies this custom policy and it is not applied by the target."
              }
            ],
            "blockers": [
              {
                "detail": "constraints/gcp.resourceLocations: The value applied at the source is not compliant with the target compliance program. The expected allowed values are [us-west4, us-west1, us-west2, us-west3, us-central1, us-east1, us-east4, us-south1, us-central2, us-east5]."
              }
            ]
          }
        }
      ]
    }
  ],
  "nextPageToken": "Ch8wLDc0MzY3NTExNCwzMzg4ODM1NTM2NDQ0NTg4MDMy"
}

Para filtrar los resultados por más de un tipo de activo, agrega cada uno como un parámetro de consulta adicional:

GET https://assuredworkloads.googleapis.com/v1/organizations/919698298765/locations/us-west1/workloads/00-701ea036-7152-4781-a867-9f5:analyzeWorkloadMove?project=projects/my-project-123&asset_types=cloudresourcemanager.googleapis.com/Project&asset_types=serviceusage.googleapis.com/Service&page_size=5&page_token=CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA

Los resultados solo contendrán los resultados de los tipos especificados (cloudresourcemanager.googleapis.com/Project y serviceusage.googleapis.com/Service):

{
  "assetMoveAnalyses": [
    {
      "asset": "//serviceusage.googleapis.com/projects/130536381852/services/bigquerymigration.googleapis.com",
      "assetType": "serviceusage.googleapis.com/Service",
      "analysisGroups": [
        {
          "displayName": "DISALLOWED_SERVICES",
          "analysisResult": {
            "warnings": [
              {
                "detail": "This service is not allowed by the gcp.restrictServiceUsage org policy effective at the target"
              }
            ]
          }
        }
      ]
    },
    {
      "asset": "//cloudresourcemanager.googleapis.com/projects/my-project-123",
      "assetType": "cloudresourcemanager.googleapis.com/Project",
      "analysisGroups": [
        {
          "displayName": "ORG_POLICIES",
          "analysisResult": {
            "warnings": [
              {
                "detail": "constraints/gcp.resourceLocations: Target applies/inherits this custom policy and it is not applied by the source. Upon moving, this policy will get inherited from the target."
              },
              {
                "detail": "constraints/compute.disableInstanceDataAccessApis: Source applies this custom policy and it is not applied by the target."
              }
            ],
            "blockers": [
              {
                "detail": "constraints/gcp.resourceLocations: The value applied at the source is not compliant with the target compliance program. The expected allowed values are [us-west4, us-west1, us-west2, us-west3, us-central1, us-east1, us-east4, us-south1, us-central2, us-east5]."
              }
            ]
          }
        }
      ]
    }
  ],
  "nextPageToken": "Ch8wLDc0MzY3NTExNCwzMzg4ODM1NTM2NDQ0NTg4MDMy"
}

Después de realizar el análisis de migración, revisa y resuelve cualquier advertencias o bloqueadores, y vuelve a ejecutar el análisis para verificar que se haya abordado. Luego, puedes continuar con el proceso para trasladar el proyecto.

¿Qué sigue?