Configurer la connectivité IP publique

Cette page explique comment configurer la connectivité IP publique sur une instance Cloud SQL.

Présentation

Vous pouvez configurer votre instance Cloud SQL de façon à obtenir une adresse IPv4 publique. Vous pourrez alors accepter des connexions à partir d'adresses IP spécifiques ou d'une plage d'adresses en ajoutant des adresses autorisées à votre instance.

Vous ne pouvez pas spécifier un réseau privé (par exemple, 10.x.x.x) en tant que réseau autorisé.

Adresses IP publiques pour les instances SQL Server :

  • IPv6 : les instances ne sont pas compatibles avec IPv6.
  • IPv4 : les instances disposent d'une adresse IPv4 statique attribuée automatiquement. Des frais modérés sont facturés pour l’adresse IP chaque fois que votre instance est arrêtée (désactivée).

Pour obtenir de l'aide sur la connexion d'un client d'administration à votre instance via une connexion IP, consultez la page Connecter un client sqlcmd à l'aide d'adresses IP.

Si vous acceptez les connexions via l'adresse IP publique de votre instance, vous devez également configurer le protocole SSL afin de sécuriser vos données. Pour en savoir plus, consultez la page Configurer SSL pour les instances.

Pour configurer votre instance avec une adresse IP non exposée à l'Internet public, consultez la page Configurer la connectivité IP privée.

Activer l'adresse IP publique et ajouter une adresse ou une plage d'adresses autorisée

Lorsque vous activez une adresse IP publique pour votre instance, Cloud SQL configure l'instance avec une adresse IPv4 publique et statique. Après avoir activé l'adresse IP publique, vous devez configurer une autorisation pour les connexions à la base de données. Pour en savoir plus, consultez les options d'autorisation.

Pour activer l'IP publique et ajouter une adresse autorisé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 IP publique.
  5. Cliquez sur Ajouter un réseau.
  6. Dans le champ Réseau, saisissez l'adresse IP ou la plage d'adresses à partir de laquelle vous souhaitez autoriser les connexions.

    Utilisez le format CIDR.

  7. Saisissez un nom pour cette entrée, le cas échéant.
  8. Cliquez sur OK.
  9. Cliquez sur Enregistrer pour mettre l'instance à jour.

gcloud

  1. Si vous ne l'avez pas déjà fait, ajoutez une adresse IPv4 à l'instance :
    gcloud sql instances patch INSTANCE_NAME\
    --assign-ip
    
  2. Affichez toutes les adresses autorisées existantes dans la description de l'instance :
    gcloud sql instances describe INSTANCE_NAME
    

    Recherchez les entrées authoredNetwork dans ipConfiguration et notez toutes les adresses autorisées que vous souhaitez conserver.

  3. Mettez à jour la liste des réseaux autorisés, y compris toutes les adresses que vous souhaitez inclure.
    gcloud sql instances patch INSTANCE_NAME \
    --authorized-networks=IP_ADDR1,IP_ADDR2...
    

    Utilisez le format CIDR.

  4. Confirmez les modifications :
    gcloud sql instances describe INSTANCE_NAME
    

REST v1

  1. Affichez toutes les adresses autorisées existantes dans la description de l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. Mettez à jour l'instance, y compris toutes les adresses que vous souhaitez définir sur l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • network_range_1 : adresse IP ou plage autorisée
    • network_range_2 : autre adresse IP ou plage autorisée

    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":
        {
          "authorizedNetworks":
            [{"value": "network_range_1"}, {"value": network_range_2"}]
        }
      }
    }
    

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

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

    Utilisez le format CIDR.

  3. Confirmez les modifications :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address1 : format CIDR de la première adresse IP
    • ip-address-name1 : nom de la première adresse IP
    • ip-address2 : format CIDR de la deuxième adresse IP
    • ip-address-name2 : nom de la deuxième adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

REST v1beta4

  1. Affichez toutes les adresses autorisées existantes dans la description de l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. Mettez à jour l'instance, y compris toutes les adresses que vous souhaitez définir sur l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • network_range_1 : adresse IP ou plage autorisée
    • network_range_2 : autre adresse IP ou plage autorisée

    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":
        {
          "authorizedNetworks":
            [{"value": "network_range_1"}, {"value": network_range_2"}]
        }
      }
    }
    

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

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

    Utilisez le format CIDR.

  3. Confirmez les modifications :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address1 : format CIDR de la première adresse IP
    • ip-address-name1 : nom de la première adresse IP
    • ip-address2 : format CIDR de la deuxième adresse IP
    • ip-address-name2 : nom de la deuxième adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

Supprimer une adresse ou une plage d'adresses autorisée

Pour supprimer une adresse autorisé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. Cliquez sur l'icône de suppression Supprimer. de l'adresse que vous souhaitez supprimer.
  5. Cliquez sur Enregistrer pour mettre l'instance à jour.

gcloud

  1. Affichez toutes les adresses autorisées existantes dans la description de l'instance :
    gcloud sql instances describe INSTANCE_NAME
    

    Recherchez les entrées authoredNetwork dans ipConfiguration et notez toutes les adresses autorisées que vous souhaitez conserver.

  2. Mettez à jour la liste des réseaux autorisés en retirant les adresses que vous souhaitez supprimer.
    gcloud sql instances patch INSTANCE_NAME \
    --authorized-networks=IP_ADDR1,IP_ADDR2...
    
  3. Confirmez les modifications :
    gcloud sql instances describe INSTANCE_NAME
    

