Accéder aux API Google régionales via des points de terminaison

Ce document explique comment utiliser des points de terminaison Private Service Connect pour se connecter aux points de terminaison régionaux des API Google compatibles.

Pour plus d'informations sur les autres configurations de Private Service Connect, consultez la page Private Service Connect.

Rôles

Pour obtenir les autorisations nécessaires pour créer un point de terminaison Private Service Connect régional, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre réseau VPC :

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

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

Avant de commencer

  1. After installing the Google Cloud CLI, initialize it by running the following command:

    $ gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  2. Enable the Compute Engine, Network Connectivity Center, and Cloud DNS APIs.

    Enable the APIs

  3. En outre, activez l'API pour le service cible auquel vous souhaitez accéder via le point de terminaison Private Service Connect. Par exemple, si vous souhaitez accéder à spanner.me-central2.rep.googleapis.com, activez l'API Cloud Spanner. Private Service Connect n'active pas automatiquement les API.

  4. Assurez-vous que les règles de pare-feu de sortie autorisent le trafic vers le point de terminaison. La configuration de pare-feu par défaut d'un réseau VPC autorise ce trafic, car elle contient une règle implicite de sortie autorisée. Vérifiez que vous n'avez pas créé de règle de sortie de priorité plus élevée qui bloque le trafic.

Créer un point de terminaison Private Service Connect régional

Vous pouvez créer un point de terminaison Private Service Connect régional afin d'envoyer des requêtes à un point de terminaison régional pour une API Google cible.

Pour obtenir la liste des points de terminaison régionaux disponibles, consultez la section Points de terminaison de service régionaux.

Console

  1. Dans la console Google Cloud , accédez à la page Private Service Connect.

    Accéder à Private Service Connect

  2. Cliquez sur Connecter le point de terminaison.

  3. Dans Cible, sélectionnez API Google.

  4. Dans la liste Champ d'application, sélectionnez Régional.

  5. Dans la liste Région, sélectionnez la région que vous souhaitez utiliser.

  6. Dans la liste Service cible, sélectionnez le service auquel vous souhaitez accéder.

  7. Dans Nom du point de terminaison, saisissez un nom pour le point de terminaison.

  8. Sous Réseau, sélectionnez un réseau.

  9. Dans Sous-réseau, sélectionnez un sous-réseau.

  10. Dans Adresse IP, effectuez l'une des opérations suivantes pour configurer une adresse IP :

    • Sélectionnez Allouer automatiquement pour allouer et réserver automatiquement une nouvelle adresse IP.
    • Sélectionnez une adresse IP réservée dans la liste.
    • Cliquez sur Créer une adresse IP pour réserver une nouvelle adresse IP.
  11. Facultatif : Pour rendre le point de terminaison disponible dans toutes les régions du réseau VPC, sélectionnez Activer l'accès mondial.

  12. Cliquez sur Ajouter un point de terminaison.

gcloud

Exécutez la commande gcloud network-connectivity regional-endpoints create.

gcloud network-connectivity regional-endpoints create ENDPOINT_NAME \
    --region=REGION \
    --address=ADDRESS \
    --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \
    --subnetwork=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
    --target-google-api=REP_DNS_NAME

Si vous souhaitez que le point de terminaison soit disponible pour les ressources d'autres régions, ajoutez l'option --enable-global-access.

Remplacez les éléments suivants :

  • ENDPOINT_NAME : nom du point de terminaison.

  • REGION : région dans laquelle vous souhaitez créer le point de terminaison.

  • ADDRESS : adresse IPv4 ou IPv6 que vous souhaitez utiliser pour le point de terminaison. Si elle est omise, une adresse IPv4 du sous-réseau est allouée. Utilisez l'un des formats suivants :

    • Adresse IPv4 (par exemple, 10.0.0.2).
    • URI de la ressource d'adresse IPv4 ou IPv6 (par exemple, projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME)
  • PROJECT_ID : projet dans lequel vous créez le point de terminaison.

  • NETWORK_NAME : nom du réseau VPC utilisé pour le point de terminaison.

  • SUBNET_NAME : sous-réseau auquel vous connectez le point de terminaison.

  • REP_DNS_NAME : nom d'hôte du point de terminaison de service régional auquel vous vous connectez. Exemple : spanner.me-central2.rep.googleapis.com.

API

Exécutez la méthode projects.locations.regionalEndpoints.create.

