Configurer une adresse IP privée

Cette page explique comment configurer une instance Cloud SQL afin qu'elle utilise une adresse IP privée.

Pour en savoir plus sur le fonctionnement de la connectivité IP privée ainsi que sur les exigences en termes d'environnement et de gestion, consultez la section Adresse IP privée.

Avant de commencer

Exigences relatives à l'API et à IAM

  • Vous devez activer l'API Service Networking pour votre projet.
  • Si vous utilisez un réseau VPC partagé, vous devez également activer cette API pour le projet hôte.

  • Pour gérer une connexion d'accès aux services privés, l'utilisateur doit disposer des autorisations IAM suivantes. Si vous ne disposez pas des autorisations nécessaires, vous pouvez obtenir des erreurs d'autorisations insuffisantes.
    • compute.networks.list
    • compute.addresses.create
    • compute.addresses.list
    • servicenetworking.services.addPeering

    Si vous utilisez un réseau VPC partagé, vous devez également ajouter votre utilisateur au projet hôte et lui attribuer les mêmes autorisations sur le projet hôte.

Accès aux services privés

Lorsque vous créez un réseau VPC dans votre projet, vous devez configurer l'accès aux services privés pour allouer une plage d'adresses IP et créer une connexion de service privée. Cela permet aux ressources du réseau VPC de se connecter aux instances Cloud SQL. La console fournit un assistant pour vous aider à mettre en place cette configuration.

Configurer une instance pour qu'elle utilise une adresse IP privée

Vous pouvez configurer une instance Cloud SQL pour qu'elle utilise une adresse IP privée lors de sa création, ou ultérieurement pour une instance existante.

Configurer une adresse IP privée pour une nouvelle instance

Pour configurer une instance Cloud SQL au moment de sa création afin qu'elle utilise une adresse IP privée, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur Create instance (Créer une instance).
  3. Développez la section Show configuration options (Afficher les options de configuration).
  4. Développez Connexions.
  5. Sélectionnez Private IP (Adresse IP privée).

    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.

  6. Sélectionnez le réseau VPC que vous souhaitez utiliser :
  7. Si un message vous indique que vous devez configurer une connexion de service privée, procédez comme suit :

    1. Cliquez sur Configurer la connexion.
    2. 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 la liste déroulante. Le cas échéant, la liste déroulante 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.
    3. Cliquez sur Continuer.
    4. Cliquez sur Create connection (Créer une connexion).
    5. Vérifiez que le message suivant s'affiche : Private service connection for network VPN_NAME has been successfully created.
  8. Vous pouvez éventuellement spécifier une plage d'adresses IP allouée pour vos instances à utiliser pour les connexions.
    1. Développez l'option Afficher la plage d'adresses IP allouée.
    2. Sélectionnez une plage d'adresses IP dans le menu déroulant.
  9. Terminez la configuration de votre instance.
  10. Cliquez sur Create instance (Créer une instance).

gcloud

Assurez-vous que votre projet est configuré pour l'accès privé aux services.

Créez votre instance Cloud SQL en utilisant le paramètre --network pour spécifier le nom du réseau VPC sélectionné, ainsi que l'option --no-assign-ip pour désactiver l'adresse IP publique.

La valeur du paramètre --network doit être au format suivant : projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME PROJECT_ID correspond à l'ID de projet du réseau VPC. Si le réseau VPC est un VPC partagé, il doit s'agir de l'identifiant du projet hôte de VPC partagé.

Vous pouvez éventuellement spécifier le nom d'une plage d'adresses privées à l'aide du paramètre --allocated-ip-range-name. Si elle est spécifiée, un nom de plage allouée est défini, et une plage d'adresses privées est créée pour l'instance principale. Exemple :google-managed-services-default Le nom de la plage doit respecter la norme RFC-1035 et comporter entre 1 et 63 caractères. (gcloud alpha sql instances create).

Si le réseau VPC est un VPC partagé, dans la commande gcloud suivante, PROJECT_ID doit être l'ID du projet de service VPC partagé.

