Désactiver un VPC partagé

Cette page décrit comment désactiver une configuration de VPC partagé existante, en déconnectant tous les projets de service d'un projet hôte de VPC partagé. La désactivation est un processus à sens unique. Assurez-vous d'abord d'avoir bien pris connaissance du contenu des pages Présentation du VPC partagé et Provisionner un VPC partagé.

Tâches d'administration du projet de service

Dans chaque projet de service associé au projet hôte de VPC partagé, un administrateur de projet de service doit supprimer toutes les dépendances du projet hôte. Les dépendances incluent des instances, des groupes d'instances, des modèles d'instance et des règles de transfert pour l'équilibrage de charge TCP/UDP interne.

Déterminer les ressources affectées

Pour identifier les ressources dépendantes du projet hôte de VPC partagé, un administrateur de projet de service peut répertorier ses sous-réseaux partagés. Lorsque le projet de service sera détaché du projet hôte, ces sous-réseaux ne seront plus disponibles. Ainsi, toutes les ressources qui en dépendent seront affectées.

Supprimer des ressources

Une fois qu'un administrateur de projet de service a identifié les ressources affectées par le processus de désactivation, celles-ci doivent être supprimées :

Tâches d'administration de VPC partagé

Toutes les tâches de cette section doivent être effectuées par un administrateur de VPC partagé.

Dissocier des projets de service

Répétez ces étapes pour chacun des projets de service que vous devez dissocier du projet hôte de VPC partagé.

gcloud

  1. Si ce n'est pas déjà fait, authentifiez-vous auprès de gcloud en tant qu'administrateur de VPC partagé. Remplacez SHARED_VPC_ADMIN par le nom de l'administrateur de VPC partagé :

        gcloud auth login SHARED_VPC_ADMIN
        
  2. Détachez le projet de service du projet hôte. Remplacez SERVICE_PROJECT_ID par l'ID du projet de service et HOST_PROJECT_ID par l'ID du projet hôte.

    Si vous avez le rôle d'administrateur de VPC partagé au niveau de l'organisation

        gcloud compute shared-vpc associated-projects remove SERVICE_PROJECT_ID
            --host-project HOST_PROJECT_ID
        

    Si vous avez le rôle d'administrateur de VPC partagé au niveau du dossier

        gcloud beta compute shared-vpc associated-projects remove SERVICE_PROJECT_ID
            --host-project HOST_PROJECT_ID
        
  3. Confirmez que le projet de service a été dissocié en utilisant l'une des commandes suivantes :

        gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
        
        gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
        
  4. Si vous deviez uniquement dissocier des projets de service, déconnectez-vous de gcloud pour protéger les identifiants de votre compte administrateur de VPC partagé. Sinon, ignorez cette étape et passez à la désactivation du projet hôte.

        gcloud auth revoke SHARED_VPC_ADMIN
        

API

  1. Dissociez le projet de service.

    • Si vous avez un rôle d'administrateur de VPC partagé au niveau de l'organisation, utilisez l'API v1 :

          POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnResource
          {
          "xpnResource": {
            "id": "SERVICE_PROJECT_ID"
          }
          }
          
    • Si vous avez un rôle d'administrateur de VPC partagé au niveau du dossier, utilisez l'API en version bêta :

          POST https://www.googleapis.com/compute/beta/projects/HOST_PROJECT_ID/disableXpnResource
          {
          "xpnResource": {
            "id": "SERVICE_PROJECT_ID"
          }
          }
          

    Remplacez les espaces réservés par des valeurs valides :

    • HOST_PROJECT_ID correspond à l'identifiant du projet hôte.
    • SERVICE_PROJECT_ID correspond à l'identifiant du projet de service à dissocier.

    Pour plus d'informations, reportez-vous à la documentation sur la méthode projects.disableXpnResource.

  2. Confirmez que le projet de service a bien été dissocié.

    • Vérifiez que le projet de service n'est associé à aucun projet hôte.

          GET https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/getXpnHost
          

      Remplacez SERVICE_PROJECT_ID par l'identifiant du projet de service.

      Pour plus d'informations, reportez-vous à la documentation sur la méthode projects.getXpnHost.

    • Répertoriez les projets de service associés au projet hôte du VPC partagé pour vérifier que le projet ne figure plus dans la liste.

          GET https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
          

      Remplacez HOST_PROJECT_ID par l'identifiant du projet hôte.

      Pour plus d'informations, reportez-vous à la documentation sur la méthode projects.getXpnResources.

