Accéder aux API Google à l'aide de Private Service Connect avec les contrôles de service HTTP(S) du client

Private Service Connect vous permet de vous connecter à des services en dehors de votre réseau cloud privé virtuel (VPC) à l'aide des adresses IP internes que vous définissez.

Vous pouvez créer un point de terminaison Private Service Connect avec des contrôles de service HTTP(S) grand public à l'aide d'un équilibreur de charge HTTP(S) interne, qui vous permet de maintenir des stratégies cohérentes entre plusieurs producteurs de services.

Pour en savoir plus, consultez la page Utiliser Private Service Connect pour accéder aux API Google à l'aide des contrôles de service HTTP(S) grand public.

Un équilibreur de charge HTTP(S) interne utilisé pour Private Service Connect est accessible à partir de réseaux VPC partagés et de réseaux connectés.

Rôles

Le rôle d'administrateur de l'équilibreur de charge Compute (roles/compute.loadBalancerAdmin) contient l'autorisation requise pour effectuer les tâches décrites dans ce guide.

Services compatibles

Consultez la liste des points de terminaison de service régionaux compatibles.

Avant de commencer

  • Activez l'API Compute Engine dans votre projet.

  • Si vous souhaitez enregistrer la règle de transfert pour l'équilibrage de charge avec l'Annuaire des services, activez l'API de l'Annuaire des services dans votre projet. Pour configurer l'Annuaire des services, vous devez créer la règle de transfert à l'aide de Google Cloud CLI ou de l'API.

  • Créez un sous-réseau proxy réservé si vous n'en avez pas déjà un. Il doit y avoir un seul sous-réseau proxy réservé dans le réseau VPC et la région dans lesquels vous souhaitez créer l'équilibreur de charge HTTP(S) interne. Ce sous-réseau est utilisé par tous les équilibreurs de charge HTTP(S) internes de ce réseau et de cette région.

  • Si vous ne les possédez pas déjà, créez une clé privée et un certificat pour votre domaine. Consultez l'étape 1 de l'utilisation des certificats SSL autogérés. Vous avez besoin d'une clé privée et d'un certificat pour créer le proxy HTTPS cible lorsque vous configurez l'équilibreur de charge.

Créer un groupe de points de terminaison du réseau

Pour chaque service que vous souhaitez rendre disponible à l'aide de l'équilibreur de charge, créez un groupe de points de terminaison du réseau (NEG) Private Service Connect.

Console

  1. Accédez à la page Groupes de points de terminaison du réseau dans Google Cloud Console.
    Accéder à la page "Groupes de points de terminaison du réseau"
  2. Cliquez sur Créer un groupe de points de terminaison du réseau.
  3. Saisissez le nom du groupe de points de terminaison du réseau.
  4. Pour le type de groupe de points de terminaison du réseau, sélectionnez Groupe de points de terminaison du réseau (Private Service Connect).
  5. Sélectionnez la région du groupe de points de terminaison du réseau.
  6. Sélectionnez le service cible du groupe de points de terminaison du réseau.
  7. Cliquez sur Create (Créer).

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=TARGET_SERVICE \
  --region=REGION

Remplacez les éléments suivants :

  • NEG_NAME : nom du groupe de points de terminaison du réseau.

  • TARGET_SERVICE : service cible auquel vous souhaitez vous connecter. Consultez la liste des points de terminaison de service régionaux compatibles.

  • REGION : région dans laquelle créer le groupe de points de terminaison du réseau. La région doit être la même que celle du service auquel vous souhaitez vous connecter.

Configurer l'équilibreur de charge

Tous les composants de l'équilibreur de charge doivent être créés dans la même région que le groupe de points de terminaison du réseau Private Service Connect.

Console

Sélectionner un type d'équilibreur de charge

  1. Accédez à la page Équilibrage de charge dans Google Cloud Console.
    Accéder à la page "Équilibrage de charge"
  2. Dans la section Équilibrage de charge HTTP(S), cliquez sur Démarrer la configuration.
  3. Sélectionnez Seulement entre les VM. Ce paramètre signifie que l'équilibreur de charge est interne.
  4. Cliquez sur Continuer.

