Provisionner un VPC partagé

Le VPC partagé vous permet d'exporter des sous-réseaux d'un réseau VPC appartenant à un projet hôte vers d'autres projets de service de la même organisation. Les instances hébergées dans les projets de service peuvent établir des connexions réseau au sein des sous-réseaux partagés du projet hôte. Cette page décrit comment configurer et utiliser le VPC partagé, y compris certains préparatifs administratifs requis pour votre organisation.

Quotas, limites et ressources éligibles

Avant de commencer, veillez à prendre connaissance de la présentation du VPC partagé et de la présentation d'IAM. à savoir :

Préparer votre organisation

Administrateurs et IAM

Préparer votre organisation, configurer des projets hôtes de VPC partagés et utiliser des réseaux VPC partagés impliquent au minimum trois rôles IAM administratifs différents. Pour plus d'informations sur chaque rôle, ainsi que des informations sur les rôles facultatifs, consultez la section Administrateurs et IAM dans la présentation du VPC partagé.

Règles d'administration pour le VPC partagé

Les contraintes de règles d'administration permettent de protéger les ressources de VPC partagé au niveau du projet, du dossier ou de l'organisation. Les sections suivantes décrivent chacune des règles.

Empêcher la suppression accidentelle de projets hôtes

La suppression accidentelle d'un projet hôte conduirait à des interruptions dans tous les projets de service qui y sont associés. Lorsqu'un projet est configuré en tant que projet hôte de VPC partagé, un verrou spécial, appelé privilège, lui est appliqué. Tant que le privilège est présent, ce verrou empêche toute suppression accidentelle du projet. Le privilège est automatiquement supprimé du projet hôte lorsque celui-ci n'est plus configuré pour le VPC partagé.

Un utilisateur doté du rôle orgpolicy.policyAdmin peut définir une contrainte de règle au niveau de l'organisation (constraints/compute.restrictXpnProjectLienRemoval) qui limite la suppression des privilèges aux seuls rôles suivants :

  • Utilisateurs dotés des rôles roles/owner ou roles/resourcemanager.lienModifier au niveau de l'organisation
  • Utilisateurs dotés de rôles personnalisés incluant les autorisations resourcemanager.projects.get et resourcemanager.projects.updateLiens au niveau de l'organisation

Cela permet d'empêcher un propriétaire de projet ne disposant pas des rôles roles/owner ou resourcemanager.lienModifier au niveau de l'organisation de supprimer accidentellement un projet hôte de VPC partagé. Pour plus d'informations sur les autorisations associées au rôle resourcemanager.lienModifier, consultez la section Placer un privilège sur un projet dans la documentation de Resource Manager.

Comme une règle d'administration s'applique à tous les projets de l'organisation, vous n'avez besoin de réaliser les étapes ci-dessous qu'une seule fois pour limiter la suppression des privilèges.

  1. Authentifiez-vous auprès de gcloud en tant qu'administrateur de l'organisation ou membre IAM possédant le rôle orgpolicy.policyAdmin. Remplacez ORG_ADMIN par le nom d'un administrateur de l'organisation :

    gcloud auth login ORG_ADMIN
    
  2. Déterminez l'ID de votre organisation dans le résultat renvoyé par cette commande.

    gcloud organizations list
    
  3. Appliquez la règle compute.restrictXpnProjectLienRemoval à votre organisation en exécutant cette commande. Remplacez ORG_ID par le numéro déterminé à l'étape précédente.

    gcloud beta resource-manager org-policies enable-enforce \
        --organization ORG_ID compute.restrictXpnProjectLienRemoval
    
  4. Pour protéger votre compte, déconnectez-vous de gcloud lorsque vous avez terminé d'effectuer des tâches en tant qu'administrateur de l'organisation.

    gcloud auth revoke ORG_ADMIN
    

Contraindre les associations de projets hôtes

Par défaut, un administrateur de VPC partagé peut associer un projet non hôte à un projet hôte de la même organisation. Un administrateur de règles d'administration peut restreindre l'ensemble de projets hôtes auxquels un ou plusieurs projets non hôtes d'un dossier ou d'une organisation peuvent être associés. Pour plus d'informations, consultez la documentation sur la contrainte constraints/compute.restrictSharedVpcHostProjects.

Définir les sous-réseaux du projet hôte pouvant être utilisés par un projet de service

Par défaut, une fois que vous avez configuré le VPC partagé, les membres IAM des projets de service peuvent utiliser n'importe quel sous-réseau du projet hôte s'ils disposent des autorisations IAM appropriées. En plus de pouvoir gérer les autorisations d'utilisateur au niveau individuel, un administrateur de règles d'administration peut définir une stratégie visant à indiquer l'ensemble de sous-réseaux auxquels un projet spécifique ou des projets d'un dossier ou d'une organisation peuvent accéder. Pour plus d'informations, consultez la documentation sur la contrainte constraints/compute.restrictSharedVpcSubnetworks.

Désigner des administrateurs de VPC partagé

Un administrateur d'organisation peut attribuer à un ou plusieurs membres IAM les rôles d'administrateur de VPC partagé et d'administrateur de projet IAM. Le rôle d'administrateur de projet IAM autorise les administrateurs de VPC partagé à partager tous les sous-réseaux existants et futurs, et pas seulement les sous-réseaux individuels. L'attribution de ce rôle crée une liaison au niveau de l'organisation ou du dossier, et non au niveau du projet. Par conséquent, les membres IAM doivent être définis au niveau de l'organisation et non simplement au sein d'un projet.

Console

Pour accorder le rôle d'Administrateur de VPC partagé au niveau de l'organisation

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de l'organisation, puis accédez à la page "IAM".
    Accéder à la page "IAM"
  2. Dans le menu du projet, sélectionnez votre organisation.
    Si vous sélectionnez un projet, vous ne verrez pas les entrées correctes dans le menu Rôles.
  3. Cliquez sur Ajouter.
  4. Saisissez les adresses e-mail des membres.
  5. Sous Rôles, sélectionnez Compute Engine > Administrateur de VPC Compute partagé.

  6. Cliquez sur Ajouter un autre rôle.

  7. Dans la liste déroulante Rôles, sélectionnez Gestionnaire de ressources > Administrateur de projet IAM.

  8. Cliquez sur Enregistrer.