Désactiver le projet hôte

Il n'est possible de désactiver le VPC partagé pour le projet hôte qu'une fois que tous les projets de service ont été dissociés. Une fois la désactivation effectuée, le privilège empêchant la suppression intempestive est automatiquement supprimé.

gcloud

  1. Si ce n'est pas déjà fait, authentifiez-vous auprès de gcloud en tant qu'administrateur de VPC partagé. Remplacez SHARED_VPC_ADMIN par le nom de l'administrateur de VPC partagé :

        gcloud auth login SHARED_VPC_ADMIN
        
  2. Désactivez le VPC partagé pour le projet hôte. Remplacez HOST_PROJECT_ID par l'identifiant du projet hôte.

    Si vous avez le rôle d'administrateur de VPC partagé au niveau de l'organisation

        gcloud compute shared-vpc disable HOST_PROJECT_ID
        

    Si vous avez le rôle d'administrateur de VPC partagé au niveau du dossier

        gcloud beta compute shared-vpc disable HOST_PROJECT_ID
        
  3. Confirmez que le projet n'est plus répertorié en tant que projet hôte pour votre organisation. Remplacez ORG_ID par votre ID d'organisation (déterminé par gcloud organizations list).

        gcloud compute shared-vpc organizations list-host-projects ORG_ID
        
  4. Si vous deviez uniquement désactiver un projet hôte, vous pouvez vous déconnecter de gcloud pour protéger vos identifiants de compte d'administrateur de VPC partagé. Sinon, ignorez cette étape et passez à la suppression de projets.

        gcloud auth revoke SHARED_VPC_ADMIN
        

API

  1. Désactivez le VPC partagé pour le projet.

    • Si vous avez un rôle d'administrateur de VPC partagé au niveau de l'organisation, utilisez l'API v1 :

          POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/disableXpnHost
          
    • Si vous avez un rôle d'administrateur de VPC partagé au niveau du dossier, utilisez l'API en version bêta :

          POST https://www.googleapis.com/compute/beta/projects/HOST_PROJECT_ID/disableXpnHost
          

    Remplacez HOST_PROJECT_ID par l'identifiant du projet hôte.

    Pour plus d'informations, reportez-vous à la documentation sur la méthode projects.disableXpnHost.

  2. Répertoriez vos projets hôtes pour vérifier que le projet ne figure pas dans la liste.

        POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
        

    Remplacez HOST_PROJECT_ID par l'identifiant du projet hôte.

    Pour plus d'informations, reportez-vous à la documentation sur la méthode projects.listXpnHosts.

Supprimer des projets

Cette section traite de la suppression de projets qui ne sont plus utilisés. Par exemple, il peut s'agir de projets de service à supprimer après qu'ils ont été dissociés d'un projet hôte, ou d'un projet hôte dont vous n'avez plus besoin après sa désactivation.

Supprimer le projet hôte

Vous pouvez choisir de le conserver comme projet normal ou de l'arrêter. Le fait d'arrêter un projet entraîne sa suppression.

Tout membre IAM défini dans votre organisation peut supprimer le projet hôte s'il dispose du rôle resourcemanager.projectDeleter pour votre organisation ou s'il est le propriétaire du projet hôte. Les administrateurs de VPC partagés peuvent supprimer des projets hôtes s'ils disposent du rôle ou de la propriété appropriés.

Supprimer des projets de service

Vous pouvez choisir d'arrêter chaque projet de service dont vous n'avez plus besoin. Avant cela, assurez-vous que le projet de service a été dissocié du projet hôte.

Tout membre IAM défini dans votre organisation peut supprimer un projet de service s'il dispose du rôle resourcemanager.projectDeleter pour votre organisation ou s'il est le propriétaire du projet de service. Les administrateurs de projet de service peuvent supprimer des projets de service s'ils disposent du rôle ou de la propriété appropriés.

