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 \ --database-version=DATABASE_VERSION --cpu=NUMBER_OF_vCPUs \ --memory=MEMORY_SIZE \ --root-password=ROOT_PASSWORD
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.
- DATABASE_VERSION: version de la base de données pour l'instance (par exemple,
SQLSERVER_2019_STANDARD
). - NUMBER_OF_vCPUs: le nombre de cœurs pour l'instance.
- MEMORY_SIZE: quantité de mémoire pour l'instance.
- ROOT_PASSWORD: mot de passe de l'utilisateur Cloud SQL
root
.
Terraform
Pour créer une instance avec Private Service Connect activé, utilisez la ressource google_sql_database_instance
Terraform.
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
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).
-
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 exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
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
-
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.
-
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).
- 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
Avant d'utiliser les données de requête ci-dessous, 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.
- ROOT_PASSWORD: mot de passe de l'utilisateur Cloud SQL
root
. - AVAILABILITY_TYPE : Activer 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 sur laquelle activer Private Service Connect.
- MACHINE_TYPE: valeur de chaîne énumérée représentant le type de machine de l'instance. Par exemple:
db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE
, où NUMBER_OF_vCPUs et MEMORY_SIZE sont le nombre de cœurs et la quantité de mémoire souhaités pour 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": "SQLSERVER_2019_STANDARD", "rootPassword": "ROOT_PASSWORD", "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" }
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
.
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
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).
-
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 exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
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
-
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.
-
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).
- 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
Avant d'utiliser les données de requête ci-dessous, 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
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ ... pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" }
Le champ pscServiceAttachmentLink
affiche l'URI qui pointe vers le rattachement de service de l'instance.
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
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.
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.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 \ --allow-psc-global-access
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.
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 champpscConnectionStatus
. Le point de terminaison peut se connecter au rattachement de service.
Terraform
Pour créer un point de terminaison Private Service Connect, utilisez la ressource google_sql_database_instance
Terraform.
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
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).
-
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 exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
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
-
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.
-
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).
- 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
Réservez une adresse IP interne pour le point de terminaison Private Service Connect.
Vérifiez que l'adresse IP est réservée.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison Private Service Connect
- REGION_NAME : nom de la région
- ADDRESS_NAME : nom de l'adresse IP.
Méthode HTTP et URL :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
Dans la réponse, vérifiez qu'un état
RESERVED
s'affiche pour l'adresse IP.Créez le point de terminaison Private Service Connect et faites-le pointer vers le rattachement de service Cloud SQL.
Vérifiez que le rattachement de service accepte le point de terminaison.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison Private Service Connect
- REGION_NAME : nom de la région
- ENDPOINT_NAME : nom du point de terminaison.
Méthode HTTP et URL :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }
Dans la réponse, vérifiez qu'un état
ACCEPTED
s'affiche pour le champpscConnectionStatus
. 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
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.
.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 du suffixe DNS pour la zone, tel que
REGION_NAME.sql.goog.
(où REGION_NAME correspond au nom de la région pour la zone). - NETWORK_NAME : nom du réseau VPC.
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_RECORD \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Effectuez les remplacements suivants :
- DNS_RECORD : nom de l'enregistrement DNS. Cet enregistrement est défini sur le nom DNS que vous avez récupéré à partir de l'instance Cloud SQL précédemment dans cette procédure (par exemple,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - 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 querrdata1 rrdata2 rrdata3
(par exemple10.1.2.3 10.2.3.4 10.3.4.5
).
- DNS_RECORD : nom de l'enregistrement DNS. Cet enregistrement est défini sur le nom DNS que vous avez récupéré à partir de l'instance Cloud SQL précédemment dans cette procédure (par exemple,
REST
- Procurez-vous le nom DNS d'une instance Cloud SQL.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- INSTANCE_NAME : nom de l'instance
- Créez une zone DNS privée. 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.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant la zone DNS.
- ZONE_NAME : nom de la zone.
- DESCRIPTION : une description de la zone (par exemple, une zone DNS pour l'instance Cloud SQL).
- DNS_NAME : nom du suffixe DNS pour la zone, tel que
REGION_NAME.sql.goog.
(où REGION_NAME correspond au nom de la région pour la zone). - NETWORK_NAME : nom du réseau VPC.
- Après avoir créé le point de terminaison Private Service Connect, créez un enregistrement DNS dans la zone.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant la zone DNS.
- ZONE_NAME : nom de la zone.
- DNS_RECORD : nom de l'enregistrement DNS. Cet enregistrement est défini sur le nom DNS que vous avez récupéré à partir de l'instance Cloud SQL précédemment dans cette procédure (par exemple,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE : type du jeu d'enregistrements (par exemple,
A
). - TTL : valeur TTL (Time To Live) du jeu d'enregistrements exprimée en nombre de secondes (par exemple,
300
). - 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 querrdata1 rrdata2 rrdata3
(par exemple10.1.2.3 10.2.3.4 10.3.4.5
).
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ ... "dnsName": "INSTANCE_ID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog." }
Le champ dnsName
affiche le nom DNS de l'instance Cloud SQL. Les noms DNS se terminent toujours par un point (.
).
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
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", "description": "DESCRIPTION", "dnsName": "DNS_NAME", "visibility": "private", "privateVisibilityConfig": { "kind": "dns#managedZonePrivateVisibilityConfig", "networks": [ { "kind": "dns#managedZonePrivateVisibilityConfigNetwork", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME" } ] } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "ZONE_NAME", "dnsName": "DNS_NAME", "description": "DESCRIPTION", "id": "ID", "nameServers": [ "ns-gcp-private.googledomains.com." ], "creationTime": "2024-05-10T17:05:34.607Z", "visibility": "private", "privateVisibilityConfig": { "networks": [ { "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME", "kind": "dns#managedZonePrivateVisibilityConfigNetwork" } ], "gkeClusters": [], "kind": "dns#managedZonePrivateVisibilityConfig" }, "cloudLoggingConfig": { "kind": "dns#managedZoneCloudLoggingConfig" }, "kind": "dns#managedZone" }
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
Méthode HTTP et URL :
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME
Corps JSON de la requête :
{ "deletions": [] "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ] } ] }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ], "signatureRrdatas": [], "kind": "dns#resourceRecordSet" } ], "deletions": [], "startTime": "2024-05-10T17:29:44.375Z", "id": "CHANGE_ID", "status": "pending", "kind": "dns#change" }
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 :
- Créer un point de terminaison Private Service Connect
- 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. - Configurer une zone gérée DNS et un enregistrement DNS
Une fois ces conditions remplies, utilisez l'enregistrement DNS pour vous connecter à l'instance à partir de n'importe quel réseau VPC dans lequel vous avez créé le point de terminaison.
sqlcmd -S DNS_RECORD -d DATABASE_NAME -U USERNAME
Effectuez les remplacements suivants :
- DNS_RECORD : l'enregistrement DNS du point de terminaison.
- DATABASE_NAME: nom de la base de données Cloud SQL pour SQL Server contenue dans l'instance
- USERNAME: nom de l'utilisateur qui se connecte à l'instance.
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 :
- Créer un point de terminaison Private Service Connect
- 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.
Récupérez l'adresse IP interne du point de terminaison Private Service Connect.
gcloud
Pour récupérer l'adresse IP, 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
Dans la réponse, vérifiez qu'une adresse IP apparaît pour le champ
address
. Il s'agit de l'adresse IP interne.REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- 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
- ADDRESS_NAME : nom de l'adresse IP du point de terminaison.
Méthode HTTP et URL :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
L'adresse IP interne correspond à la valeur associée au champ
address
.-
Pour vous connecter à l'instance Cloud SQL, utilisez l'adresse IP interne.
sqlcmd -S IP_ADDRESS -d DATABASE_NAME -U USERNAME
Effectuez les remplacements suivants :
- IP_ADDRESS : l'adresse IP du point de terminaison.
- DATABASE_NAME: nom de la base de données Cloud SQL pour SQL Server contenue dans l'instance
- USERNAME : nom de l'utilisateur qui se connecte à l'instance.
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.
- Affichez des informations récapitulatives sur une instance Cloud SQL, y compris son nom de connexion.
gcloud
Pour afficher des informations récapitulatives sur une instance Cloud SQL, utilisez la commande
gcloud sql instances describe
.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.
Le nom de la connexion est au format
PROJECT_ID:REGION_NAME:INSTANCE_NAME
.REST
Avant d'utiliser les données de requête ci-dessous, 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
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ ... "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME" }
Le nom de la connexion est au format
PROJECT_ID:REGION_NAME:INSTANCE_NAME
. - Copiez le nom de connexion de l'instance.
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.
- Connecteur Python Cloud SQL
- Connecteur Go Cloud SQL
- Connecteur Java Cloud SQL
- Connecteur Node.js Cloud SQL
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 SQL Server, le numéro de port est
1433
.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- CONNECTIVITY_TEST_NAME : nom du test de connectivité.
- SOURCE_IP_ADDRESS : adresse IP de l'instance Compute Engine source.
- SOURCE_INSTANCE: URI de l'instance Compute Engine où se trouve l'adresse IP source (par exemple,
projects/myproject/zones/myzone/instances/myinstance
). - SOURCE_NETWORK : URI du réseau VPC où se trouve l'adresse IP source (par exemple,
projects/myproject/global/networks/mynetwork
). - DESTINATION_IP_ADDRESS : adresse IP de l'instance Cloud SQL de destination.
- DESTINATION_PORT : numéro de port réservé à l'instance. Pour les instances Cloud SQL pour SQL Server, le numéro de port est
1433
. - DESTINATION_NETWORK : URI du réseau VPC où se trouve l'adresse IP de destination (par exemple,
projects/myproject/global/networks/mynetwork
).
Méthode HTTP et URL :
POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME
Corps JSON de la requête :
{ "source": { "ipAddress": "SOURCE_IP_ADDRESS", "instance": "SOURCE_INSTANCE", "network": "SOURCE_NETWORK" }, "destination": { "ipAddress": "DESTINATION_IP_ADDRESS", "port": DESTINATION_PORT, "network": "DESTINATION_NETWORK", "projectId": "PROJECT_ID" }, "protocol": "TCP" }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_ID/locations/global/operations/operation-OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata", "createTime": "2024-05-23T16:43:49.313981473Z", "target": "projects/PROJECT_ID/locations/global/connectivityTests/CONNECTIVITY_TEST_NAME", "verb": "create", "cancelRequested": false, "apiVersion": "v1" }, "done": false }
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é.
- Vous ne pouvez pas utiliser de backends pour les instances sur lesquelles Private Service Connect est activé.
- Les options suivantes sont invalidées ou affectées :
--no-assign-ip:
utilise cette option, car les instances 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, Cloud Build ou Database Migration Service pour vous connecter à des 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é.
- Pour les instances Cloud SQL sur lesquelles Private Service Connect est activé, le service géré pour Microsoft Active Directory (également appelé Microsoft AD géré) et les serveurs associés ne sont pas pris en charge.
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. - Vérifiez l'état du point de terminaison.
gcloud
Pour vérifier l'état, 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
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant le point de terminaison Private Service Connect
- REGION_NAME : nom de la région
- ENDPOINT_NAME : nom du point de terminaison.
Méthode HTTP et URL :
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }
- Vérifiez que l'état du point de terminaison est
ACCEPTED
. Si l'état estPENDING
, 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
- Apprenez-en plus sur les adresses IP privées.
- Apprenez-en plus sur Private Service Connect.
- Découvrez comment créer une instance répliquée avec accès en lecture pour une instance avec Private Service Connect activé.
- Découvrez comment cloner une instance avec Private Service Connect activé.
- Découvrez comment afficher des informations récapitulatives sur les instances pour lesquelles Private Service Connect est activé.
- Découvrez comment définir et supprimer la haute disponibilité pour une instance sur laquelle Private Service Connect est activé.
- Découvrez comment modifier et supprimer une instance avec Private Service Connect activé.