Se connecter à une instance à l'aide de Private Service Connect

Cette page explique comment utiliser Private Service Connect pour se connecter à une instance Cloud SQL.

Vous pouvez utiliser Private Service Connect pour vous connecter à une instance Cloud SQL principale ou à l'une de ses instances répliquées avec accès en lecture à partir de plusieurs réseaux de cloud privé virtuel (VPC) appartenant à différents groupes, équipes, projets ou organisations.

Avant de commencer

L'utilisation de Private Service Connect avec une instance Cloud SQL est disponible pour les versions de gcloud CLI 416.0.0 et ultérieures.

Rôles utilisateur

Le tableau suivant fournit des informations sur les rôles requis pour utiliser Private Service Connect avec une instance Cloud SQL :

Rôle Description
compute.networkAdmin

Accorde un contrôle total sur le réseau VPC qui lance une connexion à une instance Cloud SQL. Vous pouvez créer et gérer des adresses IP, des règles de pare-feu et des points de terminaison Private Service Connect.

Si vous utilisez Private Service Connect pour vous connecter à une instance Cloud SQL à partir de plusieurs réseaux VPC, chaque réseau a son propre administrateur.

dns.admin Accorde un contrôle total sur les ressources Cloud DNS, y compris les zones et enregistrements DNS.
cloudsql.admin Fournit un contrôle complet sur une instance Cloud SQL et contrôle l'instance tout au long de son cycle de vie.
cloudsql.instanceUser Fournit un accès à l'instance Cloud SQL. Si vous vous connectez via le client proxy d'authentification Cloud SQL, vous devez disposer du rôle Client Cloud SQL. Si vous vous connectez directement, vous n'avez pas besoin de rôles ni d'autorisations IAM (Identity and Access Management).

Créer une instance Cloud SQL

Vous pouvez créer une instance et activer Private Service Connect pour celle-ci à l'aide de gcloud CLI, Terraform ou l'API.

gcloud

Pour créer une instance et activer Private Service Connect pour celle-ci, utilisez la commande gcloud sql instances create :

gcloud sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip \
--tier=MACHINE_TYPE \
--database-version=DATABASE_VERSION

Effectuez les remplacements suivants :

  • INSTANCE_NAME : nom de l'instance.
  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • REGION_NAME : nom de la région pour l'instance.
  • ALLOWED_PROJECTS : liste d'ID ou de numéros de projet autorisés, séparés par une virgule. Si un projet ne figure pas dans cette liste, vous ne pouvez pas l'utiliser pour créer une instance et activer Private Service Connect pour celle-ci.

  • AVAILABILITY_TYPE : active la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
    • REGIONAL : permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.
    • ZONAL : n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.

    Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité pour une instance existante et Désactiver la haute disponibilité pour une instance.

  • MACHINE_TYPE : type de machine de l'instance.
  • DATABASE_VERSION : version de la base de données pour l'instance (par exemple, POSTGRES_13).

Terraform

Pour créer une instance avec Private Service Connect activé, utilisez la ressource google_sql_database_instance Terraform.

resource "google_sql_database_instance" "default" {
  name             = "postgres-instance"
  region           = "us-central1"
  database_version = "POSTGRES_14"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled = true
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = []
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false # Set to "true" to prevent destruction of the resource
}

Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.

    Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.

Préparer le répertoire

Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).

  1. Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.

    Copiez l'exemple de code dans le fichier main.tf que vous venez de créer.

    Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
    terraform init

    Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade :

    terraform init -upgrade

Appliquer les modifications

  1. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  2. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

  3. Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.