REST v1

  1. Affichez toutes les adresses autorisées existantes dans la description de l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address1 : format CIDR de la première adresse IP
    • ip-address-name1 : nom de la première adresse IP
    • ip-address2 : format CIDR de la deuxième adresse IP
    • ip-address-name2 : nom de la deuxième adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. Mettez à jour l'instance, en incluant toutes les adresses que vous souhaitez conserver et en retirant celles que vous souhaitez supprimer :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • network_range_1 : adresse IP ou plage réseau autorisée à supprimer

    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":
        {
          "authorizedNetworks":
            [{"value": "network_range_1"}]
        }
      }
    }
    
    

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

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

  3. Confirmez les modifications :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address : format CIDR de l'adresse IP
    • ip-address-name : nom de l'adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

REST v1beta4

  1. Affichez toutes les adresses autorisées existantes dans la description de l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address1 : format CIDR de la première adresse IP
    • ip-address-name1 : nom de la première adresse IP
    • ip-address2 : format CIDR de la deuxième adresse IP
    • ip-address-name2 : nom de la deuxième adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. Mettez à jour l'instance, en incluant toutes les adresses que vous souhaitez conserver et en retirant celles que vous souhaitez supprimer :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • network_range_1 : adresse IP ou plage réseau autorisée à supprimer

    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":
        {
          "authorizedNetworks":
            [{"value": "network_range_1"}]
        }
      }
    }
    
    

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

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

  3. Confirmez les modifications :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address : format CIDR de l'adresse IP
    • ip-address-name : nom de l'adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

Configurer une instance pour refuser toutes les connexions IP publiques

Pour configurer une instance de façon à refuser toutes les connexions IP publiques, 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. Cliquez sur l'icône de suppression Supprimer. de toutes les adresses autorisées.
  5. Cliquez sur Enregistrer pour mettre l'instance à jour.

gcloud

  1. Supprimez la liste d'adresses autorisée :
    gcloud sql instances patch INSTANCE_NAME \
    --clear-authorized-networks
    
  2. Confirmez les modifications :
    gcloud sql instances describe INSTANCE_NAME
    

REST v1

  1. Affichez toutes les adresses autorisées existantes dans la description de l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address1 : format CIDR de la première adresse IP
    • ip-address-name1 : nom de la première adresse IP
    • ip-address2 : format CIDR de la deuxième adresse IP
    • ip-address-name2 : nom de la deuxième adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. Mettez à jour l'instance avec une liste d'adresses vide :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance.

    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":
        {
          "authorizedNetworks": []
        }
      }
    }
    

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

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

  3. Confirmez les modifications :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

REST v1beta4

  1. Affichez toutes les adresses autorisées existantes dans la description de l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address1 : format CIDR de la première adresse IP
    • ip-address-name1 : nom de la première adresse IP
    • ip-address2 : format CIDR de la deuxième adresse IP
    • ip-address-name2 : nom de la deuxième adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. Mettez à jour l'instance avec une liste d'adresses vide :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance.

    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":
        {
          "authorizedNetworks": []
        }
      }
    }
    

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

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

  3. Confirmez les modifications :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

Désactiver l'adresse IP publique

Vous pouvez désactiver l'adresse IP publique, mais seulement si votre instance est également configurée pour utiliser l'adresse IP privée. Pour activer l'adresse IP privée, consultez la section Configurer une instance existante pour qu'elle utilise une adresse IP privée.

Pour désactiver l'adresse IP publique, 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. Décochez la case IP publique.
  5. Cliquez sur Enregistrer pour mettre l'instance à jour.

gcloud

  1. Mettez à jour l'instance :
    gcloud sql instances patch INSTANCE_NAME \
    --no-assign-ip
    
  2. Confirmez les modifications :
    gcloud sql instances describe INSTANCE_NAME
    

REST v1

  1. Affichez toutes les adresses autorisées existantes dans la description de l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address1 : format CIDR de la première adresse IP
    • ip-address-name1 : nom de la première adresse IP
    • ip-address2 : format CIDR de la deuxième adresse IP
    • ip-address-name2 : nom de la deuxième adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. Mettez à jour l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance.

    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}
      }
    }
    

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

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

  3. Confirmez les modifications :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

REST v1beta4

  1. Affichez toutes les adresses autorisées existantes dans la description de l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • ip-address1 : format CIDR de la première adresse IP
    • ip-address-name1 : nom de la première adresse IP
    • ip-address2 : format CIDR de la deuxième adresse IP
    • ip-address-name2 : nom de la deuxième adresse IP
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. Mettez à jour l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance.

    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}
      }
    }
    

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

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

  3. Confirmez les modifications :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • machine-type : type de machine de l'instance
    • zone : zone de l'instance

    Méthode HTTP et URL :

    GET  https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

Dépannage

Problème Dépannage
Aborted connection. Cause possible :
  • Instabilité du réseau.
  • Absence de réponse aux commandes keep-alive TCP (le client ou le serveur ne répond pas ou est peut-être surchargé)
  • La durée de vie de la connexion au moteur de base de données a été dépassée et le serveur met fin à la connexion.

Les applications doivent tolérer les défaillances du réseau et se baser sur les bonnes pratiques telles que le regroupement des connexions et les nouvelles tentatives. La plupart des regroupements de connexions interceptent ces erreurs lorsque cela est possible. Sinon, l'application doit réessayer ou échouer sans occasionner de blocage.

Pour effectuer de nouvelles tentatives de connexion, nous vous recommandons les techniques suivantes :

  1. Intervalle exponentiel entre les tentatives Augmentez l'intervalle de temps entre chaque nouvelle tentative, de manière exponentielle.
  2. Ajoutez également un intervalle aléatoire.

La combinaison de ces techniques permet de réduire les limitations.

Étape suivante