Migrar una carga de trabajo
En esta página se describe cómo realizar un análisis de cumplimiento antes de migrar un proyecto a una carpeta de Assured Workloads. Este análisis compara el proyecto de origen y la carpeta de Assured Workloads de destino para determinar qué cambios pueden ser necesarios antes o después de iniciar la migración. 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 infracción del cumplimiento que pueda producirse antes de mover el proyecto.
La función de análisis de movimientos devuelve los siguientes tipos de resultados:
- El proyecto de origen usa productos o servicios no admitidos.
- El proyecto de origen 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 organización que no son compatibles con la carpeta de Assured Workloads de destino.
Es importante descubrir estos datos antes de intentar hacer una transferencia. De forma predeterminada, una carpeta de Assured Workloads solo puede contener tipos de recursos de los servicios admitidos por el paquete de control de la carpeta. Si tu proyecto contiene recursos de un servicio que no es compatible con el paquete de control de la carpeta, es posible que tengas que volver a implementar o eliminar esos recursos.
Aunque puedes cambiar la lista predeterminada de servicios admitidos de una carpeta de Assured Workloads modificando su política de organización de restricción de uso de recursos (lo que permite que se implementen servicios no conformes en tu carpeta), el servicio no conforme y sus recursos se ignorarán en las comprobaciones de cumplimiento en segundo plano. Por lo tanto, al habilitar un servicio no admitido, aceptas el riesgo de que tu carga de trabajo deje de cumplir los requisitos.
Migrar carpetas y proyectos de Assured Workloads
Si vas a migrar carpetas o proyectos de Assured Workloads, solo puedes hacerlo a una carpeta que use el mismo paquete de control. De lo contrario, se te podrían aplicar tarifas de facturación adicionales y se podría poner en riesgo tu estado de cumplimiento.
Antes de empezar
- Recoge los IDs de recursos del proyecto de origen y de la carpeta de Assured Workloads de destino.
- Asigna o verifica los permisos de gestión de identidades y accesos en el proyecto de origen y en la carpeta de Assured Workloads de destino para asegurarte de que la persona que llama tiene autorización para realizar la migración.
Permisos de gestión de identidades y accesos necesarios
Para realizar un análisis de migración, el llamante debe tener permisos de gestión de identidades y accesos. Para ello, puede usar un rol predefinido que incluya un conjunto más amplio de permisos o un rol personalizado que se limite a los permisos mínimos necesarios.
Son obligatorios los siguientes permisos:
assuredworkloads.workload.get
en la carga de trabajo de destinocloudasset.assets.searchAllResources
en el proyecto de origenorgpolicy.policy.get
en el proyecto de origen y en la carpeta de cargas de trabajo protegidas de destino
Realizar un análisis de migración
Cuando realices un análisis en el proyecto de origen y en la carpeta de Assured Workloads de destino, debes solucionar los problemas que se detecten antes de mover el proyecto al destino. Aunque los resultados no te impiden mover el proyecto, pueden provocar infracciones de cumplimiento en la carpeta de Assured Workloads de destino.
Estos resultados son de dos tipos diferentes:
- Advertencia: Se produce un resultado de advertencia cuando el proyecto de origen es potencialmente incompatible con el de destino y puede dar lugar a una infracción de cumplimiento. Las advertencias se deben investigar para verificar si la incompatibilidad es aceptable o si se debe solucionar antes de la migración.
- Bloqueo: se produce un bloqueo cuando se detecta una infracción de cumplimiento entre el proyecto de origen y el de destino. Los bloqueadores deben resolverse antes de continuar con la transferencia.
Se informa de los siguientes tipos de resultados:
Ubicaciones de los recursos: muchos paquetes de control aplican restricciones de ubicación a los recursos para cumplir los requisitos, por ejemplo, si tu proyecto de origen contiene recursos que se encuentran en una ubicación no permitida.
Para resolver este problema, mueve los recursos afectados a las ubicaciones permitidas, elimínalos o modifica el ajuste de la restricción de la política de organización
gcp.resourceLocations
de destino.Productos o servicios no admitidos: cada paquete de controles admite una lista específica de Google Cloud productos y servicios. Si tu proyecto usa un servicio que no es compatible con el paquete de controles de la carpeta de Assured Workloads de destino, se mostrará como un resultado.
Restricciones de la política de organización: es posible que el proyecto de origen tenga valores de restricción de la política de organización que difieran de la política efectiva de la carpeta de Assured Workloads de destino o que no cumplan el paquete de control de destino. Este análisis solo se realiza en las restricciones que son relevantes para el paquete de control de la carpeta de Assured Workloads de destino. No se evalúan todos los valores de las restricciones del proyecto. Puede haber varios resultados, como los siguientes:
- Tu proyecto y la política efectiva del destino no son compatibles.
- Tu proyecto tiene valores de restricción de la política de organización que no están definidos en el destino o viceversa.
- Tu proyecto tiene valores de restricción de la política de organización que no cumplen el paquete de control de destino.
Si se encuentra un bloqueador para una restricción de política de organización, la respuesta incluye los valores esperados que cumplen el paquete de control de destino. Puedes usar estos valores esperados para hacer cambios en tu proyecto antes de realizar una migración.
Para solucionar este problema, determine qué restricción de la política de la organización debe modificarse y haga los cambios necesarios.
Tipos de resultados no admitidos
El análisis de la migración no admite los siguientes tipos de resultados:
- Incompatibilidades a nivel de recurso para restricciones de políticas de organización distintas de
gcp.resourceLocations
. Por ejemplo, algunos paquetes de control se configuran con la restricción globalgcp.restrictCmekCryptoKeyProjects
o con la restriccióncompute.disableNestedVirtualization
específica de Compute Engine. Las incompatibilidades con estas restricciones entre el origen y el destino no se analizan ni se notifican. - Funciones específicas de un servicio que pueden inhabilitarse en un paquete de controles determinado. Por ejemplo, las comprobaciones de tiempo de actividad de Cloud Monitoring están inhabilitadas en las carpetas de IL4 y las funciones remotas de BigQuery están inhabilitadas en las carpetas de ITAR. Si tu proyecto de origen usa estas funciones inhabilitadas, no se analizarán ni se informarán estas incompatibilidades.
Analizar el traslado de un proyecto a una carpeta de Assured Workloads
El método
analyzeWorkloadMove
realiza un análisis del traslado del proyecto de origen a la carpeta de Assured Workloads de destino.
En el ejemplo de solicitud que se muestra a continuación, sustituya los siguientes parámetros por los suyos:
- ENDPOINT_URI: el URI del endpoint del servicio de Assured Workloads.
Este URI debe ser el endpoint 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ónus-west1
yhttps://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: la ubicación de la carga de trabajo de destino. Por ejemplo,
us-west1
ous
. Corresponde al valordata region
de la carga de trabajo. - DESTINATION_WORKLOAD_ID: ID de la carpeta de Assured Workloads 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 del ID del proyecto de origen que se va a migrar. Por ejemplo:
my-project-123
- ASSET_TYPES: opcional. Un tipo de recurso por parámetro de consulta que filtrará los resultados para que solo se muestren los tipos especificados.
Por ejemplo:
cloudresourcemanager.googleapis.com/Project
- PAGE_SIZE: opcional. Parámetro de consulta para el número de resultados que se devolverán por página, hasta un máximo de 50. Por ejemplo:
5
- PAGE_TOKEN: opcional. Parámetro de consulta del token para continuar
los 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 siguiente:
{ "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 recurso 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 recurso, añada cada uno como 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 hallazgos 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" }
Una vez que hayas realizado el análisis de la migración, revisa y resuelve las advertencias o los bloqueos, y vuelve a ejecutar el análisis para comprobar que se han solucionado. A continuación, puedes mover el proyecto.
Siguientes pasos
- Consulta información sobre los paquetes de control de Assured Workloads.
- Consulta qué productos son compatibles con cada paquete de controles.