Pour accorder le rôle d'Administrateur de VPC partagé au niveau du dossier

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de l'organisation, puis accédez à la page "IAM".
    Accéder à la page "IAM"
  2. Dans le menu du projet, sélectionnez votre dossier.
    Si vous sélectionnez un projet ou une organisation, vous ne verrez pas les options adéquates.
  3. Sur la page Membres, cliquez sur Ajouter.
  4. Saisissez les adresses e-mail des membres.
  5. Sous Sélectionner un rôle, choisissez Compute Engine > Administrateur de VPC Compute partagé.
  6. Cliquez sur Ajouter un autre rôle.
  7. Dans la liste déroulante Rôles, sélectionnez Gestionnaire de ressources > Administrateur de projet IAM.
  8. Cliquez sur Enregistrer.

gcloud

  1. Authentifiez-vous auprès de gcloud en tant qu'administrateur de l'organisation. Remplacez ORG_ADMIN par le nom d'un administrateur de l'organisation :

    gcloud auth login ORG_ADMIN
    
  2. Déterminez l'ID de votre organisation dans le résultat renvoyé par cette commande.

    gcloud organizations list
    
  3. Si vous souhaitez attribuer le rôle d'Administrateur de VPC partagé au niveau de l'organisation, procédez comme suit :

    1. Attribuez le rôle d'Administrateur de VPC partagé à un membre IAM existant. Remplacez ORG_ID par l'ID d'organisation déterminé à l'étape précédente et EMAIL_ADDRESS par l'adresse e-mail de l'utilisateur auquel vous assignez ce rôle.

      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/compute.xpnAdmin"
      
      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/resourcemanager.projectIamAdmin"
      
  4. Si vous souhaitez attribuer le rôle d'Administrateur de VPC partagé au niveau du dossier, procédez comme suit :

    1. Déterminez l'ID de votre dossier en consultant le résultat de cette commande.

      gcloud beta resource-manager folders list --organization=ORG_ID
      
    2. Attribuez le rôle d'Administrateur de VPC partagé à un membre IAM existant. Remplacez ORG_ID par l'ID d'organisation déterminé à l'étape précédente et EMAIL_ADDRESS par l'adresse e-mail de l'utilisateur auquel vous assignez ce rôle.

      gcloud beta resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.xpnAdmin"
      
      gcloud beta resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/resourcemanager.projectIamAdmin"
      
  5. Révoquez le jeton de votre compte d'administrateur de l'organisation dans l'outil de ligne de commande gcloud lorsque vous avez terminé les tâches de protection de votre compte.

    gcloud auth revoke ORG_ADMIN
    

API

  • Pour attribuer le rôle d'administrateur de VPC partagé au niveau de l'organisation, procédez comme suit :

    1. Déterminez l'ID de votre organisation.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Décrivez et enregistrez les détails de votre stratégie d'organisation existante.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:getIamPolicy
      

      Remplacez ORG_ID par l'ID de votre organisation.

    3. Attribuez le rôle d'administrateur de VPC partagé.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other exisitng policy details
      }
      

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

      • ORG_ID correspond à l'ID de l'organisation qui contient l'utilisateur auquel vous attribuez le rôle d'administrateur de VPC partagé.
      • EMAIL_ADDRESS correspond à l'adresse e-mail de l'utilisateur.
      • ETAG correspond à un identifiant unique obtenu lorsque vous avez décrit la stratégie existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

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

  • Pour attribuer le rôle d'administrateur de VPC partagé au niveau du dossier, exécutez la requête suivante :

    1. Déterminez l'ID de votre organisation.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Recherchez l'ID de votre dossier.

      GET https://cloudresourcemanager.googleapis.com/v2/folders?parent=organizations/ORG_ID
      

      Remplacez ORG_ID par l'ID de votre organisation.

    3. Décrivez et enregistrez les détails de votre stratégie de dossier existante.

      POST https://cloudresourcemanager.googleapis.com/v2/folders/FOLDER_ID:getIamPolicy
      

      Remplacez FOLDER_ID par l'ID de votre dossier.

    4. Attribuez le rôle d'administrateur de VPC partagé.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/FOLDER_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

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

      • FOLDER_ID correspond à l'ID de l'organisation qui contient l'utilisateur auquel vous attribuez le rôle d'administrateur de VPC partagé.
      • EMAIL_ADDRESS correspond à l'adresse e-mail de l'utilisateur.
      • ETAG correspond à un identifiant unique obtenu lorsque vous avez décrit la stratégie existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

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

Configurer le VPC partagé

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

Activer un projet hôte

Dans une organisation, les administrateurs de VPC partagé peuvent désigner des projets en tant que projets hôtes de VPC partagé, soumis à des quotas et limites, en suivant la procédure décrite ici. Les administrateurs de VPC partagé peuvent également créer et supprimer des projets s'ils disposent des rôles resourcemanager.projectCreator et resourcemanager.projectDeleter pour votre organisation.

Console

  1. Accédez à la page "VPC partagé" de Google Cloud Console.
    Accéder à la page "VPC partagé"
  2. Connectez-vous en tant qu'administrateur de VPC partagé.
  3. Dans le sélecteur de projet, choisissez le projet que vous souhaitez activer en tant que projet hôte de VPC partagé.
  4. Cliquez sur Configurer un VPC partagé.
  5. Sur la page suivante, sous Activer le projet hôte, cliquez sur Enregistrer et continuer.
  6. Sous Sélectionner des sous-réseaux, effectuez l'une des opérations suivantes :
    1. Cliquez sur Partager tous les sous-réseaux (autorisations au niveau du projet) si vous devez partager tous les sous-réseaux actuels et futurs des réseaux VPC du projet hôte avec les projets de service et les administrateurs de projet de service spécifiés dans les étapes suivantes.
    2. Cliquez sur Sous-réseaux individuels (autorisations au niveau du sous-réseau) si vous devez partager de manière sélective certains sous-réseaux des réseaux VPC du projet hôte avec des projets de service et des administrateurs de projet de service. Sélectionnez ensuite les sous-réseaux à partager.
  7. Cliquez sur Continuer.
    L'écran suivant apparaît.
  8. Dans Noms des projets, spécifiez les projets de service devant être associés au projet hôte. Notez que l'association de projets de service ne définit pas d'administrateur de projet de service ; cela intervient à l'étape suivante.
  9. Dans la section Sélectionner les utilisateurs par rôle, ajoutez les administrateurs de projet de service. Le rôle IAM compute.networkUser pour les sous-réseaux partagés sera attribué à ces utilisateurs. Seuls les administrateurs de projet de service peuvent créer des ressources dans les sous-réseaux du projet hôte de VPC partagé.
  10. Cliquez sur Enregistrer.

