Cette page explique comment configurer l'accès aux services privés sur votre réseau VPC.
L'accès aux services privés est mis en œuvre sous la forme d'une connexion d'appairage VPC entre votre réseau VPC et le réseau VPC des services Google sous-jacent, où réside votre instance Cloud SQL. La connexion privée permet aux instances de VM de votre réseau VPC de communiquer avec les services auxquels vous accédez exclusivement à l'aide d'adresses IP internes. Les instances de VM n'ont pas besoin d'accès Internet ni d'adresses IP externes pour accéder aux services disponibles via 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. Pour gérer une connexion d'accès aux services privés, l'utilisateur doit disposer des autorisations IAM suivantes :
compute.networks.list
compute.addresses.create
compute.addresses.list
servicenetworking.services.addPeering
Si vous ne disposez pas de ces autorisations, vous risquez d'obtenir des erreurs de type "autorisations insuffisantes".
Si vous utilisez un réseau VPC partagé, vous devez également :
- Ajouter votre utilisateur au projet hôte.
- Attribuer les quatre mêmes autorisations à cet utilisateur sur le projet hôte.
- Accorder l'autorisation IAM
compute.globalAddresses.list
à l'utilisateur.
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élection d'une plage d'adresses IP existante ou attribution d'une nouvelle plage.
Vous pouvez également autoriser Google à allouer la plage automatiquement. Dans ce cas, Google alloue automatiquement une plage d'adresses IP avec une longueur de préfixe de /20 et utilise le nom default-ip-range.
Si vous souhaitez créer des instances 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 /24 pour 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 libre de taille /24.
- Création d'une connexion privée entre votre réseau VPC et le réseau du producteur de services.
Allouer une plage d'adresses IP
Console
-
Dans Google Cloud Console, 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 . - Cliquez sur
Allouer une plage d'adresses IP . - Dans le champ
Nom de la plage allouée, spécifiezgoogle-managed-services-VPC_NETWORK_NAME
, oùVPC_NETWORK_NAME
est le nom du réseau VPC que vous connectez (par exemple,google-managed-services-default
). Le champDescription 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
addresses
etprefix-length
. Par exemple, pour allouer le bloc CIDR192.168.0.0/16
, spécifiez192.168.0.0
pour l'adresse et16
pour 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 Cloud sé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 de16
bits.
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.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.
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 Google Cloud Console, 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 privée.
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
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 Google Cloud Console, 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 Google Cloud Console.
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 Google Cloud Console, 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