Méthode HTTP et URL :

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints?regionalEndpointId=ENDPOINT_NAME
{
  "accessType": "REGIONAL",
  "address": "ADDRESS",
  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
  "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "targetGoogleApi": "REP_DNS_NAME"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet du point de terminaison.
  • REGION : région dans laquelle vous souhaitez créer le point de terminaison.
  • ENDPOINT_NAME : nom du point de terminaison.
  • ADDRESS : adresse IPv4 ou IPv6 que vous souhaitez utiliser pour le point de terminaison. Si elle est omise, une adresse IPv4 du sous-réseau est allouée. Utilisez l'un des formats suivants :
    • Adresse IPv4 (par exemple, 10.0.0.2).
    • URI de la ressource d'adresse IPv4 ou IPv6 (par exemple, projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME)
  • NETWORK_NAME : nom du réseau VPC utilisé pour le point de terminaison.
  • SUBNET_NAME : nom du sous-réseau auquel vous souhaitez connecter le point de terminaison.
  • REP_DNS_NAME : nom d'hôte du point de terminaison de service régional auquel vous souhaitez vous connecter. Exemple : spanner.me-central2.rep.googleapis.com.

Répertorier les points de terminaison

Vous pouvez répertorier tous les points de terminaison configurés.

Console

  1. Dans la console Google Cloud , accédez à la page Private Service Connect.

    Accéder à Private Service Connect

  2. Cliquez sur l'onglet Points de terminaison connectés.

    Tous les points de terminaison sont affichés, y compris ceux avec des cibles de points de terminaison régionaux.

gcloud

Exécutez la commande gcloud network-connectivity regional-endpoints list.

gcloud network-connectivity regional-endpoints list \
    --region=REGION

Remplacez REGION par la région correspondant aux points de terminaison que vous souhaitez lister.

API

Exécutez la méthode projects.locations.regionalEndpoints.list.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet du point de terminaison.
  • REGION : région des points de terminaison que vous souhaitez lister.

Vérifier que le point de terminaison fonctionne

Créez une instance de machine virtuelle (VM) dans le réseau VPC et la région dans lesquels le point de terminaison est configuré. Exécutez la commande suivante sur la VM pour vérifier que le point de terminaison Private Service Connect fonctionne. Les points de terminaison ne répondent pas aux requêtes ping (ICMP).

  • Pour vérifier un point de terminaison IPv4, procédez comme suit :

    curl --connect-to REP_DNS_NAME:443:ADDRESS:443 \
    'https://REP_DNS_NAME/PATH'
    
  • Pour vérifier un point de terminaison IPv6, procédez comme suit :

    curl -6 --connect-to REP_DNS_NAME:443:[ADDRESS]:443 \
    'https://REP_DNS_NAME/PATH'
    

Remplacez les éléments suivants :

  • REP_DNS_NAME : nom DNS public du point de terminaison régional cible (par exemple, spanner.me-central2.rep.googleapis.com).
  • ADDRESS : adresse IP du point de terminaison.
  • PATH : chemin d'accès à une ressource diffusée par ce service. Par exemple, de nombreux services proposent un document de découverte, accessible via le chemin d'accès $discovery/rest?version=v1.

L'exemple de requête suivant vérifie qu'un point de terminaison disposant de l'adresse IP 192.168.1.100 peut demander le document de découverte de l'API Cloud Spanner au point de terminaison régional situé dans la région me-central2.

curl --connect-to spanner.me-central2.rep.googleapis.com:443:192.168.1.100:443 \
'https://spanner.me-central2.rep.googleapis.com/$discovery/rest?version=v1'

Créer une entrée DNS privée pour le point de terminaison

Vous devez créer des entrées DNS privées pour que les clients puissent diriger les requêtes vers votre point de terminaison Private Service Connect.

Nous vous recommandons de créer une zone privée qui utilise le même nom d'hôte que le point de terminaison régional cible : SERVICE.REGION.rep.DOMAIN, puis de créer un enregistrement racine dans cette zone.

Par exemple, si votre point de terminaison Private Service Connect a une cible de spanner.me-central2.rep.googleapis.com, créez une zone privée pour spanner.me-central2.rep.googleapis.com contenant un enregistrement racine pour spanner.me-central2.rep.googleapis.com. Créer des enregistrements dans l'apex du domaine vous permet d'accéder au nom d'hôte public d'autres points de terminaison régionaux, par exemple logging.me-central2.rep.googleapis.com.

Les sections suivantes expliquent comment utiliser Cloud DNS pour créer une zone privée et un enregistrement DNS racine.

Créer une zone privée

Console

  1. Dans la console Google Cloud , accédez à la page Créer une zone DNS.

    Accéder à la page "Créer une zone DNS"

  2. Dans le champ Type de zone, sélectionnez Privé.

  3. Dans le champ Nom de zone, saisissez un nom. Par exemple, si votre point de terminaison Private Service Connect pointe vers spanner.me-central2.rep.googleapis.com, saisissez spanner-me-central2-rep-googleapis-com.

  4. Pour Nom DNS, spécifiez le nom d'hôte du point de terminaison régional cible, suivi d'un point final. Exemple : spanner.me-central2.rep.googleapis.com..

  5. Facultatif : ajoutez une description.

  6. Dans le champ Options, sélectionnez Par défaut (privé).

  7. Sélectionnez les réseaux VPC sur lesquels vous souhaitez que la zone privée soit visible. Seuls les réseaux VPC que vous sélectionnez sont autorisés à interroger des enregistrements dans la zone.

  8. Cliquez sur Créer.

gcloud

Exécutez la commande dns managed-zones create :

gcloud dns managed-zones create ZONE_NAME \
    --dns-name=REP_DNS_NAME. \
    --networks=VPC_NETWORK_LIST \
    --visibility=private \
    --description="Private zone for REP_DNS_NAME"

Remplacez les éléments suivants :

  • ZONE_NAME : nom de votre zone (par exemple, spanner-me-central2-rep-googleapis.com).
  • DESCRIPTION : description de votre zone
  • REP_DNS_NAME : suffixe DNS de votre zone. Utilisez le nom d'hôte du point de terminaison régional cible (par exemple, spanner.me-central2.rep.googleapis.com).
  • VPC_NETWORK_LIST : liste de réseaux VPC autorisés à interroger la zone, séparés par une virgule.

API

Envoyez une requête POST à l'aide de la méthode managedZones.create :

Méthode HTTP et URL :

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones

Corps JSON de la requête :

{
  "name": "ZONE_NAME",
  "dnsName": "REP_DNS_NAME.",
  "description": "DESCRIPTION",
  "visibility": "private",
  "privateVisibilityConfig": {
    "kind": "dns#managedZonePrivateVisibilityConfig",
    "networks": [
      {
        "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
        "networkUrl": "NETWORK_1_URL"
      },
      {
        "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
        "networkUrl": "NETWORK_2_URL"
      }
    ]
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet de la zone DNS.
  • ZONE_NAME : nom de la zone privée que vous avez créée pour ce point de terminaison régional.
  • REP_DNS_NAME : FQDN de l'enregistrement que vous créez. Utilisez le nom d'hôte du point de terminaison régional cible (par exemple, spanner.me-central2.rep.googleapis.com).
  • DESCRIPTION : description de la zone DNS.
  • NETWORK_1_URL et NETWORK_2_URL : URL complètes des réseaux VPC autorisés à interroger la zone (par exemple, https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME).

Ajouter un enregistrement DNS à la zone

Console

  1. Dans la console Google Cloud , accédez à la page Zones Cloud DNS.

    Accéder aux zones Cloud DNS

  2. Cliquez sur le nom de la zone gérée à laquelle vous souhaitez ajouter l'enregistrement.

  3. Sur la page Détails de la zone, cliquez sur Ajouter un jeu d'enregistrements standard.

  4. Sur la page Créer un jeu d'enregistrements, laissez le champ Nom DNS vide. Si vous laissez le champ vide, un enregistrement de ressources est créé au niveau de l'apex du domaine.

  5. Dans le champ Resource record type (Type d'enregistrement de la ressource), sélectionnez A.

  6. Dans le champ Adresse IPv4, saisissez ou sélectionnez l'adresse IP du point de terminaison Private Service Connect.

  7. Cliquez sur Créer.

gcloud

Pour ajouter un jeu d'enregistrements de ressources, utilisez la commande gcloud dns record-sets create :

gcloud dns record-sets create REP_DNS_NAME \
    --rrdatas=ADDRESS \
    --type=RECORD_TYPE \
    --ttl=TTL \
    --zone=ZONE_NAME

Remplacez les éléments suivants :

  • REP_DNS_NAME : FQDN de l'enregistrement que vous créez. Utilisez le nom d'hôte du point de terminaison régional cible (par exemple, spanner.me-central2.rep.googleapis.com).
  • ADDRESS : adresse IP du point de terminaison Private Service Connect.
  • RECORD_TYPE : type d'enregistrement DNS, par exemple A pour les enregistrements IPv4 ou AAAA pour les enregistrements IPv6.
  • TTL : valeur TTL (Time To Live) exprimée en secondes mise en cache par le résolveur de ce jeu d'enregistrements de ressources (par exemple, 300)
  • ZONE_NAME : nom de la zone privée que vous avez créée pour ce point de terminaison régional.

API

Pour ajouter un jeu d'enregistrements de ressources, utilisez la méthode resourceRecordSets.create :

Méthode HTTP et URL :

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME/rrsets

Corps JSON de la requête :

{
  "name": "REP_DNS_NAME.",
  "type": "RECORD_TYPE",
  "ttl": TTL,
  "rrdatas": [ "ADDRESS" ]
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet de la zone DNS.
  • ZONE_NAME : nom de la zone privée que vous avez créée pour ce point de terminaison régional.
  • REP_DNS_NAME : FQDN de l'enregistrement que vous créez. Utilisez le nom d'hôte du point de terminaison régional cible (par exemple, spanner.me-central2.rep.googleapis.com).
  • RECORD_TYPE : type d'enregistrement DNS, par exemple A pour les enregistrements IPv4 ou AAAA pour les enregistrements IPv6.
  • TTL : valeur TTL (Time To Live) exprimée en secondes mise en cache par le résolveur de ce jeu d'enregistrements de ressources (par exemple, 300)
  • ADDRESS : adresse IP du point de terminaison Private Service Connect.

Configurer les clients pour qu'ils utilisent le nom du point de terminaison privé

Vous devez configurer les clients pour qu'ils utilisent des noms DNS privés à la place des noms DNS publics. Consultez la documentation de votre client ou de votre bibliothèque cliente, afin de savoir comment le configurer pour qu'il utilise des points de terminaison personnalisés. Les pages suivantes incluent les étapes de configuration pour certains clients courants :

  • Python : vous pouvez configurer api_endpoint dans la section Options client.

  • Go : vous pouvez configurer WithEndpoint dans ClientOptions.

  • .NET : vous pouvez configurer Endpoint dans la classe de compilateur du client.

  • gcloud : vous pouvez configurer api_endpoint_overrides dans la gcloud CLI.

Obtenir des informations détaillées sur un point de terminaison

Vous pouvez afficher les détails de configuration d'un point de terminaison.

gcloud

Exécutez la commande gcloud network-connectivity regional-endpoints describe.

gcloud network-connectivity regional-endpoints describe \
    ENDPOINT_NAME --region=REGION

Remplacez les éléments suivants :

  • ENDPOINT_NAME : nom du point de terminaison.
  • REGION : région du point de terminaison.

API

Exécutez la commande projects.locations.regionalEndpoints.get.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet du point de terminaison.
  • REGION : région des points de terminaison que vous souhaitez lister.
  • ENDPOINT_NAME : nom du point de terminaison.

Modifier la configuration de l'accès global

Vous ne pouvez pas mettre à jour un point de terminaison Private Service Connect qui cible un point de terminaison régional. Si vous devez modifier le paramètre d'accès mondial du point de terminaison, supprimez-le et créez-en un autre avec le paramètre d'accès mondial requis.

Supprimer un point de terminaison

Vous pouvez supprimer un point de terminaison.

gcloud

Exécutez la commande gcloud network-connectivity regional-endpoints delete.

gcloud network-connectivity regional-endpoints delete \
    ENDPOINT_NAME --region=REGION

Remplacez les éléments suivants :

  • ENDPOINT_NAME : nom du point de terminaison.
  • REGION : région du point de terminaison.

API

Exécutez la commande projects.location.regionalEndpoints.delete.

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet du point de terminaison.
  • REGION : région du point de terminaison.
  • ENDPOINT_NAME : nom du point de terminaison.

Accéder aux points de terminaison à partir de réseaux hybrides

Les clients des réseaux connectés à Google Cloud avec des rattachements de VLAN pour les tunnels Cloud Interconnect ou Cloud VPN peuvent atteindre les points de terminaison Private Service Connect.

  • Le rattachement de VLAN ou le tunnel Cloud VPN doit se terminer dans le même réseau VPC (ou réseau VPC partagé) que le point de terminaison. Les clients des réseaux VPC appairés ne peuvent pas atteindre les points de terminaison.

  • Le trafic client provenant de rattachements de VLAN ou de tunnels Cloud VPN peut atteindre des points de terminaison dans une autre région si l'accès mondial est configuré.

  • Dataplane v1 et Dataplane v2 sont compatibles avec les rattachements de VLAN. Pour plus d'informations sur les versions de Dataplane, consultez la page Dataplane v2.

Vous devez configurer des systèmes sur l'autre réseau afin qu'ils puissent envoyer des requêtes à vos zones DNS privées.

Si vous avez mis en œuvre les zones DNS privées à l'aide de Cloud DNS, procédez comme suit :

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

  • Identifiez les points d'entrée du redirecteur entrant dans la région où se trouve votre rattachement de VLAN ou votre tunnel Cloud VPN, dans le réseau VPC auquel votre autre réseau se connecte.

  • Configurez les systèmes et les serveurs de noms DNS de l'autre réseau pour transférer les noms DNS du point de terminaison vers un point d'entrée du redirecteur entrant, dans la même région que celle du rattachement de VLAN ou du tunnel Cloud VPN qui se connecte au réseau VPC.