gcloud

  1. 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. Activez le VPC partagé pour le projet dont vous devez faire un projet hôte. Remplacez HOST_PROJECT_ID par l'ID du projet.

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

    gcloud compute shared-vpc enable HOST_PROJECT_ID
    

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

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

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. Si vous aviez uniquement besoin d'activer 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 poursuivez avec les instructions permettant d'associer des projets de service.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Activez le VPC partagé pour le projet à l'aide d'identifiants disposant d'autorisations d'administrateur de VPC partagé.

    • 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/enableXpnHost
      
    • 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/enableXpnHost
      

    Remplacez HOST_PROJECT_ID par l'ID du projet qui sera un projet hôte de VPC partagé.

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

  2. Confirmez que le projet est bien répertorié en tant que projet hôte.

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

    Remplacez HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé.

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

Associer des projets de service

Un projet de service doit être associé à un projet hôte préalablement à toute utilisation du VPC partagé par les administrateurs du projet de service. Pour réaliser cette association, un administrateur de VPC partagé doit effectuer les étapes suivantes.

Un projet de service ne peut être associé qu'à un seul projet hôte, mais un projet hôte prend en charge plusieurs projets de service associés. Pour plus de détails, reportez-vous à la section limites propres aux VPC partagés sur la page des quotas de VPC.

Console

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de VPC partagé.
  2. Accédez à la page "VPC partagé" de Google Cloud Console.
    Accéder à la page "VPC partagé"
  3. Cliquez sur l'onglet Projets associés.
  4. Sous l'onglet Projets associés, cliquez sur le bouton Associer des projets.
  5. Dans la section Noms des projets, cochez les cases correspondant aux projets de service à associer. Notez que l'association de projets de service ne définit pas d'administrateur de projet de service ; cela intervient à l'étape suivante.
  6. Dans la section Autorisations du réseau VPC, sélectionnez les rôles dont les membres se verront attribuer le rôle compute.networkUser. Les membres Cloud IAM se voient attribuer le rôle d'utilisateur du réseau pour l'ensemble du projet hôte ou pour certains sous-réseaux du projet hôte, en fonction du mode de partage de réseau VPC. Ces membres sont appelés "administrateurs de projet de service" au sein de leurs projets de service respectifs.
  7. Dans la section Mode de partage de réseau VPC, sélectionnez l'une des options suivantes :
    1. Cliquez sur Partager tous les sous-réseaux (autorisations au niveau du projet) pour partager tous les sous-réseaux actuels et futurs des réseaux VPC du projet hôte avec les projets de service et les administrateurs de projet de service.
    2. Cliquez sur Sous-réseaux individuels (autorisations au niveau du sous-réseau) si vous devez partager de manière sélective certains sous-réseaux des réseaux VPC du projet hôte avec des projets de service et des administrateurs de projet de service. Sélectionnez ensuite les Sous-réseaux à partager.
  8. Cliquez sur Enregistrer.

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. Associez un projet de service à un projet hôte préalablement activé. 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 add 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 add SERVICE_PROJECT_ID \
        --host-project HOST_PROJECT_ID
    
  3. Confirmez que le projet de service a été correctement associé.

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
  4. Vous pouvez au besoin répertorier les projets de service associés au projet hôte :

    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  5. Si vous aviez uniquement besoin d'associer un projet de service, vous pouvez vous déconnecter de gcloud pour protéger vos identifiants de compte d'administrateur de VPC partagé. Sinon, vous pouvez ignorer cette étape et définir des administrateurs de projet de service pour tous les sous-réseaux ou pour certains seulement.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Associez un projet de service au projet hôte de VPC partagé.

    • 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/enableXpnResource
      {
      "xpnResource": {
        "id": "SERVICE_PROJECT"
      }
      }
      
    • 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/enableXpnResource
      {
      "xpnResource": {
        "id": "SERVICE_PROJECT"
      }
      }
      

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

    • HOST_PROJECT_ID correspond à l'ID du projet hôte de VPC partagé.
    • SERVICE_PROJECT correspond à l'ID du projet de service à associer.

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

  2. Vérifiez que les projets de service sont associés au projet hôte.

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

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

    • HOST_PROJECT_ID correspond à l'ID du projet hôte de VPC partagé.

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

Administrateurs de projet de service pour tous les sous-réseaux

Un administrateur de VPC partagé peut accorder à un membre Cloud IAM d'un projet de service le rôle d'administrateur de projet de service avec accès à tous les sous-réseaux du projet hôte. Les administrateurs de projet de service de ce type disposent du rôle compute.networkUser pour l'ensemble du projet hôte. Ils ont donc accès à tous les sous-réseaux existants et futurs du projet hôte.

Console

Pour utiliser Cloud Console afin d'accorder à un membre IAM d'un projet de service le rôle d'administrateur de projet de service, avec accès à tous les sous-réseaux d'un projet hôte, consultez la section Associer des projets de service.

gcloud

Ces étapes indiquent comment définir un membre IAM d'un projet de service comme administrateur de projet de service avec accès à tous les sous-réseaux d'un projet hôte. Pour réaliser ces étapes, vous devez avoir préalablement activé un projet hôte et associé le projet de service au projet hôte.

  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. Créez une liaison de règle pour faire d'un membre IAM du projet de service un administrateur de projet de service. Remplacez HOST_PROJECT_ID par l'ID du projet hôte et SERVICE_PROJECT_ADMIN par l'adresse e-mail de l'utilisateur administrateur du projet de service.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member "user:SERVICE_PROJECT_ADMIN" \
    --role "roles/compute.networkUser"
    

    Vous pouvez spécifier différents types de membres en modifiant le format de l'argument --member :

    • Spécifiez un groupe Google (par adresse e-mail) comme membre à l'aide de group:.
    • Spécifiez un domaine Google comme membre à l'aide de domain:.
    • Spécifiez un compte de service à l'aide de serviceAccount:. Pour plus d'informations sur ce cas d'utilisation, consultez la section Comptes de service en tant qu'administrateurs de projet de service.
  3. Répétez l'étape précédente pour chaque administrateur de projet de service supplémentaire à définir.

  4. Lorsque vous avez terminé de définir les administrateurs de projet de service, déconnectez-vous de gcloud pour protéger vos identifiants de compte d'administrateur de VPC partagé.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Décrivez et enregistrez les détails de votre stratégie de projet existante. Vous aurez besoin de la stratégie existante et de la valeur etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Remplacez HOST_PROJECT_ID par l'ID du projet hôte qui contient le réseau VPC partagé.

  2. Créez une liaison de règle pour désigner des membres IAM dans le projet de service en tant qu'administrateurs de projet de service.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            MEMBER,
            ...additional members
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

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

    • HOST_PROJECT_ID correspond à l'ID du projet hôte qui contient le réseau VPC partagé.
    • MEMBER correspond à une identité associée au rôle, telle qu'un utilisateur, un groupe, un domaine ou un compte de service. Pour en savoir plus, consultez la section concernant le champ members dans la documentation de Resource Manager.
    • ETAG correspond à un identifiant unique obtenu lorsque vous avez décrit la stratégie existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

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

