Connecter un client SQL Server à l'aide de l'image Docker du proxy d'authentification Cloud SQL

Cette page décrit comment connecter un client sqlcmd à votre instance Cloud SQL à l'aide de l'image Docker du proxy d'authentification Cloud SQL et depuis une machine cliente exécutant Linux ou une instance Compute Engine Linux.

Avant de commencer

Vous devez avoir :

Rôles requis

Pour obtenir les autorisations nécessaires pour vous connecter à une instance Cloud SQL à l'aide de l'image Docker du proxy d'authentification Cloud SQL, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Connecter un client sqlcmd en utilisant l'image Docker du proxy d'authentification Cloud SQL

Pour vous connecter à l'aide de l'image Docker du proxy d'authentification Cloud SQL :

  1. Activez l'API Cloud SQL Admin, si ce n'est pas déjà fait.

    Rôles requis pour activer les API

    Pour activer des API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

    Activer l'API

  2. Si vous utilisez une instance Compute Engine, préparez-la :
    1. Affichez les propriétés de l'instance Compute Engine :
      gcloud compute instances describe [GCE_INSTANCE_NAME]
    2. Vérifiez le compte de service et les niveaux d'accès configurés sur l'instance :
      • Assurez-vous que le compte de service associé à la VM dispose du rôle IAM (Identity and Access Management) prédéfini Client Cloud SQL (roles/cloudsql.client) pour se connecter à l'aide du proxy d'authentification Cloud SQL ou de l'API Cloud SQL Admin. Si vous utilisez l'authentification IAM pour les bases de données, accordez également le rôle Utilisateur d'instance Cloud SQL (roles/cloudsql.instanceUser). Pour en savoir plus sur les rôles prédéfinis, consultez Rôles requis.
      • Assurez-vous que le niveau d'accès de la VM est défini sur cloud-platform (https://www.googleapis.com/auth/cloud-platform ou Autoriser l'accès complet à l'ensemble des API Cloud dans la console Google Cloud ). Les niveaux d'accès constituent une ancienne méthode de spécification des autorisations pour une VM et ne définissent que le niveau d'autorisation OAuth maximal pour les requêtes. Gérez le contrôle des accès à l'aide de rôles IAM prédéfinis plutôt que de niveaux d'accès.

      Si votre instance Compute Engine ne dispose pas des rôles de compte de service ou du niveau d'accès requis, vous pouvez la mettre à jour. Pour en savoir plus sur la modification du compte de service et des niveaux d'accès sur une VM, consultez Modifier le compte de service associé dans la documentation Compute Engine.

    3. Ouvrez une connexion de terminal à l'instance en suivant les instructions de la page Se connecter à des instances Linux.
  3. Si ce n'est pas déjà fait, installez le client sqlcmd sur l'instance Compute Engine ou la machine cliente.

    Debian/Ubuntu

    Pour Debian/Ubuntu, installez les outils de ligne de commande SQL Server applicables.

    CentOS/RHEL

    Pour CentOS/RHEL, installez les outils de ligne de commande SQL Server applicables.

    openSUSE

    Pour openSUSE, installez les outils de ligne de commande SQL Server applicables.

    Autres plates-formes

    Consultez la page de destination concernant l'installation de SQL Server, ainsi que la page de téléchargements SQL Server.

  4. Si nécessaire, installez le client Docker :
    curl https://get.docker.com | sh
    sudo usermod -aG docker $USER

    Si vous utilisez une instance de Compute Engine optimisée pour les conteneurs, le client Docker est déjà installé.

  5. Installez l'image Docker du proxy d'authentification Cloud SQL à partir de Google Container Registry.
    docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.27.0
  6. Si vous exécutez l'image Docker du proxy d'authentification Cloud SQL sur un ordinateur local (et non une instance Compute Engine) ou si le compte de service associé à votre instance Compute Engine ne dispose pas des rôles IAM et du niveau d'accès requis, créez un compte de service Google Cloud .
    1. Dans la console Google Cloud , accédez à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Sélectionnez le projet contenant l'instance Cloud SQL.
    3. Cliquez sur Créer un compte de service.
    4. Dans le champ Nom du compte de service, attribuez un nom descriptif au compte de service.
    5. Remplacez l'ID du compte de service par une valeur unique et facilement reconnaissable, puis cliquez sur Créer et continuer.
    6. Cliquez sur le champ Sélectionner un rôle, puis sélectionnez l'un des rôles suivants :
      • Cloud SQL > Client Cloud SQL
      • Cloud SQL > Éditeur Cloud SQL
      • Cloud SQL > Administrateur Cloud SQL
    7. Cliquez sur OK pour terminer la création du compte de service.
    8. Cliquez sur le menu Action de votre nouveau compte de service, puis sélectionnez Gérer les clés.
    9. Cliquez sur le menu déroulant Ajouter une clé, puis sur Créer une clé.
    10. Vérifiez que le type de clé est bien JSON et cliquez sur Créer.

      Le fichier de clé privée est téléchargé sur votre machine. Vous pouvez le changer d'emplacement. Conservez le fichier de clé à un endroit sécurisé.

    Vous fournissez au démarrage du proxy d'authentification Cloud SQL le chemin d'accès au fichier de clé sous la forme "PATH_TO_KEY_FILE".

  7. Accédez à la page "Instances Cloud SQL" dans la console Google Cloud .

    Accéder à la page Instances Cloud SQL

  8. Sélectionnez l'instance pour ouvrir la page de Détails de l'instance correspondante et copiez le Nom de la connexion à l'instance.

    Exemple : myproject:us-central1:myinstance.

  9. Démarrez le proxy d'authentification Cloud SQL.

    Sockets TCP

    docker run -d 
    -v PATH_TO_KEY_FILE:/path/to/service-account-key.json
    -p 127.0.0.1:1433:1433
    gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.27.0
    --address 0.0.0.0 --port 1433
    --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

    Si vous utilisez les identifiants fournis par votre instance Compute Engine, n'incluez pas le paramètre --credentials-file ni la ligne -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.

    Spécifiez toujours le préfixe 127.0.0.1 dans -p afin de ne pas exposer le proxy d'authentification Cloud SQL en dehors de l'hôte local. L'option --address 0.0.0.0 est requise pour rendre le port accessible depuis l'extérieur du conteneur Docker.

  10. Démarrez le client :

    La chaîne de connexion que vous utilisez varie selon que vous avez démarré le proxy d'authentification Cloud SQL à l'aide d'un socket TCP ou de Docker.

    Sockets TCP

    1. Lancez le client sqlcmd :
      sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD

      Lorsque vous vous connectez à l'aide de sockets TCP, l'accès au proxy d'authentification Cloud SQL s'effectue via 127.0.0.1.

    2. Si vous y êtes invité, saisissez le mot de passe.
    3. L'invite sqlcmd s'affiche.
Besoin d'aide ? Pour obtenir de l'aide sur le dépannage du proxy, consultez la section Dépannage des connexions via le proxy d'authentification Cloud SQL ou la page Assistance Cloud SQL.

Maintenir à jour l'image Docker du proxy d'authentification Cloud SQL

L'image Docker du proxy d'authentification Cloud SQL est basée sur une version spécifique du proxy d'authentification Cloud SQL. Lorsqu'une nouvelle version du proxy d'authentification Cloud SQL est disponible, vous devez extraire la nouvelle version de l'image Docker du proxy afin de maintenir votre environnement à jour. Pour savoir quelle est la version actuelle du proxy d'authentification Cloud SQL, consultez la page GitHub relative aux versions du proxy d'authentification Cloud SQL.

Étapes suivantes