REST v1

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_NAME : nom de l'instance.
  • REGION_NAME : nom de la région pour l'instance.
  • AVAILABILITY_TYPE : active la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
    • REGIONAL : permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.
    • ZONAL : n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.

    Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité d'une instance existante et Désactiver la haute disponibilité pour une instance.

  • ALLOWED_PROJECTS : liste d'ID ou de numéros de projet autorisés, séparés par une virgule. Si un projet ne figure pas dans cette liste, vous ne pouvez pas l'utiliser pour créer une instance et activer Private Service Connect pour celle-ci.

  • MACHINE_TYPE : type de machine de l'instance.

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Corps JSON de la requête :

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "POSTGRES_13",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_NAME : nom de l'instance.
  • REGION_NAME : nom de la région pour l'instance.
  • AVAILABILITY_TYPE : active la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
    • REGIONAL : permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.
    • ZONAL : n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.

    Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité d'une instance existante et Désactiver la haute disponibilité pour une instance.

  • ALLOWED_PROJECTS : liste d'ID ou de numéros de projet autorisés, séparés par une virgule. Si un projet ne figure pas dans cette liste, vous ne pouvez pas l'utiliser pour créer une instance et activer Private Service Connect pour celle-ci.

  • MACHINE_TYPE : type de machine de l'instance.

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

Corps JSON de la requête :

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "POSTGRES_13",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Obtenir le rattachement de service

Après avoir créé une instance Cloud SQL avec Private Service Connect activé, obtenez l'URI du rattachement de service et utilisez-le pour créer le point de terminaison Private Service Connect.

gcloud

Pour afficher des informations récapitulatives sur une instance sur laquelle Private Service Connect est activé, telles que le champ pscServiceAttachmentLink qui affiche l'URI qui pointe vers le rattachement de service de l'instance, utilisez la commande gcloud sql instances describe :

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

Effectuez les remplacements suivants :

  • INSTANCE_NAME : nom de l'instance Cloud SQL à laquelle les points de terminaison Private Service Connect des réseaux VPC peuvent se connecter.
  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.

L'exemple suivant illustre un exemple de sortie pour cette commande :

gcloud sql instances describe myinstance \
--project=12345

...
pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment

Terraform

Pour obtenir l'URI du rattachement de service, utilisez la ressource Terraform google_compute_address.

resource "google_compute_address" "default" {
  name         = "psc-compute-address"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = "default"     # Replace value with the name of the subnet here.
  address      = "10.128.0.42" # Replace value with the IP address to reserve.
}

data "google_sql_database_instance" "default" {
  name = resource.google_sql_database_instance.default.name
}

resource "google_compute_forwarding_rule" "default" {
  name                  = "psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region                = "us-central1"
  network               = "default"
  ip_address            = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target                = data.google_sql_database_instance.default.psc_service_attachment_link
}

Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.

    Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.

Préparer le répertoire

Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).

  1. Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.

    Copiez l'exemple de code dans le fichier main.tf que vous venez de créer.

    Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
    terraform init

    Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade :

    terraform init -upgrade

Appliquer les modifications

  1. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  2. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

  3. Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.

Créer un point de terminaison Private Service Connect

Vous pouvez réserver une adresse IP interne pour le point de terminaison Private Service Connect et créer un point de terminaison avec cette adresse. Pour créer le point de terminaison, vous avez besoin de l'URI du rattachement de service et des projets autorisés pour l'instance.

gcloud

  1. Pour réserver une adresse IP interne pour le point de terminaison Private Service Connect, utilisez la commande gcloud compute addresses create :

    gcloud compute addresses create ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --subnet=SUBNET_NAME \
    --addresses=INTERNAL_IP_ADDRESS

    Effectuez les remplacements suivants :

    • ADDRESS_NAME : nom de l'adresse IP interne.
    • PROJECT_ID : ID ou numéro de projet du projet Google Cloud pour le point de terminaison.
    • REGION_NAME : nom de la région du point de terminaison.
    • SUBNET_NAME : nom de sous-réseau de l'adresse IP.
    • INTERNAL_IP_ADDRESS : adresse IP à réserver. Cette adresse IP doit être comprise dans la plage d'adresses IP principales du sous-réseau. L'adresse IP peut être une adresse RFC 1918 ou un sous-réseau avec des plages non-RFC.
  2. Pour vérifier que l'adresse IP est réservée, utilisez la commande gcloud compute addresses list :

    gcloud compute addresses list ADDRESS_NAME \
    --project=PROJECT_ID

    Dans la réponse, vérifiez qu'un état RESERVED s'affiche pour l'adresse IP.

  3. Pour créer le point de terminaison Private Service Connect et le faire pointer vers le rattachement de service Cloud SQL, utilisez la commande gcloud compute forwarding-rules create :

    gcloud compute forwarding-rules create ENDPOINT_NAME \
    --address=ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --network=NETWORK_NAME \
    --target-service-attachment=SERVICE_ATTACHMENT_URI

    Effectuez les remplacements suivants :

    • ENDPOINT_NAME : nom du point de terminaison.
    • NETWORK_NAME : nom du réseau VPC utilisé pour le point de terminaison.
    • SERVICE_ATTACHMENT_URI : URI du rattachement de service.
  4. Pour vérifier que le rattachement de service accepte le point de terminaison, utilisez la commande gcloud compute forwarding-rules describe :

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Dans la réponse, vérifiez qu'un état ACCEPTED s'affiche pour le champ pscConnectionStatus. Le point de terminaison peut se connecter au rattachement de service.