Administrateurs de projets de service pour certains sous-réseaux

Un administrateur de VPC partagé peut accorder à un membre IAM d'un projet de service le rôle d'administrateur de projet de service avec un accès uniquement à certains sous-réseaux du projet hôte. Cette option offre plus de précision dans la définition des administrateurs de projet de service en leur accordant le rôle compute.networkUser uniquement pour certains sous-réseaux du projet hôte.

Console

Pour utiliser Cloud Console afin d'accorder à un membre IAM d'un projet de service le rôle d'administrateur de projet de service, avec un accès uniquement à certains sous-réseaux d'un projet hôte, consultez la section Associer des projets de service.

gcloud

Ces étapes indiquent comment définir un membre IAM d'un projet de service comme administrateur de projet de service avec accès à certains sous-réseaux uniquement d'un projet hôte. Pour pouvoir définir ce membre, vous devez avoir préalablement activé un projet hôte et associé le projet de service au projet hôte.

  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. Choisissez le sous-réseau du projet hôte auquel les administrateurs de projet de service doivent avoir accès. Obtenez ses règles IAM actuelles au format JSON. Remplacez SUBNET_NAME par le nom du sous-réseau dans le projet hôte et HOST_PROJECT_ID par l'ID du projet hôte.

    gcloud beta compute networks subnets get-iam-policy SUBNET_NAME \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID \
        --format json
    
  3. Copiez le résultat JSON obtenu à l'étape précédente et enregistrez-le dans un fichier. Pour plus de clarté dans ces instructions, il est ici enregistré dans un fichier nommé subnet-policy.json.

  4. Modifiez le fichier subnet-policy.json en ajoutant les membres IAM qui deviendront administrateurs de projet de service avec un accès au sous-réseau. Remplacez chaque occurrence de SERVICE_PROJECT_ADMIN par l'adresse e-mail d'un utilisateur IAM du projet de service.

    {
      "bindings": [
      {
         "members": [
               "user:[SERVICE_PROJECT_ADMIN]",
               "user:[SERVICE_PROJECT_ADMIN]"
            ],
            "role": "roles/compute.networkUser"
      }
      ],
      "etag": "[ETAG_STRING]"
    }
    

    Notez que vous pouvez spécifier dans la règle différents types de membres IAM (autres que des utilisateurs) :

    • Remplacez user: par group: pour spécifier un groupe Google (par adresse e-mail) en tant que membre.
    • Remplacez user: par domain: pour spécifier un domaine Google en tant que membre.
    • Spécifiez un compte de service à l'aide de serviceAccount:. Pour plus d'informations sur ce cas d'utilisation, consultez la section Comptes de service en tant qu'administrateurs de projet de service.
  5. Mettez à jour la liaison de règle pour le sous-réseau avec le contenu du fichier subnet-policy.json.

    gcloud beta compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID
    
  6. Lorsque vous avez terminé de définir les administrateurs de projet de service, déconnectez-vous de gcloud pour protéger vos identifiants de compte d'administrateur de VPC partagé.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Décrivez et enregistrez les détails de votre stratégie de sous-réseau existante. Vous aurez besoin de la stratégie existante et de la valeur etag.

    GET https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
    

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

    • HOST_PROJECT_ID correspond à l'ID du projet hôte qui contient le réseau VPC partagé.
    • SUBNET_NAME correspond au nom du sous-réseau à partager.
    • SUBNET_REGION correspond à la région dans laquelle se trouve le sous-réseau.
  2. Mettez à jour la stratégie de sous-réseau pour autoriser les administrateurs de projet de service à accéder aux sous-réseaux du projet hôte.

    POST https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            MEMBER,
            ...additional members
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

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

    • ETAG correspond à un identifiant unique obtenu lorsque vous avez décrit la stratégie existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.
    • HOST_PROJECT_ID correspond à l'ID du projet hôte qui contient le réseau VPC partagé.
    • MEMBER correspond à une identité associée au rôle, telle qu'un utilisateur, un groupe, un domaine ou un compte de service. Pour en savoir plus, consultez la section concernant le champ members dans la documentation de Resource Manager.
    • SUBNET_NAME correspond au nom du sous-réseau à partager.
    • SUBNET_REGION correspond à la région dans laquelle se trouve le sous-réseau.

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

Comptes de service comme administrateurs de projet de service

Un administrateur de VPC partagé peut également définir des comptes de service de projets de service comme administrateurs de projet de service. Cette section explique comment promouvoir deux types de comptes de service différents comme administrateurs de projet de service :

Comme pour tout autre membre IAM, le rôle d'administrateur de projet de service (compute.networkUser) peut être accordé pour l'ensemble des sous-réseaux ou pour seulement certains sous-réseaux du projet hôte. Toutefois, pour simplifier les instructions, cette section explique uniquement comment réaliser l'opération pour ces deux types de compte de service pour l'ensemble des sous-réseaux du projet hôte.

Comptes de service gérés par l'utilisateur comme administrateurs de projet de service

Ces instructions décrivent comment promouvoir un compte de service géré par l'utilisateur au rôle d'administrateur de projet de service pour l'ensemble des sous-réseaux du projet hôte de VPC partagé.