Configuration de base

  1. Dans le champ Name (Nom), saisissez le nom de l'équilibreur de charge.
  2. Sélectionnez une région pour l'équilibreur de charge.
  3. Sélectionnez un réseau pour l'équilibreur de charge.

    Le réseau doit contenir un sous-réseau proxy réservé dans la région dans laquelle vous créez le NEG et l'équilibreur de charge. Si vous n'en avez pas, vous pouvez cliquer sur Réserver un sous-réseau pour en créer un.

  4. Laissez la fenêtre ouverte pour continuer.

Configurer le backend

Le groupe de points de terminaison du réseau Private Service Connect est un type de backend d'équilibreur de charge. Vous créez un service de backend pour chaque backend que vous souhaitez configurer.

  1. Cliquez sur Backend configuration (Configuration du backend).
  2. Pour chaque groupe de points de terminaison du réseau Private Service Connect que vous souhaitez configurer, créez un service de backend.

    1. Dans le menu Créer ou sélectionner des services de backend, sélectionnez Créer un service backend.
    2. Dans le champ Name (Nom), saisissez le nom du service de backend.
    3. Définissez le type de backend sur Groupe de points de terminaison du réseau Private Service Connect.
    4. Sélectionnez HTTPS pour le protocole.

      Le paramètre Port nommé n'est pas utilisé pour cette configuration d'équilibreur de charge. Conservez le paramètre de port nommé par défaut.

    5. Dans la section Backends, cliquez sur le menu Nouveau backend, puis sélectionnez le groupe de points de terminaison du réseau Private Service Connect.

      Si vous devez créer un groupe de points de terminaison du réseau Private Service Connect, cliquez sur Créer un groupe de points de terminaison du réseau Private Service Connect.

Règles de routage

