Configurer une adresse 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 PostgreSQL :

  • 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 section Connecter un client psql à l'aide des 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 une adresse 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. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Dans le menu de navigation SQL, sélectionnez Connexions.
  4. Cliquez sur l'onglet Réseau.
  5. Cochez la case IP publique.
  6. Cliquez sur Ajouter un réseau.
  7. Dans le champ Nom, vous pouvez éventuellement saisir un nom pour ce réseau.
  8. 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.

  9. Cliquez sur OK.
  10. Cliquez sur Enregistrer.

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 authorizedNetwork dans authorizedNetwork 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 :

Terraform

Pour activer l'adresse IP publique, et ajouter une adresse ou une plage d'adresses autorisée, utilisez une ressource Terraform.

resource "google_sql_database_instance" "postgres_public_ip_instance_name" {
  database_version = "POSTGRES_14"
  name             = "postgres-public-ip-instance-name"
  region           = "asia-southeast2"
  settings {
    availability_type = "ZONAL"
    ip_configuration {
      # Add optional authorized networks
      # Update to match the customer's networks
      authorized_networks {
        name  = "test-net-3"
        value = "203.0.113.0/24"
      }
      # Enable public IP
      ipv4_enabled = true
    }
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Appliquer les modifications

Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. 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).

  1. 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 exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. 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

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

  2. 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).

  3. 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 :

  1. Pour désactiver la protection contre la suppression, définissez l'argument deletion_protection sur false dans le fichier de configuration Terraform.
    deletion_protection =  "false"
  2. Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply
  1. 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 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. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  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 authorizedNetwork dans authorizedNetwork 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. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  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 une 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. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Dans le menu de navigation SQL, sélectionnez Connexions.
  4. Décochez la case Adresse IP publique.
  5. Cliquez sur Enregistrer pour mettre l'instance à jour.

gcloud

  1. Mettre à 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 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-1035 et 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.

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

    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 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-1035 et 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.

    Méthode HTTP et URL :

    POST https://sqladmin.googleapis.com/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
          
        }
      }
    }
    

    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 :

Résoudre les problèmes

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.

Certificate verify failed

Les certificats client ont expiré ou le chemin d'accès aux certificats est incorrect.

Générez à nouveau les certificats en les recréant.

FATAL: database 'user' does not exist gcloud sql connect --user ne fonctionne qu'avec l'utilisateur postgres par défaut.

Connectez-vous avec l'utilisateur par défaut, puis changez d'utilisateur.

Vous voulez savoir qui est connecté. Connectez-vous à la base de données et exécutez la commande suivante :

SELECT datname,
usename,
application_name as appname,
client_addr,
state,
now() - backend_start as conn_age,
now() - state_change as last_activity_age
FROM pg_stat_activity
WHERE backend_type = 'client backend'
ORDER BY 6 DESC
LIMIT 20
   

Hostname/IP does not match certificate's altnames: Host: localhost. is not in the cert's altnames

L'adresse hôte ne correspond pas à l'adresse figurant dans les autres noms du certificat de serveur.

Si vous utilisez Node.js avec verify-full ou son équivalent, veuillez utiliser le nom DNS pour le paramètre servername. Le nom DNS se trouve dans le certificat du serveur à l'aide de openssl. Par exemple : openssl x509 -in server-cert.pem -noout -text |grep 'DNS:'.

 ssl: {
  rejectUnauthorized: true,
  ca: fs.readFileSync("/path/to/server/CA"),
  servername: 'N-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx.us-central1.sql.goog'
}

Étapes suivantes