Console

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de VPC partagé.
  2. Accédez à la page "Paramètres" de Google Cloud Console.
    Accéder à la page "Paramètres"
  3. Sélectionnez comme projet le projet de service contenant le compte de service qui doit être défini comme administrateur de projet de service.
  4. Copiez l'ID de projet du projet de service. Pour plus de clarté, cette procédure désigne l'ID du projet de service par SERVICE_PROJECT_ID.
  5. Sélectionnez comme projet le projet hôte de VPC partagé.
  6. Accédez à la page "IAM" de Google Cloud Console.
    Accéder à la page "IAM"
  7. Cliquez sur Ajouter.
  8. Ajoutez SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com au champ Membres, en veillant à remplacer SERVICE_ACCOUNT_NAME par le nom du compte de service.
  9. Dans le menu Rôles, sélectionnez Compute Engine > Utilisateur de réseau de Compute.
  10. Cliquez sur Ajouter.

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. Si vous ne connaissez pas l'ID du projet de service, vous pouvez répertorier tous les projets de votre organisation. La liste résultant de cette commande affiche l'ID de chaque projet.

    gcloud projects list
    
  3. Créez une liaison de règle pour que le compte de service devienne administrateur de projet de service. Remplacez HOST_PROJECT_ID par l'ID du projet hôte, SERVICE_ACCOUNT_NAME par le nom du compte de service et SERVICE_PROJECT_ID par l'ID du projet de service.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Décrivez et enregistrez les détails de votre stratégie de projet existante. Vous aurez besoin de la stratégie existante et de la valeur etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Remplacez HOST_PROJECT_ID par l'ID du projet hôte qui contient le réseau VPC partagé.

  2. Créez une liaison de règle pour désigner des comptes de service en tant qu'administrateurs de projet de service.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com",
            ...include additional service accounts
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

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

    • HOST_PROJECT_ID correspond à l'ID du projet hôte qui contient le réseau VPC partagé.
    • SERVICE_ACCOUNT_NAME correspond au nom du compte de service.
    • SERVICE_PROJECT_ID correspond à l'ID du projet de service qui contient le compte de service.
    • ETAG correspond à un identifiant unique obtenu lorsque vous avez décrit la stratégie existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

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

Compte de service des API Google comme administrateur de projet de service

Ces instructions décrivent comment définir un compte de service des API Google comme administrateur de projet de service pour l'ensemble des sous-réseaux du projet hôte de VPC partagé. Promouvoir le compte de service des API Google comme administrateur de projet de service est une nécessité pour les groupes d'instances gérés utilisés dans le cadre d'un VPC partagé, car les tâches du type création d'instance sont réalisées par ce type de compte de service. Pour plus d'informations sur cette relation, consultez la section Groupes d'instances gérés et IAM.

Console

  1. Connectez-vous à Google Cloud Console en tant qu'administrateur de VPC partagé.
  2. Accédez à la page "Paramètres" de Google Cloud Console.
    Accéder à la page "Paramètres"
  3. Sélectionnez comme projet le projet de service contenant le compte de service qui doit être défini comme administrateur de projet de service.
  4. Copiez le Numéro de projet du projet de service. Pour plus de clarté, cette procédure désigne le numéro du projet de service par SERVICE_PROJECT_NUMBER.
  5. Sélectionnez comme projet le projet hôte de VPC partagé.
  6. Accédez à la page "IAM" de Google Cloud Console.
    Accéder à la page "IAM"
  7. Cliquez sur Ajouter.
  8. Ajoutez SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com au champ Membres.
  9. Dans le menu Rôles, sélectionnez Compute Engine > Utilisateur de réseau de Compute.
  10. Cliquez sur Ajouter.

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éterminez le numéro de projet correspondant au projet de service. Pour plus de clarté, cette procédure désigne le numéro du projet de service par SERVICE_PROJECT_NUMBER. Remplacez SERVICE_PROJECT_ID par l'ID du projet de service.

    gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
    
    • Si vous ne connaissez pas l'ID du projet de service, vous pouvez répertorier tous les projets de votre organisation. La liste résultant de cette commande affiche l'ID de chaque projet.

      gcloud projects list
      
  3. Créez une liaison de règle pour que le compte de service devienne administrateur de projet de service. Remplacez HOST_PROJECT_ID par l'ID du projet hôte et SERVICE_PROJECT_NUMBER par le numéro du projet de service.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Décrivez et enregistrez les détails de votre stratégie de projet existante. Vous aurez besoin de la stratégie existante et de la valeur etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Remplacez HOST_PROJECT_ID par l'ID du projet hôte qui contient le réseau VPC partagé.

  2. Répertoriez les projets pour trouver le numéro de votre projet.

    GET https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
    

    Remplacez SERVICE_PROJECT_ID par l'ID du projet de service où se trouve le compte de service.

  3. Créez une liaison de règle pour désigner des comptes de service en tant qu'administrateurs de projet de service.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

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

    • HOST_PROJECT_ID correspond à l'ID du projet hôte qui contient le réseau VPC partagé.
    • SERVICE_PROJECT_NUMBER correspond au numéro du projet de service qui contient le compte de service.
    • ETAG correspond à un identifiant unique obtenu lorsque vous avez décrit la stratégie existante. Il empêche les collisions lorsque plusieurs requêtes de mise à jour sont envoyées en même temps.

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

Utiliser le VPC partagé

Une fois qu'un administrateur de VPC partagé a activé un projet hôte, y a associé les projets de service requis et a défini des administrateurs de projet de service pour l'ensemble ou certains des sous-réseaux du projet hôte, les administrateurs de projet de service peuvent créer des instances, des modèles et des équilibreurs de charge internes dans les projets de service à l'aide des sous-réseaux du projet hôte.

Toutes les tâches de cette section doivent être réalisées par un administrateur de projet de service.

Il est important de noter que les administrateurs de VPC partagé n'accordent que le rôle compute.networkUser aux administrateurs de projet de service (soit pour l'ensemble du projet hôte, soit pour seulement certains sous-réseaux). Ceux-ci doivent également disposer des autres rôles nécessaires à l'administration de leurs projets de service respectifs. Ainsi, un administrateur de projet de service peut également être propriétaire d'un projet ou, au minimum, disposer du rôle compute.instanceAdmin pour le projet.

Répertorier les sous-réseaux disponibles

Les administrateurs de projet de service peuvent répertorier les sous-réseaux pour lesquels ils possèdent des autorisations en procédant comme suit.

Console

Accédez à la page "VPC partagé" de Google Cloud Console.
Accéder à la page "VPC partagé"

gcloud

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

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Exécutez la commande suivante en remplaçant HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé :

    gcloud compute networks subnets list-usable --project HOST_PROJECT_ID
    

    L'exemple suivant répertorie les sous-réseaux disponibles dans le projet hôte project-1 :

    $ gcloud compute networks subnets list-usable --project project-1
    
    PROJECT    REGION       NETWORK  SUBNET    RANGE          SECONDARY_RANGES
    project-1  us-west1     net-1    subnet-1  10.138.0.0/20
    project-1  us-central1  net-1    subnet-2  10.128.0.0/20  r-1 192.168.2.0/24
                                                              r-2 192.168.3.0/24
    project-1  us-east1     net-1    subnet-3  10.142.0.0/20
    