Si vous ne configurez qu'un seul service de backend pour l'équilibreur de charge, la règle de routage par défaut est suffisante et vous pouvez passer directement à la section Configuration du frontend.

  1. Si vous possédez plusieurs services de backend, cliquez sur Règles de routage.
  2. Sélectionnez Règle simple d'hôte et de chemin d'accès.
  3. Pour chaque backend, procédez comme suit :
    1. Ajoutez une règle d'hôte et de chemin d'accès.
    2. Dans le champ Hôte, saisissez le nom d'hôte qui servira à envoyer des requêtes à ce service, par exemple cloudkms.example.com.
    3. Dans le champ Chemins d'accès, saisissez le chemin d'accès, par exemple, /*.
    4. Pour Backends, sélectionnez le service de backend.

Configuration du frontend

  1. Cliquez sur Frontend configuration (Configuration du frontend).
  2. Cliquez sur Ajouter une adresse IP et un port frontend.
  3. Dans le champ Name (Nom), saisissez le nom de l'équilibreur de charge.
  4. Dans le champ Protocole, sélectionnez HTTPS (inclut HTTP/2).
  5. Sélectionnez un sous-réseau pour l'équilibreur de charge.
  6. Assurez-vous que le port est défini sur la valeur 443 pour autoriser le trafic HTTPS.
  7. Pour Adresse IP, sélectionnez une adresse IP dans le menu.

    Si vous souhaitez réserver une nouvelle adresse IP, cliquez sur Créer une adresse IP.

  8. Cliquez sur la liste déroulante Certificat.

    1. Si vous possédez déjà une ressource de certificat SSL autogérée que vous souhaitez utiliser, sélectionnez-la dans le menu.
    2. Sinon, sélectionnez Créer un certificat.
    3. Saisissez le nom de la ressource de certificat.
    4. Dans les champs appropriés, importez vos fichiers au format PEM :
      • Certificat
      • Clé privée
    5. Cliquez sur Create (Créer).
  9. Cliquez sur Done (OK).

Vérifier et finaliser

  1. Cliquez sur Vérifier et finaliser pour vérifier la configuration.
  2. Cliquez sur Create (Créer).

gcloud

  1. Pour chaque groupe de points de terminaison du réseau que vous avez créé, créez un service de backend.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --protocol=HTTPS \
     --region=REGION
    

    Remplacez les éléments suivants :

    • BACKEND_SERVICE_NAME : nom du service de backend.
    • REGION : région dans laquelle créer le service de backend.
  2. Pour chaque service de backend que vous avez créé, ajoutez le NEG correspondant au service de backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
     --network-endpoint-group=NEG_NAME \
     --region=REGION
    

    Remplacez les éléments suivants :

    • BACKEND_SERVICE_NAME : nom du service de backend.
    • NEG_NAME : nom du groupe de points de terminaison du réseau.
    • REGION : région du backend.
  3. Créez un mappage d'URL pour l'équilibreur de charge.

    Un mappage d'URL doit faire référence à un service de backend par défaut. Si vous configurez votre équilibreur de charge avec un service de backend, définissez ce service de backend par défaut. Si vous configurez votre équilibreur de charge pour qu'il utilise plusieurs services de backend, référencés par des règles d'hôte et des outils de mise en correspondance des chemins d'accès que vous allez créer à l'étape suivante, choisissez l'un des services de backend comme mappage d'URL par défaut.

    gcloud compute url-maps create URL_MAP_NAME \
     --default-service=DEFAULT_BACKEND_SERVICE_NAME \
     --region=REGION
    

    Remplacez les éléments suivants :

    • URL_MAP_NAME : nom du mappage d'URL.

    • DEFAULT_BACKEND_SERVICE_NAME : nom de la valeur par défaut de l'équilibreur de charge. La valeur par défaut est utilisée lorsqu'aucune règle d'hôte ne correspond au nom d'hôte demandé.

    • REGION : région dans laquelle créer le mappage d'URL.

  4. Ajoutez des services de backend supplémentaires au mappage d'URL.

    Si votre mappage d'URL doit référencer deux ou plusieurs services de backend, procédez comme suit. Si votre mappage d'URL ne fait référence qu'à un seul service de backend, ignorez cette étape.

    1. Pour chaque service de backend, ajoutez un outil de mise en correspondance des chemins d'accès. Vous devez créer un outil de mise en correspondance des chemins d'accès pour chaque service de backend.
    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
     --path-matcher-name=PATH_MATCHER \
     --default-service=BACKEND_SERVICE_NAME \
     --region=REGION
    

    Remplacez les éléments suivants :

    • URL_MAP_NAME : nom du mappage d'URL.
    • PATH_MATCHER : nom de l'outil de mise en correspondance des chemins d'accès.
    • BACKEND_SERVICE_NAME : nom du service de backend.
    • REGION : région du mappage d'URL.
    1. Pour chaque nom d'hôte, ajoutez une règle d'hôte.

      Chaque règle d'hôte ne peut référencer qu'un seul outil de mise en correspondance des chemins d'accès, mais deux règles d'hôte ou plus peuvent faire référence à un même outil de mise en correspondance des chemins d'accès.

      gcloud compute url-maps add-host-rule URL_MAP_NAME \
      --hosts=HOST \
      --path-matcher-name=PATH_MATCHER \
      --region=REGION
      

      Remplacez les éléments suivants :

      • URL_MAP_NAME : nom du mappage d'URL.
      • HOST : nom de l'hôte auquel envoyer les requêtes pour ce service. Exemple :cloudkms.example.com
      • PATH_MATCHER : nom de l'outil de mise en correspondance des chemins d'accès.
      • REGION : région du mappage d'URL.
  5. Créez le proxy HTTPS cible.

    Créez un certificat SSL régional à l'aide de la commande gcloud compute ssl-certificates create. Les certificats gérés par Google ne sont pas compatibles avec les équilibreurs de charge HTTP(S) internes.

    gcloud compute ssl-certificates create CERTIFICATE \
     --certificate=LB_CERT \
     --private-key=LB_PRIVATE_KEY \
     --region=REGION
    

    Remplacez les éléments suivants :

    • CERTIFICATE : nom du certificat.

    • LB_CERT : chemin d'accès au fichier de certificat au format PEM de votre certificat autogéré.

    • LB_PRIVATE_KEY : chemin d'accès au fichier de clé privée au format PEM pour votre certificat autogéré.

    • REGION : région du certificat.

    Utilisez la ressource de certificat SSL régional pour créer le proxy HTTPS cible à l'aide de la commande gcloud compute target-https-proxies create.

    gcloud compute target-https-proxies create PROXY_NAME \
       --url-map=URL_MAP_NAME \
       --region=REGION \
       --ssl-certificates=CERTIFICATE
    

    Remplacez les éléments suivants :

    • PROXY_NAME : nom du proxy HTTPS cible.
    • URL_MAP_NAME : nom du mappage d'URL.
    • REGION : région de la ressource de certificat.
    • CERTIFICATE : nom de la ressource de certificat.
  6. Réservez une adresse IPv4 interne régionale pour la règle de transfert.

    gcloud compute addresses create ADDRESS_NAME \
     --ip-version=IPV4 \
     --region=REGION \
     --subnet=SUBNETWORK
    

    Remplacez les éléments suivants :

    • ADDRESS_NAME : nom de la ressource d'adresse IP.
    • REGION : région dans laquelle créer l'adresse IP.
    • SUBNET : sous-réseau dans lequel créer l'adresse IP.

    Exécutez cette commande pour afficher l'adresse IP réservée. Une fois l'équilibreur de charge créé, vous pouvez utiliser l'adresse IP pour vérifier la configuration.

    gcloud compute addresses describe ADDRESS_NAME \
     --format="get(address)" --region=REGION
    
  7. Créez la règle de transfert.

    Créez la règle de transfert à l'aide de la commande gcloud compute forwarding-rules create.

    gcloud compute forwarding-rules create FWD_RULE \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network=NETWORK \
     --address=ADDRESS_NAME \
     --ports=443 \
     --region=REGION \
     --target-https-proxy=PROXY_NAME \
     --target-https-proxy-region=PROXY_REGION \
     [--service-directory-registration=SD_SERVICE_NAME]
    

    Remplacez les éléments suivants :

    • FWD_RULE : nom de la règle de transfert.

    • NETWORK : région dans laquelle créer la règle de transfert.

    • ADDRESS_NAME : adresse IP réservée.

    • REGION : région de la règle de transfert.

    • PROXY_NAME : nom du proxy HTTPS cible.

    • PROXY_REGION : région du proxy HTTPS cible.

    • SD_SERVICE_NAME : URI du service Service Directory avec lequel vous souhaitez enregistrer l'équilibreur de charge, au format suivant : projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME. La spécification de --service-directory-registration est facultative.

Configurer les enregistrements DNS

Configurez les enregistrements DNS de chaque hôte ajouté au mappage d'URL, en pointant vers l'adresse IP de la règle de transfert.

Par exemple, supposons que vous ayez configuré Private Service Connect avec les contrôles de service client HTTP(S) avec les configurations suivantes :

  • Un NEG Private Service Connect qui utilise le service cible asia-east1-cloudkms.googleapis.com.

  • Un équilibreur de charge HTTP(S) interne qui utilise ce NEG Private Service Connect en tant que backend.

  • Un mappage d'URL qui définit une règle d'hôte pour cloudkms.example.com.

Pour que cette configuration fonctionne correctement, vous devez créer un enregistrement DNS qui pointe cloudkms.example.com vers l'adresse IP de la règle de transfert.

Toutes les requêtes envoyées à cloudkms.example.com sont envoyées à l'équilibreur de charge, qui transfère la requête à asia-east1-cloudkms.googleapis.com.

Si vous gérez le DNS à l'aide de Cloud DNS, consultez la section Ajouter un enregistrement DNS.

Vérifier la configuration

  1. Créez l'instance de VM.

    gcloud compute instances create VM_NAME \
       --network=NETWORK \
       --image-project=debian-cloud --image-family=debian-9 \
       --zone=ZONE
    

    Remplacez les éléments suivants :

    • VM_NAME : nom de la machine virtuelle.

    • NETWORK : réseau de la VM.

    • ZONE : zone de la VM.

  2. Connectez-vous à la VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Utilisez curl pour vérifier la configuration. Cette commande définit l'en-tête Host et contourne la résolution DNS en spécifiant une adresse IP définie par l'utilisateur. Vous pouvez omettre le port si vous utilisez le port par défaut du protocole, par exemple à l'aide du port 443 pour HTTPS.

    Si nécessaire, vous pouvez ignorer la validation du certificat à l'aide de l'indicateur -k. Vous devrez peut-être ignorer la validation si vous avez utilisé un certificat autosigné pour configurer le proxy HTTPS cible, ou si la VM ne dispose pas du certificat de l'autorité de certification qui a signé votre certificat.

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
       -H 'Host: HOST' \
       --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    Remplacez les éléments suivants :

    • HOST:  nom d'hôte configuré dans le mappage d'URL.

    • RESOURCE_URI : reste de l'URI de la ressource que vous souhaitez utiliser pour la validation. Par exemple, si l'équilibreur de charge transfère les requêtes vers un point de terminaison régional de Cloud Key Management Service, vous pouvez utiliser v1/projects/<var>PROJECT_ID</var>/locations.

    • FWD_RULE_IP_ADDRESS : adresse IP attribuée à la ressource d'adresse IP réservée ADDRESS_NAME, utilisée dans la configuration de la règle de transfert.

Utiliser Private Service Connect à partir d'hôtes sur site

Si votre réseau sur site est connecté à un réseau VPC, vous pouvez vous connecter à l'équilibreur de charge HTTP(S) interne qui fournit Private Service Connect à l'aide des contrôles de service HTTP(S) grand public.

  • Votre réseau sur site doit être connecté au réseau VPC contenant votre équilibreur de charge HTTP(S) interne à l'aide de tunnels Cloud VPN ou de rattachements Cloud Interconnect (VLAN) situés dans la même région que l'équilibreur de charge HTTP(S) interne.

  • Le réseau sur site doit disposer des routes appropriées vers votre équilibreur de charge HTTP(S) interne. Assurez-vous que chaque routeur Cloud Router gérant la session BGP pour le tunnel Cloud VPN ou le rattachement Cloud Interconnect (VLAN) a été configuré de façon à annoncer la plage d'adresses IP principale du sous-réseau utilisé par la règle de transfert de votre équilibreur de charge HTTP(S) interne. Les routeurs Cloud Router annoncent par défaut les routes de sous-réseau.

  • Vous devez configurer des systèmes sur site afin que les noms d'hôte dans le mappage d'URL de votre équilibreur de charge HTTP(S) interne correspondent à l'adresse IP de la règle de transfert de l'équilibreur de charge HTTP(S) interne. Vous pouvez créer les enregistrements DNS sur les serveurs de noms sur site ou utiliser Cloud DNS.

    Si vous avez créé les enregistrements DNS à l'aide de zones privées gérées Cloud DNS, procédez comme suit :

    • Créez une règle de serveur entrant dans le réseau VPC auquel votre réseau sur site se connecte.

    • Identifiez les points d'entrée du système de transfert entrant dans les régions où se trouvent vos tunnels Cloud VPN et vos rattachements Cloud Interconnect (VLAN), dans le réseau VPC auquel votre réseau sur site se connecte.

    • Configurez les serveurs de noms DNS sur site pour transférer les requêtes DNS pour les noms d'hôte dans le mappage d'URL vers un point d'entrée du système de transfert entrant Cloud DNS.

Figure 1. En configurant Private Service Connect, Cloud Router et des hôtes sur site, vous pouvez vous connecter aux services et API Google à l'aide de points de terminaison de service régionaux.