Migrer une charge de travail
Cette page explique comment effectuer une analyse de conformité avant de migrer un projet existant vers un dossier Assured Workloads. Cette analyse compare le projet source et le dossier Assured Workloads de destination pour déterminer les modifications susceptibles d'être requises avant ou après le lancement de la migration. Par exemple, si vous souhaitez déplacer un projet vers un dossier Assured Workloads configuré pour le niveau d'impact modéré du programme FedRAMP, vous pouvez résoudre de manière proactive les cas de non-conformité potentiels qui pourraient se produire avant de déplacer le projet.
Les types de résultats suivants sont renvoyés par l'analyse des mouvements:
- Le projet source utilise des produits ou services non compatibles.
- Le projet source contient des ressources situées dans un emplacement non autorisé.
- Le projet source est configuré avec des valeurs de contrainte de règle d'administration incompatibles avec le dossier Assured Workloads de destination.
Il est important de les découvrir avant de tenter de déplacer un élément. Par défaut, un dossier Assured Workloads ne peut contenir que des types de ressources pour les services compatibles avec le package de contrôle du dossier. Si votre projet contient des ressources pour un service non compatible avec le package de contrôle du dossier, vous devrez peut-être redéployer ou supprimer ces ressources.
Bien que vous puissiez modifier la liste par défaut des services compatibles pour un dossier Assured Workloads en modifiant sa règle d'administration de restriction d'utilisation des ressources (ce qui permet de déployer des services non conformes dans votre dossier), le service non conforme et ses ressources seront ignorés par les vérifications de conformité en arrière-plan. Par conséquent, en activant un service non compatible, vous choisissez d'accepter le risque qu'il puisse entraîner la non-conformité de votre charge de travail.
Avant de commencer
- Rassemblez les ID de ressource du projet source et du dossier de charges de travail Assured Workloads de destination.
- Attribuez ou vérifiez les autorisations IAM à la fois au projet source et au dossier de destination Assured Workloads pour vous assurer que l'appelant est autorisé à effectuer la migration.
Autorisations IAM requises
Pour effectuer une analyse de migration, l'appelant doit disposer d'autorisations IAM à l'aide d'une des méthodes suivantes : rôle prédéfini qui comprend un ensemble d'autorisations plus étendu, ou rôle personnalisé qui est limité aux autorisations minimales nécessaires.
Les autorisations suivantes sont requises :
assuredworkloads.workload.get
sur la charge de travail de destinationcloudasset.assets.searchAllResources
sur le projet sourceorgpolicy.policy.get
sur le projet source et le dossier Assured Workloads de destination
Effectuer une analyse de migration
Lorsque vous effectuez une analyse du projet source et du dossier Assured Workloads de destination, vous devez résoudre les problèmes détectés avant de déplacer le projet vers la destination. Bien que les résultats ne vous empêchent pas de déplacer le projet, ils peuvent entraîner des cas de non-conformité dans le dossier Assured Workloads de destination.
Ces résultats sont de deux types:
- Avertissement: Un résultat d'avertissement se produit lorsque le projet source est potentiellement incompatible avec la destination et peut entraîner un non-respect des règles. Les avertissements doivent être examinés pour vérifier que l'incompatibilité est acceptable ou doit être résolue avant le transfert.
- Blocage: un résultat de blocage se produit lorsqu'une non-conformité est détectée entre le projet source et la destination. Les obstacles doivent être résolus avant de procéder à un transfert.
Les types de résultats suivants sont indiqués:
Emplacements des ressources: de nombreux packages de contrôle appliquent des restrictions d'emplacement aux ressources pour qu'elles respectent les exigences de conformité, par exemple si votre projet source contient des ressources situées dans un emplacement non autorisé.
Pour résoudre ce problème, déplacez les ressources concernées vers des emplacements autorisés, supprimez-les ou modifiez le paramètre de contrainte de règle d'administration
gcp.resourceLocations
de la cible.Produits/services non compatibles: chaque package de contrôle accepte une liste spécifique de Google Cloud produits et services. Si votre projet utilise un service non compatible avec le package de contrôle du dossier Assured Workloads de destination, cela sera indiqué comme une anomalie.
Contraintes liées aux règles d'administration: votre projet source peut être configuré avec des valeurs de contrainte de règle d'administration différentes de celles du dossier de destination des charges de travail assurées, ou ne pas être conformes au package de contrôle cible. Cette analyse n'est effectuée que pour les contraintes pertinentes pour le package de contrôle du dossier de charges de travail Assured Workloads de destination. Toutes les valeurs de contrainte du projet ne sont pas évaluées. Plusieurs résultats sont possibles, par exemple:
- Votre projet et le règlement en vigueur de la destination sont incompatibles.
- Votre projet comporte des valeurs de contrainte de règle d'administration qui ne sont pas définies sur la destination, ou inversement.
- Votre projet contient des valeurs de contrainte de règle d'administration qui ne sont pas conformes au package de contrôle cible.
Si un bloqueur est détecté pour une contrainte de règle d'administration, la réponse inclut les valeurs attendues conformes au package de contrôle cible. Vous pouvez utiliser ces valeurs attendues pour apporter des modifications à votre projet avant d'effectuer une migration.
Pour résoudre ce problème, déterminez la contrainte de règle d'administration à modifier, puis apportez les modifications nécessaires.
Types de résultats non compatibles
L'analyse de migration n'est pas compatible avec les types de résultats suivants:
- Incompatibilités au niveau des ressources pour les contraintes liées aux règles d'administration autres que
gcp.resourceLocations
. Par exemple, certains packages de contrôle sont configurés avec la contraintegcp.restrictCmekCryptoKeyProjects
globale ou la contraintecompute.disableNestedVirtualization
spécifique à Compute Engine. Les incompatibilités avec ces contraintes entre la source et la destination ne sont pas analysées ni signalées. - Fonctionnalités spécifiques au service pouvant être désactivées pour un package de contrôle donné. Par exemple, les vérifications de l'état de fonctionnement de Cloud Monitoring sont désactivées pour les dossiers IL4 et les fonctions à distance de BigQuery sont désactivées pour les dossiers ITAR. Si votre projet source utilise ces fonctionnalités désactivées, ces incompatibilités ne sont pas analysées ni signalées.
Analyser le déplacement d'un projet vers un dossier Assured Workloads
La méthode analyzeWorkloadMove
analyse le déplacement du projet source vers le dossier Assured Workloads de destination.
Dans l'exemple de requête ci-dessous, remplacez les paramètres suivants par les vôtres :
- ENDPOINT_URI: URI du point de terminaison de service Assured Workloads.
Cet URI doit être le point de terminaison correspondant à l'emplacement de la charge de travail de destination, par exemple
https://us-west1-assuredworkloads.googleapis.com
pour une charge de travail régionalisée dans la régionus-west1
ethttps://us-assuredworkloads.googleapis.com
pour une charge de travail multirégionale aux États-Unis. - DESTINATION_ORGANIZATION_ID: ID de l'organisation de la charge de travail de destination vers laquelle le projet source sera migré. Exemple :
919698201234
- DESTINATION_LOCATION_ID: emplacement de la charge de travail de destination. Par exemple,
us-west1
ouus
. Il correspond à la valeurdata region
de la charge de travail. - DESTINATION_WORKLOAD_ID: ID du dossier de charges de travail Assured de destination vers lequel le projet source sera migré.
Exemple :
00-701ea036-7152-4780-a867-9f5
. - SOURCE_PROJECT_ID: paramètre de requête pour l'ID du projet source à migrer. Par exemple :
my-project-123
- ASSET_TYPES : facultatif. Un type d'élément par paramètre de requête, qui filtre les résultats sur le ou les types spécifiés.
Par exemple,
cloudresourcemanager.googleapis.com/Project
. - PAGE_SIZE : facultatif. Paramètre de requête pour le nombre de résultats à renvoyer par page. Par exemple :
5
- PAGE_TOKEN : facultatif. Paramètre de requête pour le jeton afin de continuer à afficher les résultats paginés. Par exemple :
CiAKGjBpNDd2Nmp2Zml2cXRwYjBpOXA
Méthode HTTP, URL et paramètres de requête:
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
Exemple :
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
Vous devriez recevoir une réponse JSON de ce type :
{ "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" }
Pour filtrer les résultats par type d'élément spécifique, utilisez le paramètre de requête 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
Les résultats ne contiennent que les résultats du type spécifié (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" }
Pour filtrer les résultats par plusieurs types d'éléments, ajoutez chacun d'eux en tant que paramètre de requête supplémentaire:
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
Les résultats ne contiennent que les résultats des types spécifiés (cloudresourcemanager.googleapis.com/Project
et 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" }
Après avoir effectué l'analyse de la migration, examinez et corrigez tous les avertissements ou blocages, puis exécutez à nouveau l'analyse pour vérifier qu'ils ont été résolus. Vous pouvez ensuite procéder au déplacement du projet.
Étape suivante
- Découvrez les packages de contrôle d'Assured Workloads.
- Découvrez les produits compatibles pour chaque package de contrôle.