gcloud beta sql instances create INSTANCE_ID \
--project=PROJECT_ID \
--network=VPC_NETWORK_NAME \
--no-assign-ip \
--allocated-ip-range-name=RANGE_NAME

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-name : nom du réseau VPC que vous souhaitez utiliser pour l'instance.
  • allocated-ip-range : 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-1035 et comporter entre 1 et 63 caractères.

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Corps JSON de la requête :

{
  "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
}

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-name : nom du réseau VPC que vous souhaitez utiliser pour l'instance.
  • allocated-ip-range : 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-1035 et comporter entre 1 et 63 caractères.

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": "vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
  }
}

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

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Dans le menu de navigation SQL, sélectionnez Connexions.
  4. Cochez la case Adresse IP privée.

    Une liste déroulante affiche les réseaux disponibles dans votre projet.

  5. Sélectionnez le réseau VPC que vous souhaitez utiliser :
  6. Si vous voyez apparaître Connexion de service privée requise :

    1. Cliquez sur Configurer la connexion.
    2. 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 la liste déroulante. Le cas échéant, la liste déroulante 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.
    3. Cliquez sur Continuer.
    4. Cliquez sur Create connection (Créer une connexion).
    5. Vérifiez que vous observez bien l'état La connexion de service privée pour le réseau VPC_NETWORK_NAME a bien été créée.
  7. Cliquez sur Enregistrer.

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é.

gcloud beta sql instances patch INSTANCE_ID \
--project=PROJECT_ID \
--network=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 que l'instance Cloud SQL.

Pour vous connecter à partir d'une source sans serveur, telle que l'environnement standard App Engine, Cloud Run ou Cloud Functions, 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

Vous pouvez vous connecter à partir d'un client sur un réseau externe (réseau sur site ou réseau VPC) si ce réseau est connecté au réseau VPC auquel votre instance Cloud SQL est connectée. Pour autoriser les connexions à partir d'un réseau externe, procédez comme suit :

  1. 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.
  2. Assurez-vous que les sessions BGP sur les routeurs cloud gérant vos tunnels Cloud VPN et vos rattachements 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 toujours utilisées, même si l'appairage Cloud SQL est configuré pour importer des routes personnalisées à partir de votre réseau VPC.

  3. Identifiez l'appairage généré par la connexion aux services privés. En fonction du service, la connexion aux services privés peut créer une ou plusieurs des connexions d'appairage suivantes, mais pas nécessairement toutes :
    • cloudsql-mysql-googleapis-com
    • cloudsql-postgres-googleapis-com
    • servicenetworking-googleapis-com
  4. Modifiez toutes les connexions d'appairage pour activer l'exportation des routes personnalisées.
  5. Identifiez la plage allouée utilisée par la connexion aux services privés.
  6. Créez une annonce de routage personnalisée Cloud Router pour la plage allouée sur les routeurs cloud qui gèrent les sessions BGP pour vos tunnels Cloud VPN ou vos rattachements Cloud Interconnect (VLAN).

Se connecter depuis Cloud Shell

Cloud Shell n'est actuellement pas compatible avec la connexion à une instance Cloud SQL ne disposant que d'une adresse IP privée.

Se connecter à partir d'adresses 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.

Les plages d'adresses non-RFC 1918 (adresses situées en dehors de l'espace d'adresses RFC 1918) doivent être configurées en tant que réseaux autorisés.

Pour vous connecter à partir d'une adresse non-RFC 1918, vous devez définir une autorisation IP par instance, afin d'autoriser le trafic provenant de plages d'adresses 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 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=NETWORK \
--export-subnet-routes-with-public-ip \
--project=PROJECT_ID
  • PEERING_CONNECTION correspond 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.
  • NETWORK est le nom du réseau VPC.
  • PROJECT_ID est l'ID du projet du réseau VPC. Utilisez l'ID du projet hôte si vous utilisez un VPC partagé.

Dépannage

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.

Étape suivante