Ce document explique comment configurer des connexions IP privées à votre instance Cloud SQL à l'aide de l'accès aux services privés.
Avant de commencer
Cloud SQL requiert l'accès aux services privés pour chaque réseau VPC utilisé pour les connexions IP privées.
Activer les API requises
Activez l'API Service Networking (servicenetworking.googleapis.com) et l'API Compute Engine (compute.googleapis.com) dans le projet qui héberge votre instance Cloud SQL.
Si vous utilisez un réseau VPC partagé, vous devez également activer ces API dans le projet hôte de VPC partagé.
Vous pouvez activer les API à l'aide de la commande suivante :
gcloud services enable servicenetworking.googleapis.com compute.googleapis.com --project=PROJECT_ID
Remplacez PROJECT_ID par l'ID de votre projet (ou l'ID du projet hôte de VPC partagé).
Si l'API Service Networking n'est pas activée, lorsque vous créez l'instance Cloud SQL avec une adresse IP privée, l'opération échoue avec une erreur SERVICE_NETWORKING_NOT_ENABLED.
Rôles et autorisations nécessaires
Pour obtenir les autorisations nécessaires pour créer et gérer une connexion d'accès aux services privés, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de réseaux Compute (roles/compute.networkAdmin) sur le projet qui héberge votre instance Cloud SQL.
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour créer et gérer une connexion d'accès privé aux services. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Vous devez disposer des autorisations suivantes pour créer et gérer une connexion d'accès aux services privés :
-
compute.addresses.create -
compute.addresses.list -
compute.globalAddresses.create -
compute.globalAddresses.createInternal -
compute.globalAddresses.list -
compute.networks.list -
compute.networks.use -
servicenetworking.services.addPeering -
serviceusage.services.list
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Si vous utilisez un réseau VPC partagé, vous devez également attribuer le rôle d'administrateur de réseau Compute (roles/compute.networkAdmin) à l'utilisateur dans le projet hôte de VPC partagé.
Configurer l'accès aux services privés pour Cloud SQL
Le processus de configuration de l'accès aux services privés s'effectue en deux étapes :
Sélectionnez une plage d'adresses IP existante ou attribuez-en une nouvelle.
Si vous créez votre instance Cloud SQL dans la console Google Cloud , vous pouvez également laisser Google allouer une plage d'adresses IP pour vous. Dans ce cas, Google alloue automatiquement une plage d'adresses IP avec une longueur de préfixe de
/24et utilise le nom default-ip-range.Si vous prévoyez de créer des instances Cloud SQL dans plusieurs régions ou pour différents types de bases de données, vous devez disposer d'une plage d'adresses IP d'au moins
/24pour chaque région ou type de base de données. Cela inclut d'autres applications telles que Filestore ou Memorystore. Pour une nouvelle région ou un nouveau type de base de données, Cloud SQL doit disposer d'une plage/24libre.- Créez la connexion Private Service Connect entre votre réseau VPC et le réseau du producteur de services sous-jacent.
Pour en savoir plus sur les exigences liées à l'environnement réseau et d'application, ainsi que sur les autorisations IAM nécessaires pour l'accès aux services privés, consultez Exigences pour les connexions IP privées.
Allouer une plage d'adresses IP
Console
-
Dans la console Google Cloud , accédez à la page Réseaux VPC.
- Sélectionnez le réseau VPC que vous souhaitez utiliser.
- Sélectionnez l'onglet Accès aux services privés.
- Sélectionnez l'onglet Plages d'adresses IP allouées pour les services.
- Cliquez sur Allouer une plage d'adresses IP.
- Dans le champ Nom de la plage allouée, spécifiez
google-managed-services-VPC_NETWORK_NAME, oùVPC_NETWORK_NAMEest le nom du réseau VPC que vous connectez (par exemple,google-managed-services-default). Le champ Description est facultatif. - Sélectionnez l'option Personnalisée, puis saisissez la plage d'adresses IP à allouer au format CIDR.
- Cliquez sur Allouer pour créer la plage allouée.
gcloud
Effectuez l'une des opérations suivantes :
- Pour spécifier une plage d'adresses et une longueur de préfixe (masque de sous-réseau), utilisez les options
addressesetprefix-length. Par exemple, pour allouer le bloc CIDR192.168.0.0/16, spécifiez192.168.0.0pour l'adresse et16pour la longueur du préfixe. - Pour spécifier uniquement une longueur de préfixe (masque de sous-réseau), utilisez l'option
prefix-length. Si vous ne spécifiez pas de plage d'adresses, Google Cloudsélectionne automatiquement une plage d'adresses non utilisée sur votre réseau VPC. L'exemple suivant choisit une plage d'adresses IP non utilisée avec une longueur de préfixe de16bits.
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --addresses=192.168.0.0 \ --prefix-length=16 \ --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
Remplacez VPC_NETWORK_NAME par le nom de votre réseau VPC, tel que my-vpc-network.
L'exemple suivant alloue une plage d'adresses IP permettant aux ressources du réseau VPC my-vpc-network de se connecter à des instances Cloud SQL à l'aide d'une adresse IP privée.
gcloud compute addresses create google-managed-services-my-vpc-network \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/myprojectid/global/networks/myvpcnetwork \ --project=my-project
Terraform
Pour allouer une plage d'adresses IP, utilisez une ressource Terraform.
Appliquer les modifications
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.tfque 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
yeslorsque 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.
Supprimer les modifications
Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant yes à l'invite :
terraform destroy
Créer une connexion privée
Console
-
Dans la console Google Cloud , accédez à la page Réseaux VPC.
- Sélectionnez le réseau VPC que vous souhaitez utiliser.
- Sélectionnez l'onglet Connexion au service privé.
- Sélectionnez l'onglet Connexions privées aux services.
- Cliquez sur Créer une connexion pour créer une connexion privée entre votre réseau et un producteur de services.
- Pour l'allocation attribuée, sélectionnez une ou plusieurs plages attribuées existantes qui ne sont pas utilisées par d'autres producteurs de services.
- Cliquez sur Connecter pour créer la connexion.
gcloud
Créez une connexion d'accès aux services privés pour le réseau VPC de votre projet.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-VPC_NETWORK_NAME \ --network=VPC_NETWORK_NAME \ --project=PROJECT_ID
La commande lance une opération d'instance Cloud SQL de longue durée et renvoie un ID d'opération.
Vérifiez si l'opération a réussi.
gcloud services vpc-peerings operations describe \ --name=OPERATION_ID
Vous pouvez spécifier plusieurs plages allouées lorsque vous créez une connexion privée. Par exemple, si une plage est épuisée, vous pouvez affecter d'autres plages allouées. Le service utilise les adresses IP de toutes les plages fournies dans l'ordre que vous avez spécifié.
Terraform
Pour créer une connexion privée, utilisez une ressource Terraform.
Le rôle servicenetworking.serviceAgent est attribué à un compte de service au format service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com lors de la création de la connexion privée, car le compte est soumis à un provisionnement JIT (Just-in-Time).
Si vous rencontrez une erreur concernant l'autorisation compute.globalAddresses.list ou compute.projects.get pour le projet, exécutez cette commande gcloud :
gcloud projects add-iam-policy-binding HOST_PROJECT_NAME \ --member=serviceAccount:service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com \ --role=roles/servicenetworking.serviceAgent
Configurer une instance pour qu'elle utilise une adresse IP privée à l'aide de l'accès aux services privés
Vous pouvez configurer l'accès aux services privés pour les nouvelles instances et les instances existantes.
Configurer une adresse IP privée pour une nouvelle instance
Console
-
Dans la console Google Cloud , accédez à la page Instances Cloud SQL.
- Cliquez sur Créer une instance.
- Dans la section Personnaliser votre instance, développez Afficher les options de configuration.
- Développez Connexions.
- Sélectionnez Adresse IP privée.
- Sélectionnez Accès aux services privés.
Une liste déroulante affiche les réseaux VPC disponibles dans votre projet. Si votre projet est le projet de service d'un VPC partagé, les réseaux VPC du projet hôte y apparaissent également.
- Sélectionnez le réseau VPC que vous souhaitez utiliser :
- Cliquez sur Configurer la connexion.
- Dans la section Allouer une plage d'adresses IP, sélectionnez l'une des options suivantes :
- Sélectionnez une ou plusieurs plages d'adresses IP existantes, ou créez-en une dans le menu déroulant. Le cas échéant, le menu déroulant inclut les plages déjà allouées. Vous pouvez aussi sélectionner Allouer une nouvelle plage d'adresses IP et saisir une nouvelle plage et un nouveau nom.
- Utilisez une plage d'adresses IP allouée automatiquement dans votre réseau.
- Cliquez sur Continuer.
- Cliquez sur Create connection (Créer une connexion).
- Vérifiez que le message suivant s'affiche :
Private service connection for network VPC_NETWORK_NAME has been successfully created. - Vous pouvez éventuellement spécifier une plage d'adresses IP allouée que vos instances utiliseront pour les connexions.
- Développez l'option Afficher la plage d'adresses IP allouée.
- Sélectionnez une plage d'adresses IP dans le menu déroulant.
- Facultatif. Si vous souhaitez autoriser d'autres services Google Cloud , tels que BigQuery, à accéder aux données dans Cloud SQL et à effectuer des requêtes sur ces données via une connexion IP privée, sélectionnez Activer le chemin d'accès privé.
- Terminez la configuration de votre instance.
- Cliquez sur Create instance (Créer une instance).
Si un message s'affiche pour vous indiquer que vous devez configurer une connexion de service privée, procédez comme suit :
gcloud
Avant de créer une instance à l'aide d'une adresse IP privée, assurez-vous que votre projet est configuré pour l'accès privé aux services.
Exécutez les commandes gcloud CLI suivantes pour configurer la mise en réseau de l'accès aux services privés pour Cloud SQL :
- Activez les API requises :
gcloud services enable \ sqladmin.googleapis.com \ compute.googleapis.com \ servicenetworking.googleapis.com \ --project=PROJECT_ID
- Attribuez une plage d'adresses IP pour l'appairage de réseaux VPC :
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --project=PROJECT_ID
- Établissez la connexion d'appairage de réseaux VPC :
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-VPC_NETWORK_NAME \ --network=VPC_NETWORK_NAME \ --project=PROJECT_ID
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
INSTANCE_ID: ID de l'instance.PROJECT_ID: ID du projet.NETWORK_PROJECT_ID: ID de projet du réseau VPC.VPC_NETWORK_NAME: nom du réseau VPC.RANGE_NAME: facultatif. Si spécifié, définit un nom de plage pour lequel une plage d'adresses IP est allouée. Le nom de la plage doit respecter la normeRFC-1035et contenir entre 1 et 63 caractères.REGION_NAME: nom de la région.
--network. Pour désactiver l'adresse IP publique, utilisez l'option --no-assign-ip.
Vous pouvez également utiliser le paramètre --enable-google-private-path pour autoriser d'autres services Google Cloud , tels que BigQuery, à accéder aux données dans Cloud SQL et à effectuer des requêtes sur ces données via une connexion IP privée. Ce paramètre n'est valide que dans les cas suivants :
- Vous utilisez le paramètre
--no-assign-ip. - Vous utilisez le paramètre
--networkpour spécifier le nom du réseau VPC que vous souhaitez utiliser pour créer une connexion privée.
--enforce-new-sql-network-architecture. Assurez-vous d'avoir alloué suffisamment d'adresses IP. Lorsque vous utilisez l'application de la nouvelle architecture réseau avant qu'un projet ne soit entièrement mis à niveau, la création d'instance peut échouer si l'espace d'adressage IP disponible est insuffisant.
Pour en savoir plus, consultez Mettre à niveau une instance vers la nouvelle architecture réseau et Allouer une plage d'adresses IP.
gcloud beta sql instances create INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip \ --allocated-ip-range-name=RANGE_NAME \ --enable-google-private-path \ --enforce-new-sql-network-architecture
Terraform
Pour configurer une adresse IP privée pour une nouvelle instance, utilisez les ressources Terraform suivantes :
google_compute_networkgoogle_compute_global_addressgoogle_service_networking_connectiongoogle_sql_database_instance
Appliquer les modifications
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.tfque 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
yeslorsque 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.
Supprimer les modifications
Pour supprimer vos modifications, procédez comme suit :
- Pour désactiver la protection contre la suppression, définissez l'argument
deletion_protectionsurfalsedans le fichier de configuration Terraform.deletion_protection = "false"
- Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant
yeslorsque vous y êtes invité :terraform apply
-
Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant
yesà la requête :terraform destroy
REST v1
Créez une instance avec une adresse IP privée :
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID: ID du projet.
- INSTANCE_ID: ID de l'instance.
- VPC_NETWORK_NAME: spécifiez le nom du réseau cloud privé virtuel (VPC) que vous souhaitez utiliser pour cette instance. L'accès aux services privés doit déjà être configuré pour le réseau.
- RANGE_NAME: Facultatif. Si spécifié, définit un nom de plage pour lequel une plage d'adresses IP est allouée. Le nom de la plage doit respecter la norme
RFC-1035et contenir entre 1 et 63 caractères. - AUTHORIZED_NETWORKS: pour les connexions IP publiques, spécifiez les connexions à partir de réseaux autorisés pouvant vous connecter à l'instance.
Pour le paramètre ipv4Enabled, définissez la valeur sur true si vous utilisez une adresse IP publique pour votre instance ou sur false si votre instance possède une adresse IP privée.
Si vous définissez le paramètre enablePrivatePathForGoogleCloudServices sur true, vous autorisez d'autres services Google Cloud , tels que BigQuery, à accéder aux données dans Cloud SQL et à interroger ces données via une connexion IP privée. Si vous définissez ce paramètre sur false, les autres services Google Cloud ne peuvent pas accéder aux données dans Cloud SQL via une connexion IP privée.
Vous pouvez utiliser le champ sqlNetworkArchitecture pour forcer l'utilisation de la nouvelle architecture réseau pour l'instance lors de sa création, même si le projet n'est pas entièrement migré.
Pour en savoir plus sur la nouvelle architecture réseau et ses implications, consultez
Mettre à niveau une instance vers la nouvelle architecture réseau et Allouer une plage d'adresses IP.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corps JSON de la requête :
{
"name": "INSTANCE_ID",
"region": "region",
"databaseVersion": "database-version",
"settings": {
"tier": "machine-type",
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
REST v1beta4
Créez une instance avec une adresse IP privée :
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID: ID du projet.
- INSTANCE_ID: ID de l'instance.
- VPC_NETWORK_NAME: spécifiez le nom du réseau cloud privé virtuel (VPC) que vous souhaitez utiliser pour cette instance. L'accès aux services privés doit déjà être configuré pour le réseau.
- RANGE_NAME: Facultatif. Si spécifié, définit un nom de plage pour lequel une plage d'adresses IP est allouée. Le nom de la plage doit respecter la norme
RFC-1035et contenir entre 1 et 63 caractères. - AUTHORIZED_NETWORKS: pour les connexions IP publiques, spécifiez les connexions à partir de réseaux autorisés pouvant vous connecter à l'instance.
Pour le paramètre ipv4Enabled, définissez la valeur sur true si vous utilisez une adresse IP publique pour votre instance ou sur false si votre instance possède une adresse IP privée.
Si vous définissez le paramètre enablePrivatePathForGoogleCloudServices sur true, vous autorisez d'autres services Google Cloud , tels que BigQuery, à accéder aux données dans Cloud SQL et à interroger ces données via une connexion IP privée. Si vous définissez ce paramètre sur false, les autres services Google Cloud ne peuvent pas accéder aux données dans Cloud SQL via une connexion IP privée.
Vous pouvez utiliser le champ sqlNetworkArchitecture pour appliquer l'utilisation de la nouvelle architecture réseau pour l'instance lors de sa création, même si le projet n'est pas entièrement mis à niveau.
Pour en savoir plus sur la nouvelle architecture réseau et ses implications, consultez
Mettre à niveau une instance vers la nouvelle architecture réseau et Allouer une plage d'adresses IP.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
Corps JSON de la requête :
{
"name": "INSTANCE_ID",
"region": "region",
"databaseVersion": "database-version",
"settings": {
"tier": "machine-type",
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Configurer une adresse IP privée pour une instance existante
Lorsque vous configurez une instance Cloud SQL existante pour qu'elle utilise une adresse IP privée, celle-ci redémarre, ce qui entraîne un temps d'arrêt.
Pour configurer une instance existante afin qu'elle utilise une adresse IP privée, procédez comme suit :
Console
-
Dans la console Google Cloud , accédez à la page Instances Cloud SQL.
- Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
- Dans le menu de navigation Cloud SQL, sélectionnez Connexions.
- Dans l'onglet Réseau, cochez la case Adresse IP privée.
Une liste déroulante affiche les réseaux disponibles dans votre projet.
- Sélectionnez le réseau VPC que vous souhaitez utiliser :
- Cliquez sur Configurer la connexion.
- Dans la section Allouer une plage d'adresses IP, sélectionnez l'une des options suivantes :
- Sélectionnez une ou plusieurs plages d'adresses IP existantes, ou créez-en une depuis le menu déroulant. Le cas échéant, le menu déroulant inclut les plages déjà allouées. Vous pouvez aussi sélectionner Allouer une nouvelle plage d'adresses IP et saisir une nouvelle plage et un nouveau nom.
- Utilisez une plage d'adresses IP allouée automatiquement dans votre réseau.
- Cliquez sur Continuer.
- Cliquez sur Create connection (Créer une connexion).
- Vérifiez que vous observez bien l'état La connexion de service privée pour le réseau
VPC_NETWORK_NAMEa bien été créée. - Facultatif. Si vous souhaitez autoriser d'autres services Google Cloud , tels que BigQuery, à accéder aux données dans Cloud SQL et à effectuer des requêtes sur ces données via une connexion IP privée, cochez la case Activer le chemin d'accès privé.
- Cliquez sur Enregistrer.
Si vous voyez apparaître Connexion de service privée requise :
gcloud
Assurez-vous que votre projet est configuré pour l' accès privé aux services.
Mettez à jour votre instance Cloud SQL en utilisant le paramètre --network pour spécifier le nom du réseau VPC sélectionné.
Pour appliquer l'utilisation de la nouvelle architecture réseau pour l'instance lorsque vous ajoutez une configuration de réseau IP privé, utilisez l'option --enforce-new-sql-network-architecture.
Assurez-vous d'avoir alloué suffisamment d'espace d'adresses IP dans votre plage d'adresses IP.
Si vous appliquez la nouvelle architecture réseau avant qu'un projet ne soit entièrement mis à niveau, vous risquez de rencontrer des échecs de création d'instances si l'espace d'adresses IP disponible n'est pas suffisant.
Pour en savoir plus, consultez Mettre à niveau une instance vers la nouvelle architecture réseau et Allouer une plage d'adresses IP.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip \ --enable-google-private-path \ --enforce-new-sql-network-architecture
REST v1
Créez une instance avec une adresse IP privée :
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID: ID du projet.
- INSTANCE_ID: ID de l'instance.
- VPC_NETWORK_NAME: spécifiez le nom du réseau cloud privé virtuel (VPC) que vous souhaitez utiliser pour cette instance. L'accès aux services privés doit déjà être configuré pour le réseau.
- RANGE_NAME: Facultatif. Si spécifié, définit un nom de plage pour lequel une plage d'adresses IP est allouée. Le nom de la plage doit respecter la norme
RFC-1035et contenir entre 1 et 63 caractères. - AUTHORIZED_NETWORKS: pour les connexions IP publiques, spécifiez les connexions à partir de réseaux autorisés pouvant vous connecter à l'instance.
Pour le paramètre ipv4Enabled, définissez la valeur sur true si vous utilisez une adresse IP publique pour votre instance ou sur false si votre instance possède une adresse IP privée.
Si vous définissez le paramètre enablePrivatePathForGoogleCloudServices sur true, vous autorisez d'autres services Google Cloud , tels que BigQuery, à accéder aux données dans Cloud SQL et à interroger ces données via une connexion IP privée. Si vous définissez ce paramètre sur false, les autres services Google Cloud ne peuvent pas accéder aux données dans Cloud SQL via une connexion IP privée.
Vous pouvez utiliser le champ sqlNetworkArchitecture pour appliquer l'utilisation de la nouvelle architecture réseau pour l'instance lors de sa création, même si le projet n'est pas entièrement mis à niveau.
Pour en savoir plus sur la nouvelle architecture réseau et ses implications, consultez
Mettre à niveau une instance vers la nouvelle architecture réseau et Allouer une plage d'adresses IP.
Méthode HTTP et URL :
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Corps JSON de la requête :
{
"settings":
{
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
REST v1beta4
Créez une instance avec une adresse IP privée :
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID: ID du projet.
- INSTANCE_ID: ID de l'instance.
- VPC_NETWORK_NAME: spécifiez le nom du réseau cloud privé virtuel (VPC) que vous souhaitez utiliser pour cette instance. L'accès aux services privés doit déjà être configuré pour le réseau.
- RANGE_NAME: Facultatif. Si spécifié, définit un nom de plage pour lequel une plage d'adresses IP est allouée. Le nom de la plage doit respecter la norme
RFC-1035et contenir entre 1 et 63 caractères. - AUTHORIZED_NETWORKS : pour les connexions IP publiques, spécifiez les connexions à partir de réseaux autorisés pouvant vous connecter à l'instance.
Pour le paramètre ipv4Enabled, définissez la valeur sur true si vous utilisez une adresse IP publique pour votre instance ou sur false si votre instance possède une adresse IP privée.
Si vous définissez le paramètre enablePrivatePathForGoogleCloudServices sur true, vous autorisez d'autres services Google Cloud , tels que BigQuery, à accéder aux données dans Cloud SQL et à interroger ces données via une connexion IP privée. Si vous définissez ce paramètre sur false, les autres services Google Cloud ne peuvent pas accéder aux données dans Cloud SQL via une connexion IP privée.
Vous pouvez utiliser le champ sqlNetworkArchitecture pour appliquer l'utilisation de la nouvelle architecture réseau pour l'instance lors de sa création, même si le projet n'est pas entièrement mis à niveau.
Pour en savoir plus sur la nouvelle architecture réseau et ses implications, consultez
Mettre à niveau une instance vers la nouvelle architecture réseau et Allouer une plage d'adresses IP.
Méthode HTTP et URL :
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Corps JSON de la requête :
{
"settings":
{
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Modifier la configuration d'accès au service privé
Vous pouvez modifier la plage d'adresses allouée d'une connexion de service privé sans modifier les instances Cloud SQL existantes. Pour modifier l'adresse IP privée d'une instance Cloud SQL existante, suivez ces étapes.
Pour modifier la plage d'adresses allouée, procédez comme suit :
Console
-
Dans la console Google Cloud , accédez à la page Réseaux VPC.
- Sélectionnez le réseau VPC que vous souhaitez utiliser.
- Sélectionnez l'onglet Connexion au service privé.
- Sélectionnez l'onglet Plages d'adresses IP allouées pour les services.
Sélectionnez le nom de la plage que vous souhaitez supprimer.
Cliquez sur Libérer.
Cliquez sur Allouer une plage d'adresses IP.
Créez une plage utilisant le même nom avec la nouvelle plage.
Le nom est important, car la connexion privée a déjà été établie avec ce nom d'adresse.
gcloud services vpc-peerings update \ --network=VPC_NETWORK_NAME \ --ranges=ALLOCATED_RANGES \ --service=servicenetworking.googleapis.com \ --force
Modifier l'adresse IP privée d'une instance Cloud SQL existante
Pour modifier l'adresse IP privée d'une instance Cloud SQL existante, déplacez l'instance de son réseau d'origine vers un réseau VPC temporaire. Ensuite, modifiez la configuration d'accès aux services privés du réseau d'origine de l'instance et replacez l'instance Cloud SQL dans son réseau d'origine.
Pour déplacer l'instance dans un autre réseau VPC, suivez toute la procédure suivante, à l'exception de la dernière étape (replacer l'instance dans son réseau d'origine). Dans ce cas, TEMPORARY_VPC_NETWORK_NAME correspond au nouveau réseau VPC. Supprimez également l'ancienne connexion privée.
Il peut s'écouler quelques jours avant que la connexion privée supprimée ne s'affiche plus dans la consoleGoogle Cloud .
Si l'instance Cloud SQL est hébergée dans un réseau VPC partagé, les variables VPC_NETWORK_NAME utilisées dans les instructions suivantes doivent correspondre aux noms de réseau VPC du projet hôte. Pour spécifier un réseau avec un réseau VPC partagé, utilisez l'URL complète du réseau, par exemple, projects/HOST_PROJECT/global/networks/NETWORK_NAME.
Console
-
Dans la console Google Cloud , accédez à la page Réseaux VPC.
- Créez un réseau VPC temporaire.
- Créez une allocation d'adresses IP dans le réseau VPC temporaire.
- Créez une connexion privée dans le réseau VPC temporaire.
Déplacez l'instance Cloud SQL vers le réseau VPC temporaire.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/TEMPORARY_VPC_NETWORK_NAME \ --no-assign-ip
Modifiez la configuration d'accès aux services privés dans le réseau d'origine pour ajouter une plage allouée ou supprimer des plages existantes.
Replacez l'instance Cloud SQL dans le réseau VPC d'origine.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/ORIGINAL_VPC_NETWORK_NAME \ --no-assign-ip
Se connecter à une instance à l'aide de son adresse IP privée
L'accès aux services privés vous permet de vous connecter à des instances Cloud SQL à partir d'instances Compute Engine ou Google Kubernetes Engine dans le même réseau VPC (définies ici comme des sources internes) ou externes à ce réseau (sources externes).
Se connecter depuis une source interne
Pour vous connecter à partir d'une source appartenant au même projet Google Cloud que votre instance Cloud SQL, par exemple le proxy d'authentification Cloud SQL exécuté sur une ressource Compute Engine, cette ressource doit se trouver dans le même réseau VPC où l'accès aux services privés a été établi pour l'instance Cloud SQL.
Pour vous connecter à partir d'une source sans serveur, telle que l'environnement standard App Engine, Cloud Run ou les fonctions Cloud Run, votre application ou fonction se connecte directement à votre instance via l'accès au VPC sans serveur, sans proxy d'authentification Cloud SQL.
Se connecter depuis une source externe
Si un réseau externe (par exemple, un réseau sur site ou un réseau VPC) est connecté au réseau VPC auquel votre instance Cloud SQL est connectée, vous pouvez utiliser Cloud VPN ou Cloud Interconnect pour vous connecter à l'instance depuis un client du réseau externe.
Pour autoriser les connexions à partir d'un réseau externe, procédez comme suit :
- Vérifiez que le réseau VPC est connecté au réseau externe à l'aide d'un tunnel Cloud VPN ou d'un rattachement de VLAN pour une interconnexion dédiée ou une interconnexion partenaire.
-
Assurez-vous que les sessions BGP (Border Gateway Protocol) sur les routeurs Cloud Router gérant vos tunnels Cloud VPN et vos rattachements d'interconnexion Cloud Interconnect (VLAN) ont reçu des préfixes (destinations) spécifiques provenant de votre réseau sur site.
Les routes par défaut (destination 0.0.0.0/0) ne peuvent pas être importées dans le réseau VPC Cloud SQL, car celui-ci possède sa propre route locale par défaut. Les routes locales d'une destination sont utilisées, même si l'appairage Cloud SQL est configuré pour importer des routes personnalisées à partir de votre réseau VPC.
- Identifiez l'appairage généré par la connexion aux services privés. Selon le service, la connexion Private Service Connect peut créer une ou plusieurs des connexions d'appairage suivantes, mais pas nécessairement toutes :
cloudsql-mysql-googleapis-comcloudsql-postgres-googleapis-comservicenetworking-googleapis-com
- Modifiez toutes les connexions d'appairage pour activer l'exportation des routes personnalisées.
- Identifiez la plage allouée utilisée par la connexion aux services privés.
- Configurez le mode d'annonce personnalisé Cloud Router pour la plage allouée sur les routeurs Cloud Router gérant les sessions BGP de vos tunnels Cloud VPN ou de vos rattachements Cloud Interconnect (VLAN).
Se connecter à partir de Cloud Shell
Cloud Shell utilise une machine virtuelle Compute Engine gérée par Google Cloud et située en dehors de votre réseau VPC. Par conséquent, il n'existe pas de chemin de connectivité entre Cloud Shell et l'espace d'adresses IP privées de votre réseau VPC.
Par conséquent, Cloud Shell n'est pas compatible avec la connexion à une instance Cloud SQL ne disposant que d'une adresse IP privée.
Pour vous connecter à des instances Cloud SQL à partir d'un réseau externe à l'aide d'une connectivité IP privée, consultez Se connecter à une instance Cloud SQL depuis l'extérieur de son VPC.
Se connecter à partir d'adresses IP non-RFC 1918
La RFC 1918 spécifie les adresses IP affectées à une utilisation en interne (c'est-à-dire au sein d'une organisation) et qui ne s'acheminent pas sur Internet. En particulier, il peut s'agir des éléments suivants :
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
Les connexions à une instance Cloud SQL à l'aide d'une adresse IP privée sont automatiquement autorisées pour les plages d'adresses RFC 1918. De cette façon, tous les clients privés peuvent accéder à la base de données sans passer par le proxy.
Pour vous connecter à partir d'une adresse IP non-RFC 1918, vous devez définir une autorisation IP par instance, afin d'autoriser le trafic provenant de plages d'adresses IP non-RFC 1918.
Par exemple, exécutez une commande gcloud comme suit :
gcloud sql instances patch INSTANCE_NAME \ --authorized-networks=192.88.99.0/24,11.0.0.0/24
Par défaut, Cloud SQL n'apprend pas les routes de sous-réseau non-RFC 1918 à partir de votre réseau VPC. Vous devez mettre à jour l'appairage de réseaux vers Cloud SQL pour exporter les routes non-RFC 1918.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
PEERING_CONNECTIONcorrespond au nom de la connexion d'appairage produite par la connexion Private Service Connect entre votre réseau VPC et le réseau du producteur de services.VPC_NETWORK_NAMEest le nom du réseau VPC.PROJECT_IDest l'ID du projet du réseau VPC. Si vous utilisez un VPC partagé, utilisez l'ID du projet hôte.
Remplacez les éléments suivants :
Pour prévenir le phénomène d'épuisement des adresses IP, vous pouvez exploiter des adresses IP publiques utilisées en mode privé.
Se connecter à partir d'adresses IP publiques utilisées en mode privé
Si vous souhaitez configurer votre instance dans une plage d'adresses IP publiques utilisées en mode privé, activez export-subnet-routes-with-public-ip sur l'appairage de réseaux entre votre réseau et le réseau Cloud SQL.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
PEERING_CONNECTIONcorrespond au nom de la connexion d'appairage produite par la connexion aux services privés entre votre réseau VPC et le réseau du producteur de services. Pour connaître le nom de la connexion d'appairage, accédez à la page Appairage de réseaux VPC.VPC_NETWORK_NAMEest le nom du réseau VPC.PROJECT_IDest l'ID du projet du réseau VPC. Si vous utilisez un VPC partagé, utilisez l'ID du projet hôte.
Remplacez les éléments suivants :
Se connecter à une instance configurée avec des adresses IP publiques utilisées en mode privé
Si votre instance est configurée dans une plage d'adresses IP publiques utilisées en mode privé et que vous souhaitez vous y connecter, activez import-subnet-routes-with-public-ip sur l'appairage de réseaux entre votre réseau et le réseau Cloud SQL.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --import-subnet-routes-with-public-ip \ --project=PROJECT_ID
Remplacez les éléments suivants :
PEERING_CONNECTIONcorrespond au nom de la connexion d'appairage produite par la connexion aux services privés entre votre réseau VPC et le réseau du producteur de services. Pour trouver le nom de la connexion d'appairage, accédez à la page Appairage de réseaux VPC.VPC_NETWORK_NAMEest le nom du réseau VPC.PROJECT_IDest l'ID du projet du réseau VPC. Utilisez l'ID du projet hôte si vous utilisez un VPC partagé.
Se connecter à l'aide d'un point de terminaison d'écriture
En plus d'une adresse IP privée, vous pouvez utiliser un point de terminaison d'écriture dans une chaîne de connexion SQL. Un point de terminaison d'écriture est un nom de service de nom de domaine (DNS) global qui pointe automatiquement vers l'adresse IP de l'instance principale actuelle. En utilisant un point de terminaison d'écriture, vous pouvez éviter d'avoir à modifier la connexion de l'application en cas de défaillance d'une région.
En cas de basculement ou de permutation d'un réplica, le point de terminaison d'écriture peut aider à gérer les adresses IP privées des instances. Dans ce cas, utilisez le point de terminaison d'écriture pour vous connecter à l'instance qui fait office d'instance principale.
Comment Cloud SQL crée un point de terminaison d'écriture
Si vous activez l'API Cloud DNS pour votre projet Google Cloud , puis que vous créez une instance principale Cloud SQL Enterprise Plus, promouvez l'instance répliquée pour l'instance ou mettez à niveau l'instance à partir de l'édition Cloud SQL Enterprise, Cloud SQL génère automatiquement un point de terminaison d'écriture et l'attribue à l'instance.
Si l'instance principale change pendant les processus de commutation ou de basculement, Cloud SQL attribue le point de terminaison d'écriture à l'instance répliquée de basculement, car cette instance répliquée est la nouvelle instance principale.Pour en savoir plus, consultez Afficher le point de terminaison d'écriture.
Attribuer un point de terminaison d'écriture à une instance
Si vous n'activez pas l'API Cloud DNS pour votre projet Google Cloud , puis que vous créez votre instance, en faites la promotion ou la mettez à niveau, Cloud SQL n'attribue pas automatiquement le point de terminaison d'écriture à l'instance.
Pour que Cloud SQL génère un point de terminaison d'écriture et l'attribue à l'instance, consultez Générer le point de terminaison d'écriture.
Résoudre les problèmes
Consultez la page Dépannage pour connaître les problèmes de connectivité connus, ainsi que la section sur le débogage des problèmes de connexion pour obtenir de l'aide sur l'autodiagnostic.