Supprimer de force un projet hôte

Lorsque le VPC partagé est actif pour un projet hôte, un privilège est placé sur le projet pour empêcher qu'il ne soit supprimé accidentellement. Comme ce privilège peut être supprimé par un propriétaire de projet, les instructions relatives au provisionnement d'un VPC partagé indiquent la procédure permettant de définir une règle d'administration afin de limiter le nombre de membres IAM autorisés à supprimer un privilège de projet.

Normalement, un projet hôte doit être supprimé après que les tâches suivantes ont été effectuées (dans l'ordre) :

Lorsque le VPC partagé a été désactivé, le privilège protégeant le projet hôte est automatiquement supprimé.

Cette section explique comment forcer l'arrêt d'un projet hôte. Cette option ne doit être envisagée que dans les cas suivants :

  • La procédure normale permettant de dissocier les projets de service, puis de désactiver le VPC partagé ne peut pas être appliquée.
  • Le projet hôte est protégé par des privilèges supplémentaires supérieurs à celui qui est ajouté automatiquement.

Si vous forcez l'arrêt d'un projet hôte et que des ressources sont utilisées dans des projets de service qui utilisent le réseau VPC partagé, les événements suivants se produisent :

  • Tous les réseaux VPC partagés, leurs sous-réseaux, routes, règles de pare-feu et toutes les ressources réseau du projet hôte sont supprimés.
  • Les ressources, telles que les instances en cours d'exécution dans les projets de service associés au projet hôte, sont arrêtées.
  • Les équilibreurs de charge TCP/UDP internes sont désactivés si leurs règles de transfert dépendent du réseau VPC partagé.

gcloud

  1. Authentifiez-vous auprès de gcloud en tant que membre IAM autorisé à supprimer un privilège de projet. Si vous disposez d'une règle d'administration permettant de limiter les membres autorisés à supprimer des privilèges, vous devez vous authentifier en tant que membre IAM disposant du rôle resourcemanager.lienModifier pour votre organisation. Si une telle règle n'est pas mise en place, le propriétaire du projet hôte peut supprimer le privilège.

    Remplacez ACCOUNT par le nom du membre IAM approprié :

        gcloud auth login ACCOUNT
        
  2. Répertoriez les privilèges associés au projet hôte. Remplacez HOST_PROJECT_ID par l'identifiant du projet hôte.

        gcloud alpha resource-manager liens list \
        --project HOST_PROJECT_ID
        
  3. Retirez chaque privilège par son nom, un à la fois, jusqu'à ce qu'il n'y ait plus de privilèges. Remplacez LIEN_NAME par le nom du privilège à supprimer.

        gcloud alpha resource-manager liens delete LIEN_NAME \
        --project HOST_PROJECT_ID
        
  4. Confirmez que tous les privilèges ont été supprimés.

        gcloud alpha resource-manager liens list \
        --project HOST_PROJECT_ID
        
  5. Après avoir supprimé le privilège, vous pouvez vous déconnecter de gcloud pour protéger les identifiants du membre IAM autorisé à supprimer les privilèges.

        gcloud auth revoke ACCOUNT
        
  6. Le projet hôte peut maintenant être arrêté.

API

  1. Répertoriez les privilèges associés au projet hôte.

        GET https://cloudresourcemanager.googleapis.com/v1/liens?parent=projects:HOST_PROJECT_ID
        

    Remplacez HOST_PROJECT_ID par l'identifiant du projet hôte.

    Pour plus d'informations, reportez-vous à la documentation sur la méthode liens.list.

  2. Retirez chaque privilège par son nom, jusqu'à ce qu'il n'y ait plus de privilèges.

        DELETE https://cloudresourcemanager.googleapis.com/v1/liens/LIEN_NAME
        

    Remplacez LIEN_NAME par le nom du privilège à supprimer.

    Pour plus d'informations, reportez-vous à la documentation sur la méthode liens.delete.

  3. Répertoriez à nouveau les privilèges pour confirmer qu'ils ont été supprimés.

Étapes suivantes