Pour plus d'informations, reportez-vous à la section sur la commande list-usable dans la documentation du SDK.

API

Répertoriez les sous-réseaux disponibles dans le projet hôte. Effectuez la requête en tant qu'administrateur de projet de service.

GET https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable

Remplacez HOST_PROJECT_ID par l'ID du projet hôte qui contient le réseau VPC partagé.

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

Réserver une adresse IP interne statique

Les administrateurs de projet de service peuvent réserver une adresse IP interne au sein d'un sous-réseau d'un réseau VPC partagé. Notez que l'objet de configuration de l'adresse IP est créé dans le projet de service, alors que sa valeur provient de la plage d'adresses disponibles dans le sous-réseau partagé choisi.

gcloud

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

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Exécutez la commande suivante en remplaçant HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé :

    gcloud compute addresses create IP_ADDR_NAME \
    --project SERVICE_PROJECT_ID \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --region=REGION
    

Où vous devez remplacer les éléments suivants :

  • IP_ADDR_NAME par le nom d'un objet d'adresse IP ;
  • SERVICE_PROJECT_ID par l'ID du projet de service ;
  • HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé ;
  • REGION par la région hébergeant le sous-réseau partagé ;
  • SUBNET par le nom du sous-réseau partagé.

Des détails supplémentaires sur la création d'adresses IP sont disponibles dans la documentation du SDK.

API

Réservez une adresse IP statique interne en tant qu'administrateur de projet de service.

POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
{
  "name": "ADDRESS_NAME",
  "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "addressType": "INTERNAL"
}

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

  • ADDRESS_NAME correspond au nom de l'adresse IP interne réservée.
  • HOST_PROJECT_ID correspond à l'ID du projet qui contient le réseau VPC partagé.
  • REGION correspond à la région où sera située l'adresse IP réservée et où se situe le sous-réseau partagé.
  • SERVICE_PROJECT_ID correspond à l'ID du projet de service où vous réservez l'adresse IP.
  • SUBNET_NAME correspond au nom du sous-réseau partagé.

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

Créer une instance

Lorsque vous créez une instance dans le cadre d'un VPC partagé, gardez à l'esprit les points suivants :

  • Le processus standard de création d'une instance implique la sélection d'une zone, d'un réseau et d'un sous-réseau. Aussi bien le sous-réseau que la zone sélectionnés doivent se trouver dans la même région. Lorsqu'un administrateur de projet de service crée une instance dans le cadre d'un sous-réseau provenant d'un réseau VPC partagé, la zone sélectionnée pour cette instance doit appartenir à la même région que le sous-réseau sélectionné.

    • Lorsqu'une instance est créée avec une adresse IP interne statique réservée, le sous-réseau (et la région) sont pré-sélectionnés à la création de l'adresse IP statique. Un exemple gcloud de création d'une instance avec une adresse IP interne statique est fourni dans cette section.
  • Les administrateurs de projet de service ne peuvent créer que des instances utilisant des sous-réseaux pour lesquels ils ont reçu une autorisation. Pour déterminer quels sous-réseaux sont disponibles, consultez la section Répertorier les sous-réseaux disponibles.

  • Lorsque Google Cloud reçoit une requête de création d'instance dans un sous-réseau de réseau VPC partagé, il vérifie si le membre IAM qui effectue la requête dispose de l'autorisation nécessaire pour utiliser ce sous-réseau partagé. Si la vérification échoue, l'instance n'est pas créée et Google Cloud renvoie une erreur d'autorisation. Contactez l'administrateur du VPC partagé pour obtenir de l'aide.

Console

  1. Accédez à la page "Instances de VM" de Google Cloud Console.
    Accéder à la page "Instances de VM"
  2. Cliquez sur Créer.
  3. Renseignez un nom pour l'instance.
  4. Cliquez sur Gestion, sécurité, disques, mise en réseau et location unique.
  5. Cliquez sur Réseau.
  6. Cliquez sur le bouton radio Réseaux partagés avec moi.
  7. Sélectionnez le sous-réseau partagé dans lequel vous souhaitez créer l'instance.
  8. Renseignez tout autre paramètre nécessaire pour la création de l'instance.
  9. Cliquez sur Créer.

gcloud

  • Pour créer une instance avec une adresse IP interne éphémère dans un sous-réseau partagé d'un réseau VPC partagé :

    gcloud compute instances create INSTANCE_NAME \
    --project SERVICE_PROJECT_ID \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --zone ZONE
    

    Où vous devez remplacer les éléments suivants :

    • INSTANCE_NAME par le nom de l'instance ;
    • SERVICE_PROJECT_ID par l'ID du projet de service ;
    • HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé ;
    • REGION par la région hébergeant le sous-réseau partagé ;
    • SUBNET par le nom du sous-réseau partagé.
    • ZONE par une zone située dans la région spécifiée.
  • Pour créer une instance avec une adresse IP interne statique réservée dans un réseau VPC partagé :

    1. Réservez une adresse IP interne statique dans le projet hôte.
    2. Créez l'instance :

      gcloud compute instances create INSTANCE_NAME \
      --project SERVICE_PROJECT_ID \
      --private-network-ip IP_ADDR_NAME \
      --zone ZONE
      --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
      

      Où vous devez remplacer les éléments suivants :

      • INSTANCE_NAME par le nom de l'instance ;
      • SERVICE_PROJECT_ID par l'ID du projet de service ;
      • HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé ;
      • IP_ADDR_NAME par le nom de l'adresse IP statique ;
      • ZONE par une zone située dans la même région que IP_ADDR_NAME ;
      • SUBNET par le nom du sous-réseau partagé associé à l'adresse IP interne statique.