Connexion à une instance Cloud SQL

Vous pouvez vous connecter à une instance Cloud SQL avec Private Service Connect activé à l'aide d'une adresse IP interne, d'un enregistrement DNS, du proxy d'authentification Cloud SQL, des connecteurs de langage Cloud SQL ou d'autres applications Google Cloud.

Configurer une zone gérée DNS et un enregistrement DNS

Cloud SQL ne crée pas d'enregistrements DNS automatiquement. À la place, la réponse de l'API de recherche d'instance fournit un nom DNS suggéré. Nous vous recommandons de créer l'enregistrement DNS dans une zone DNS privée du réseau VPC correspondant. Cela permet d'utiliser le proxy d'authentification Cloud SQL de manière cohérente pour se connecter à partir de différents réseaux.

gcloud

  1. Pour afficher des informations récapitulatives sur une instance Cloud SQL, y compris son nom DNS, utilisez la commande gcloud sql instances describe :

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

    Effectuez les remplacements suivants :

    • INSTANCE_NAME : nom de l'instance Cloud SQL.
    • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.

    Dans la réponse, vérifiez que le nom DNS apparaît. Ce nom a le format suivant : INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.. Exemple : 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog..

  2. Pour créer une zone DNS privée, utilisez la commande gcloud dns managed-zones create. Cette zone est associée au réseau VPC utilisé pour se connecter à l'instance Cloud SQL via le point de terminaison Private Service Connect.

    gcloud dns managed-zones create ZONE_NAME \
    --project=PROJECT_ID \
    --description=DESCRIPTION \
    --dns-name=DNS_NAME \
    --networks=NETWORK_NAME \
    --visibility=private

    Effectuez les remplacements suivants :

    • ZONE_NAME : nom de la zone DNS
    • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant la zone.
    • DESCRIPTION : une description de la zone (par exemple, une zone DNS pour l'instance Cloud SQL).
    • DNS_NAME : nom DNS de la zone, tel que REGION_NAME.sql.goog. (où REGION_NAME est le nom de la région de la zone)
    • NETWORK_NAME : nom du réseau VPC.
  3. Après avoir créé le point de terminaison Private Service Connect, utilisez la commande gcloud dns record-sets create pour créer un enregistrement DNS dans la zone :

    gcloud dns record-sets create DNS_NAME \
    --project=PROJECT_ID \
    --type=RRSET_TYPE \
    --rrdatas=RR_DATA \
    --zone=ZONE_NAME

    Effectuez les remplacements suivants :

    • DNS_NAME : le nom DNS que vous avez récupéré précédemment dans cette procédure.
    • RRSET_TYPE : le type d'enregistrement de ressource du jeu d'enregistrements DNS (par exemple, A).
    • RR_DATA : adresse IP allouée au point de terminaison Private Service Connect (par exemple, 198.51.100.5). Vous pouvez également saisir plusieurs valeurs, telles que rrdata1 rrdata2 rrdata3 (par exemple 10.1.2.3 10.2.3.4 10.3.4.5).

Se connecter directement à l'aide d'un enregistrement DNS

Avant de vous connecter à une instance Cloud SQL à l'aide d'un enregistrement DNS, effectuez les actions suivantes :

  1. Créer un point de terminaison Private Service Connect
  2. Vérifiez que le rattachement de service de l'instance accepte le point de terminaison. Pour vérifier que l'état du point de terminaison est ACCEPTED, vérifiez l'état.
  3. Configurer une zone gérée DNS et un enregistrement DNS

Une fois ces conditions remplies, utilisez le nom DNS pour accéder à l'instance à partir de n'importe quel réseau VPC dans lequel vous avez créé le point de terminaison.

gcloud

  1. Pour récupérer l'enregistrement DNS du point de terminaison Private Service Connect, utilisez la commande gcloud compute addresses describe :

    gcloud compute addresses describe DNS_RECORD \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Effectuez les remplacements suivants :

    • DNS_RECORD : l'enregistrement DNS du point de terminaison.
    • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison.
    • REGION_NAME : nom de la région du point de terminaison
  2. Pour vous connecter à l'instance Cloud SQL, utilisez l'enregistrement DNS.

    psql "sslmode=disable dbname=DATABASE_NAME user=USERNAME host=DNS_RECORD"

    Effectuez les remplacements suivants :

    • DATABASE_NAME: nom de la base de données Cloud SQL pour PostgreSQL contenue dans l'instance
    • USERNAME: nom de l'utilisateur qui se connecte à l'instance.
    • DNS_RECORD : l'enregistrement DNS du point de terminaison.

Se connecter directement via une adresse IP interne

Avant de vous connecter à une instance Cloud SQL avec Private Service Connect activé, effectuez les actions suivantes :

  1. Créer un point de terminaison Private Service Connect
  2. Vérifiez que le rattachement de service de l'instance accepte le point de terminaison. Pour vérifier que l'état du point de terminaison est ACCEPTED, vérifiez l'état.

Une fois ces conditions remplies, utilisez l'adresse IP du point de terminaison pour accéder à l'instance à partir de n'importe quel réseau VPC dans lequel vous avez créé le point de terminaison.

gcloud

  1. Pour récupérer l'adresse IP du point de terminaison Private Service Connect, utilisez la commande gcloud compute addresses describe :

    gcloud compute addresses describe ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Effectuez les remplacements suivants :

    • ADDRESS_NAME : nom de l'adresse IP du point de terminaison.
    • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison.
    • REGION_NAME : nom de la région du point de terminaison
  2. Pour vous connecter à l'instance Cloud SQL, utilisez l'adresse IP interne.

    psql "sslmode=disable dbname=DATABASE_NAME user=USERNAME hostaddr=IP_ADDRESS"

    Effectuez les remplacements suivants :

    • DATABASE_NAME: nom de la base de données Cloud SQL pour PostgreSQL contenue dans l'instance
    • USERNAME: nom de l'utilisateur qui se connecte à l'instance.
    • IP_ADDRESS : l'adresse IP du point de terminaison.

Se connecter à l'aide du proxy d'authentification Cloud SQL

Le proxy d'authentification Cloud SQL est un connecteur qui fournit un accès sécurisé à une instance avec Private Service Connect activé sans nécessiter de réseaux autorisés ni de configuration SSL.

Pour autoriser les connexions du client proxy d'authentification Cloud SQL, configurez un enregistrement DNS correspondant au nom DNS recommandé fourni pour l'instance. L'enregistrement DNS est un mappage entre une ressource DNS et un nom de domaine.

Télécharger et installer le proxy d'authentification Cloud SQL

Pour vous connecter à des instances sur lesquelles Private Service Connect est activé, vous devez télécharger et installer le binaire du proxy d'authentification Cloud SQL. Le binaire à télécharger dépend du système d'exploitation et de l'utilisation d'un noyau 32 bits ou 64 bits. Dans la plupart des cas, le matériel récent possède un noyau 64 bits.

Si vous ne savez pas si votre machine exécute un noyau 32 bits ou 64 bits, utilisez la commande uname -a pour Linux ou macOS. Pour Windows, consultez la documentation Windows.

Démarrer le proxy d'authentification Cloud SQL

Le proxy d'authentification Cloud SQL accepte les connexions aux instances pour lesquelles Private Service Connect est activé. Pour en savoir plus, consultez la section Démarrer le proxy d'authentification Cloud SQL.

gcloud

  1. Pour afficher des informations récapitulatives sur une instance Cloud SQL, y compris son nom de connexion, utilisez la commande gcloud sql instances describe. Ce nom de connexion est au format PROJECT_ID:REGION_NAME:INSTANCE_NAME.

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID \
    --format='value(connectionName)'

    Effectuez les remplacements suivants :

    • INSTANCE_NAME : nom de l'instance Cloud SQL.
    • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  2. Copiez le nom de connexion de l'instance.
  3. Lancez le proxy d'authentification Cloud SQL :

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    Remplacez INSTANCE_CONNECTION_NAME par le nom de connexion de l'instance que vous avez copié à l'étape précédente.

Se connecter à l'aide des connecteurs de langage Cloud SQL

Les connecteurs de langage Cloud SQL sont des bibliothèques qui fournissent un accès sécurisé à une instance Cloud SQL avec Private Service Connect activé sans nécessiter de réseaux autorisés ou de configuration SSL.

Pour autoriser les connexions avec les connecteurs de langage Cloud SQL, configurez un enregistrement DNS correspondant au nom DNS recommandé fourni pour l'instance. L'enregistrement DNS est un mappage entre une ressource DNS et un nom de domaine.

Les connecteurs de langage Cloud SQL sont compatibles avec les connexions Private Service Connect via le type d'adresse IP PSC dans leurs bibliothèques respectives.

Se connecter depuis App Engine Standard, Cloud Run ou Cloud Functions

Pour vous connecter à des instances Cloud SQL avec Private Service Connect activé, vous pouvez utiliser App Engine Standard, Cloud Run ou Cloud Functions.

Dans ces environnements sans serveur compatibles, les connecteurs de langage Cloud SQL et les connexions TCP directes via une adresse IP et un numéro de port sont pris en charge. Pour les connexions TCP directes, il s'agit de l'adresse IP que vous réservez lorsque vous créez le point de terminaison Private Service Connect. Vous pouvez spécifier l'adresse IP comme adresse pour l'hôte de base de données.

Si vous créez un enregistrement DNS pour le point de terminaison, vous pouvez spécifier cet enregistrement pour l'hôte.

Se connecter depuis BigQuery

Pour accéder aux données dans Cloud SQL et effectuer des requêtes sur ces données via une connexion IP interne, utilisez le paramètre
--enable-google-private-path. Ce paramètre n'est valide que dans les cas suivants :

  • Vous utilisez le paramètre --no-assign-ip.
  • Vous utilisez le paramètre --network pour spécifier le nom du réseau VPC que vous souhaitez utiliser pour créer une connexion privée.

Tester la connectivité

Pour tester la connectivité entrante vers une instance Cloud SQL avec Private Service Connect activé, définissez l'adresse IP du point de terminaison Private Service Connect comme adresse IP de destination.

gcloud

Pour créer un test de connectivité pour une instance Cloud SQL avec Private Service Connect activé, utilisez la commande gcloud network-management connectivity-tests create :

gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \
--source-instance=SOURCE_INSTANCE \
--destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \
--destination-network=DESTINATION_NETWORK \
--destination-port=DESTINATION_PORT \
--protocol=tcp

Effectuez les remplacements suivants :

  • CONNECTIVITY_TEST_NAME : nom du test de connectivité.
  • SOURCE_INSTANCE: URI de l'instance Compute Engine où se trouve l'adresse IP source (par exemple, projects/myproject/zones/myzone/instances/myinstance).
  • DESTINATION_CLOUD_SQL_INSTANCE: URL de l'instance Cloud SQL (par exemple, projects/myproject/instances/myinstance).
  • DESTINATION_NETWORK : URI du réseau VPC où se trouve l'adresse IP de destination (par exemple, projects/myproject/global/networks/mynetwork).
  • DESTINATION_PORT : numéro de port réservé à l'instance. Pour les instances Cloud SQL pour PostgreSQL, le numéro de port est 5432.

Limites

  • Vous pouvez configurer jusqu'à 20 points de terminaison Private Service Connect qui se connectent au rattachement de service d'une instance Cloud SQL sur laquelle Private Service Connect est activé.
  • Les options suivantes sont invalidées ou affectées :
    • --no-assign-ip: utilise cette option, car les instances Cloud SQL pour lesquelles Private Service Connect est activé ne sont pas compatibles avec les autres types de connectivité tels que les connexions IP externes.
    • --authorized-networks: Vous ne pouvez pas utiliser cette option pour ajouter des réseaux autorisés.
    • --network: Vous ne pouvez pas utiliser cette option, car elle est associée à l'accès aux services privés.
    • --allocated-ip-range-name: Vous ne pouvez pas utiliser cette option, car les noms de plages d'adresses IP autorisés ne sont pas acceptés.
  • Vous ne pouvez pas créer d'instance répliquée externe pour une instance sur laquelle Private Service Connect est activé.
  • Vous ne pouvez pas activer ni désactiver Private Service Connect sur une instance existante.
  • Vous ne pouvez pas configurer une instance pour laquelle Private Service Connect est activé afin d'utiliser l'accès aux services privés ou les connexions IP publiques.
    • Vous ne pouvez pas activer les connexions IP publiques sur une instance sur laquelle Private Service Connect est activé.
    • Vous ne pouvez pas activer l'accès aux services privés ni ajouter des réseaux autorisés à l'instance.
    • Vous ne pouvez pas modifier le type de connectivité de l'instance.
  • Vous ne pouvez pas utiliser la commande gcloud sql connect, Cloud Shell ou Cloud Build pour vous connecter aux instances Cloud SQL sur lesquelles Private Service Connect est activé.
  • Si vous effectuez des migrations homogènes vers Cloud SQL, vous ne pouvez pas utiliser Database Migration Service pour vous connecter aux instances Cloud SQL sur lesquelles Private Service Connect est activé.
  • Lorsque vous testez la connectivité à une instance Cloud SQL avec Private Service Connect activé, vous ne pouvez pas définir les éléments suivants :
    • L'adresse IP privée ou le nom DNS de l'instance comme destination directe
    • L'instance en tant que source
    • L'adresse IP du point de terminaison Private Service Connect en tant que source
  • L'ajout à la liste d'autorisation basé sur l'adresse IP en utilisant des réseaux autorisés n'est pas accepté.
  • Les extensions pglogical, pl/proxy, dblink et postgres_fdw ne sont pas acceptées.
  • Le contrôle, la journalisation et les métriques basés sur l'adresse IP du client ne sont pas compatibles avec les insights sur les requêtes et le système. Toutefois, le VPN et l'interconnexion sont compatibles.
  • Si votre projet réseau contient des instances qui utilisent l'ancienne architecture réseau Cloud SQL, vous ne pouvez pas créer d'instance Private Service Connect. Cloud SQL fournit des outils permettant de mettre à niveau les instances de l'ancienne architecture réseau vers la nouvelle. Pour en savoir plus ou vérifier l'architecture réseau des instances Cloud SQL de votre projet et effectuer les mises à niveau nécessaires, consultez la page Mettre à niveau une instance vers la nouvelle architecture réseau.

Résoudre les problèmes

Cette section contient des informations sur les problèmes associés aux instances Cloud SQL pour lesquelles Private Service Connect est activé, ainsi que la procédure à suivre pour les résoudre.

Problème Dépannage
Le rattachement de service de l'instance n'accepte pas le point de terminaison Private Service Connect.
  1. Pour vérifier l'état du point de terminaison, utilisez la commande gcloud compute forwarding-rules describe.

    
    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    | grep pscConnectionStatus

    Effectuez les remplacements suivants :

    • ENDPOINT_NAME : nom du point de terminaison.
    • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison.
    • REGION_NAME : nom de la région du point de terminaison
  2. Vérifiez que l'état du point de terminaison est ACCEPTED. Si l'état est PENDING, l'instance n'autorise pas le projet Google Cloud contenant le point de terminaison. Assurez-vous que le projet réseau dans lequel le point de terminaison est créé est autorisé. Pour en savoir plus, consultez la page Modifier une instance avec Private Service Connect activé.

Étapes suivantes