Effectuer la migration

Cette page explique comment migrer un Google Cloud projet d'une ressource Organisation à une autre, ou d'aucune ressource Organisation vers une ressource Organisation.

Pour migrer un projet, vous devez vous assurer de disposer des autorisations IAM (Identity and Access Management) appropriées et que des règles d'administration spécifiques sont configurées sur les ressources source et de destination.

Avant de commencer

La migration d'un projet est une opération inter-organisations. Pour éviter tout déplacement non autorisé de ressources, vous devez remplir les conditions suivantes.

Rôles requis

Pour obtenir les autorisations nécessaires pour migrer des projets entre des ressources Organisation, demandez à votre administrateur de vous accorder les rôles IAM suivants :

  • Administrateur IAM du projet (roles/resourcemanager.projectIamAdmin) dans le projet que vous souhaitez migrer entre des ressources Organisation
  • Déplaceur de projets (roles/resourcemanager.projectMover) dans la ressource parente du projet (dossier ou ressource Organisation)
  • Si la ressource de destination est un dossier: déplaceur de projets (roles/resourcemanager.projectMover) dans la ressource de destination
  • Si la ressource de destination est une organisation : créateur de projet (roles/resourcemanager.projectCreator) dans la ressource de destination

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Ces rôles doivent être attribués au même compte utilisateur dans les organisations source et de destination. Ces rôles prédéfinis contiennent les autorisations requises pour migrer des projets. Pour afficher les autorisations exactes requises, développez la section Autorisations requises.

Autorisations requises

Les autorisations suivantes sont requises pour migrer des projets :

  • resourcemanager.projects.getIamPolicy dans le projet que vous souhaitez migrer entre des ressources Organisation
  • resourcemanager.projects.update dans le projet que vous souhaitez migrer entre des ressources Organisation
  • resourcemanager.projects.move dans la ressource parente du projet (dossier ou ressource Organisation)
  • Si la ressource de destination est un dossier : resourcemanager.projects.move dans la ressource de destination
  • Si la ressource de destination est une ressource Organisation : resourcemanager.projects.create dans la ressource de destination
  • Si vous souhaitez migrer un projet qui n'est pas associé à une organisation : resourcemanager.projects.setIamPolicy dans le projet que vous souhaitez migrer

Vous pouvez également obtenir ces autorisations avec un rôle personnalisé ou d'autres rôles prédéfinis.

Règles d'administration requises

Par défaut, la migration de projet est limitée. Vous devez autoriser explicitement l'exportation et l'importation en définissant des règles d'administration à la racine des deux organisations. Pour configurer les règles d'administration requises pour la migration, vous devez disposer du rôle roles/orgPolicy.policyAdmin dans l'organisation parente et de destination.

  • Dans la ressource Organisation source : définissez la règle constraints/resourcemanager.allowedExportDestinations. Ajoutez l'ID de l'organisation de destination comme valeur autorisée.

  • Dans la ressource Organisation de destination : définissez la règle constraints/resourcemanager.allowedImportSources. Ajoutez l'ID de l'organisation source comme valeur autorisée.

Effectuer la migration

Une fois les autorisations accordées et les règles appliquées, vous pouvez migrer le projet à l'aide de la Google Cloud CLI ou de l'API Resource Manager.

gcloud

Pour migrer un projet vers une autre ressource Organisation, exécutez la commande suivante :

gcloud beta projects move PROJECT_ID \
    --organization ORGANIZATION_ID

Vous pouvez également spécifier un dossier en tant que ressource cible à l'aide de la commande suivante :

gcloud beta projects move PROJECT_ID \
    --folder FOLDER_ID

Remplacez les champs suivants :

  • PROJECT_ID : ID ou numéro du projet que vous souhaitez migrer.
  • ORGANIZATION_ID : ID de la ressource Organisation vers laquelle vous déplacez le projet.
  • FOLDER_ID : ID du dossier vers lequel vous déplacez le projet.

Vous ne pouvez spécifier qu'une seule cible, soit un dossier, soit une ressource Organisation.

API

À l'aide de l'API Resource Manager v1, vous pouvez migrer un projet entre des ressources Organisation en définissant son champ parent sur l'ID de la ressource de destination.

Pour migrer un projet, procédez comme suit :

  • Obtenez l'objet project à l'aide de la méthode projects.get().
  • Mettez à jour le champ parent avec l'ID de la ressource de destination.
  • Exécutez la méthode projects.update().

L'extrait de code suivant illustre ces étapes :

    project = crm.projects().get(projectId=flags.projectId).execute()
    project['parent'] = {
        'type': 'organization',
        'id': flags.organizationId
    }

    project = crm.projects().update(
    projectId=flags.projectId, body=project).execute()