API

  • Pour créer une instance avec une adresse IP interne éphémère en tant qu'administrateur de projet de service, spécifiez uniquement le sous-réseau.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

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

    • INSTANCE_NAME correspond au nom de l'instance.
    • HOST_PROJECT_ID correspond à l'ID du projet qui contient le réseau VPC partagé.
    • MACHINE_TYPE correspond à un type de machine pour l'instance.
    • REGION correspond à la région qui contient le sous-réseau partagé.
    • SERVICE_PROJECT_ID correspond à l'ID du projet de service.
    • SOURCE_IMAGE correspond à une image de l'instance.
    • SUBNET correspond au nom du sous-réseau partagé.
    • ZONE correspond à une zone située dans la région spécifiée.

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

  • Pour créer une instance avec une adresse IP interne réservée en tant qu'administrateur de projet de service, spécifiez le sous-réseau et le nom de l'adresse IP réservée.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "networkIP": "projects/SERVICE_PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

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

    • ADDRESS_NAME correspond au nom de l'adresse IP interne réservée.
    • INSTANCE_NAME correspond au nom de l'instance.
    • HOST_PROJECT_ID correspond à l'ID du projet qui contient le réseau VPC partagé.
    • MACHINE_TYPE correspond à un type de machine pour l'instance.
    • REGION correspond à la région qui contient le sous-réseau partagé.
    • SERVICE_PROJECT_ID correspond à l'ID du projet de service.
    • SOURCE_IMAGE correspond à une image de l'instance.
    • SUBNET correspond au nom du sous-réseau partagé.
    • ZONE correspond à une zone située dans la région spécifiée.

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

Créer un modèle d'instance

Lorsque vous créez un modèle d'instance dans le cadre d'un VPC partagé, gardez à l'esprit les points suivants :

  • Le processus de création d'un modèle d'instance implique la sélection d'un réseau et d'un sous-réseau.

    • Les modèles créés pour être utilisés dans un réseau VPC partagé et en mode personnalisé doivent spécifier aussi bien le réseau qu'un sous-réseau.

    • Les modèles créés pour être utilisés dans un réseau VPC partagé et en mode automatique peuvent éventuellement différer la sélection d'un sous-réseau. Dans ce cas, il y aura sélection automatique d'un sous-réseau dans la même région que tout groupe d'instances géré utilisant le modèle. (Les réseaux en mode automatique possèdent, par définition, un sous-réseau dans chaque région.)

  • Lorsqu'un membre IAM crée un modèle d'instance, Google Cloud n'effectue aucune vérification des autorisations pour déterminer si le membre peut utiliser le sous-réseau spécifié. Cette vérification des autorisations est toujours différée lorsqu'un groupe d'instances géré utilisant le modèle est demandé.

Console

  1. Accédez à la page "Modèles d'instances" de Google Cloud Console.
    Accéder à la page "Modèles d'instances"
  2. Cliquez sur Créer un modèle d'instance.
  3. Renseignez un nom pour le modèle d'instance.
  4. Cliquez sur Gestion, sécurité, disques, mise en réseau et location unique.
  5. Cliquez sur Réseau.
  6. Cliquez sur le bouton radio Réseaux partagés avec moi.
  7. Sélectionnez le sous-réseau partagé dans lequel vous souhaitez créer le modèle d'instance.
  8. Renseignez tout autre paramètre nécessaire pour la création du modèle d'instance.
  9. Cliquez sur Créer.

gcloud

  • Pour créer un modèle d'instance à utiliser dans un sous-réseau créé automatiquement au sein d'un réseau VPC partagé en mode automatique :

    gcloud compute instance-templates create TEMPLATE_NAME \
    --project SERVICE_PROJECT_ID \
    --network projects/HOST_PROJECT_ID/global/networks/NETWORK
    

    Où vous devez remplacer les éléments suivants :

    • TEMPLATE_NAME par le nom du modèle ;
    • SERVICE_PROJECT_ID par l'ID du projet de service ;
    • HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé ;
    • NETWORK par le nom du réseau VPC partagé.
  • Pour créer un modèle d'instance pour un sous-réseau créé manuellement au sein d'un réseau VPC partagé (en mode automatique ou personnalisé) :

    gcloud compute instance-templates create TEMPLATE_NAME \
    --project SERVICE_PROJECT_ID \
    --region REGION \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Où vous devez remplacer les éléments suivants :

    • TEMPLATE_NAME par le nom du modèle ;
    • SERVICE_PROJECT_ID par l'ID du projet de service ;
    • HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé ;
    • REGION par la région hébergeant le sous-réseau partagé ;
    • SUBNET par le nom du sous-réseau partagé.

API

  • Pour créer un modèle d'instance qui utilise n'importe quel sous-réseau créé automatiquement d'un réseau VPC partagé en mode automatique, spécifiez le réseau VPC.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK"
        }
      ]
    ...
    }
    

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

    • HOST_PROJECT_ID correspond à l'ID du projet qui contient le réseau VPC partagé.
    • SERVICE_PROJECT_ID correspond à l'ID du projet de service.
    • NETWORK correspond au nom du réseau VPC partagé.

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

  • Pour créer un modèle d'instance qui utilise un sous-réseau créé manuellement dans le réseau VPC partagé (en mode automatique ou personnalisé), spécifiez le sous-réseau.

    POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ]
    ...
    }
    

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

    • HOST_PROJECT_ID correspond à l'ID du projet qui contient le réseau VPC partagé.
    • REGION correspond à la région qui contient le sous-réseau partagé.
    • SERVICE_PROJECT_ID correspond à l'ID du projet de service.
    • SUBNET_NAME correspond au nom du sous-réseau partagé.

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

Créer un groupe d'instances géré

Lorsque vous créez un groupe d'instances géré dans le cadre d'un VPC partagé, gardez à l'esprit les points suivants :

  • Pour utiliser des groupes d'instances gérés dans un VPC partagé, le compte de service des API Google doit être administrateur de projet de service car c'est ce compte qui assure l'exécution de tâches telles que la création automatique d'instances par autoscaling.

  • Le processus standard de création d'un groupe d'instances géré implique la sélection d'une zone ou d'une région, suivant le type de groupe, ainsi que d'un modèle d'instance. (Les détails du réseau et du sous-réseau sont liés au modèle d'instance.) Seuls les modèles d'instances faisant référence aux sous-réseaux de la même région que le groupe d'instances géré sont éligibles.

  • Les administrateurs de projet de service ne peuvent créer des groupes d'instances gérés que si les instances membres utilisent des sous-réseaux pour lesquels ils ont reçu une autorisation. Étant donné que les détails du réseau et du sous-réseau sont liés au modèle d'instance, les administrateurs de projet de service ne peuvent utiliser que les modèles faisant référence à des sous-réseaux qu'ils sont autorisés à utiliser.

  • Lorsque Google Cloud reçoit une requête de création d'un groupe d'instances géré, il vérifie si le membre IAM qui effectue la requête dispose de l'autorisation nécessaire pour utiliser le sous-réseau spécifié dans le modèle d'instance (dans la même région que le groupe). Si la vérification échoue, le groupe d'instances géré n'est pas créé et Google Cloud renvoie une erreur d'autorisation. Répertoriez les sous-réseaux disponibles pour déterminer ceux que vous pouvez utiliser et contactez l'administrateur de VPC partagé pour obtenir de l'aide.

Pour plus d'informations, consultez la page Créer des groupes d'instances gérés dans la documentation Compute Engine.

Créer un équilibreur de charge HTTP(S) interne

Deux options s'offrent à vous pour configurer l'équilibrage de charge HTTP(S) interne au sein d'un réseau VPC partagé. Vous pouvez créer l'équilibreur de charge et ses instances backend dans le projet de service ou dans le projet hôte. Nous vous recommandons de créer l'équilibreur de charge dans le projet de service, car cela vous permet de séparer clairement les responsabilités entre les administrateurs réseau et les développeurs de services. Les administrateurs réseau peuvent allouer de manière sécurisée et efficace de l'espace IP interne, tandis que les développeurs de services peuvent déployer et mettre à jour les ressources d'équilibrage de charge en fonction des besoins du projet de service.

Avant que les administrateurs du projet de service puissent créer des équilibreurs de charge HTTP(S) internes dans le projet de service, les administrateurs du projet hôte doivent effectuer les actions suivantes dans le projet hôte :

  1. Créer un sous-réseau proxy réservé réservé pour les équilibreurs de charge HTTP(S) internes : un sous-réseau proxy réservé doit être créé dans chaque région du réseau VPC partagé dans lequel les administrateurs du projet de service ont l'intention de créer des équilibreurs de charge HTTP(S) internes.
  2. Créer un sous-réseau pour l'interface et les backends de l'équilibreur de charge : cette étape peut être nécessaire chaque fois que vous associez un nouveau projet de service au réseau VPC partagé. Par exemple, si vous souhaitez que chaque projet de service possède son propre sous-réseau, vous devez allouer un sous-réseau distinct à chaque projet de service. Cela permet à différentes équipes, qui travaillent dans leurs propres projets de service, de fonctionner indépendamment les unes des autres.
  3. Autoriser les administrateurs du projet de service ou les développeurs à accéder à ces sous-réseaux : les membres du projet de service doivent pouvoir déployer et mettre à jour les ressources et les backends d'équilibrage de charge dans ces sous-réseaux sans impliquer les administrateurs du projet hôte.
  4. Créer des règles de pare-feu globales requises par les équilibreurs de charge HTTP(S) internes

Pour obtenir des instructions sur le provisionnement des ressources réseau requises par les équilibreurs de charge HTTP(S) internes, consultez la page Configurer l'équilibrage de charge HTTP(S) interne avec un VPC partagé.

Créer un équilibreur de charge TCP/UDP interne

L'exemple suivant illustre les éléments à prendre en compte lors de la création d'un équilibreur de charge TCP/UDP interne dans un réseau VPC partagé. Les administrateurs de projet de service peuvent créer un équilibreur de charge TCP/UDP interne qui utilise un sous-réseau (appartenant au projet hôte) auquel ils ont accès. La règle de transfert interne de l'équilibreur de charge est définie dans le projet de service, mais sa référence de sous-réseau pointe vers un sous-réseau situé dans un réseau VPC partagé du projet hôte.

Avant de créer un équilibreur de charge TCP/UDP interne dans un environnement VPC partagé, consultez les documents suivants :

Console

  1. Accédez à la page "Équilibrage de charge" dans Google Cloud Console.
    Accéder à la page "Équilibrage de charge"

  2. Créez l'équilibreur de charge TCP/UDP interne avec les réglages suivants : dans la section Configurer les services frontend, sélectionnez le sous-réseau de VPC partagé souhaité dans la section Réseaux partagés par d'autres projets du menu Sous-réseau.

  3. Terminez la création de l'équilibreur de charge.

gcloud

Lorsque vous créez la règle de transfert interne, spécifiez un sous-réseau dans le projet hôte avec l'option --subnet :

gcloud compute forwarding-rules create FR_NAME \
    --project SERVICE_PROJECT_ID \
    --load-balancing-scheme internal \
    --region REGION \
    --ip-protocol IP_PROTOCOL \
    --ports PORT,PORT,… \
    --backend-service BACKEND_SERVICE_NAME \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --address INTERNAL_IP

Où vous devez remplacer les éléments suivants :

  • FR_NAME par le nom de la règle de transfert ;
  • SERVICE_PROJECT_ID par l'ID du projet de service ;
  • REGION par la région hébergeant le sous-réseau partagé ;
  • IP_PROTOCOL par TCP ou UDP, en fonction du protocole du service de backend de l'équilibreur de charge ;
  • PORT par le numéro de port ou la liste des ports de l'équilibreur de charge ;
  • BACKEND_SERVICE_NAME par le nom du service de backend (préalablement créé dans le cadre de la procédure générale de création d'un équilibreur de charge TCP/UDP interne) ;
  • HOST_PROJECT_ID par l'ID du projet hôte de VPC partagé ;
  • SUBNET par le nom du sous-réseau partagé.
  • INTERNAL_IP par une adresse IP interne située dans le sous-réseau partagé (si cette valeur n'est pas renseignée, une adresse disponible sera sélectionnée).

Reportez-vous à cette page pour voir plus d'options à utiliser avec gcloud compute forwarding-rules create.

API

Créez la règle de transfert interne et spécifiez un sous-réseau dans le projet hôte.

POST https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules
{
  "name": "FR_NAME",
  "IPAddress": "IP_ADDRESS",
  "IPProtocol": "PROTOCOL",
  "ports": [ "PORT", ... ],
  "loadBalancingScheme": "INTERNAL",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET",
  "network": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME",
  "backendService": "https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/us-west1/backendServices/BE_NAME",
  "networkTier": "PREMIUM"
}

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

  • BE_NAME correspond au nom du service de backend (préalablement créé dans le cadre de la procédure générale de création d'un équilibreur de charge TCP/UDP interne).
  • FR_NAME correspond au nom de la règle de transfert.
  • HOST_PROJECT_ID correspond à l'ID du projet hôte de VPC partagé.
  • IP_ADDRESS correspond à une adresse IP interne dans le sous-réseau partagé.
  • IP_PROTOCOL correspond à TCP ou à UDP, en fonction du protocole du service de backend de l'équilibreur de charge.
  • PORT correspond au numéro de port ou à la liste des ports de l'équilibreur de charge.
  • REGION correspond à la région qui contient le sous-réseau partagé.
  • SERVICE_PROJECT_ID correspond à l'ID du projet de service.
  • SUBNET correspond au nom du sous-réseau partagé.

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

Étapes suivantes