Connessione del client SQL Server tramite l'immagine Docker del proxy di autenticazione Cloud SQL

Questa pagina descrive come connettere un client sqlcmd alla tua istanza Cloud SQL da un computer client che esegue Linux o da un'istanza Linux di Compute Engine utilizzando l'immagine Docker del proxy di autenticazione Cloud SQL.

Prima di iniziare

Devi avere:

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per connetterti a un'istanza Cloud SQL utilizzando l'immagine Docker di Cloud SQL Auth Proxy, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

  • Per connetterti utilizzando il proxy di autenticazione Cloud SQL: Cloud SQL Client (roles/cloudsql.client)
  • Se utilizzi l'autenticazione IAM del database: Cloud SQL Instance User (roles/cloudsql.instanceUser)

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Connetti un client sqlcmd utilizzando l'immagine Docker del proxy di autenticazione Cloud SQL

Per connetterti utilizzando l'immagine Docker del proxy di autenticazione Cloud SQL:

  1. Abilita l'API Cloud SQL Admin, se non è già abilitata.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    Abilitare l'API

  2. Se utilizzi un'istanza Compute Engine, preparala:
    1. Visualizza le proprietà dell'istanza Compute Engine:
      gcloud compute instances describe [GCE_INSTANCE_NAME]
    2. Verifica il service account e gli ambiti di accesso configurati nell'istanza:
      • Assicurati che il account di servizio collegato alla VM abbia il ruolo Identity and Access Management (IAM) predefinito Client Cloud SQL (roles/cloudsql.client) per connettersi utilizzando il Cloud SQL Auth Proxy o l'API Cloud SQL Admin. Se utilizzi l'autenticazione IAM del database, concedi anche il ruolo Utente istanza Cloud SQL (roles/cloudsql.instanceUser). Per saperne di più sui ruoli predefiniti, consulta Ruoli richiesti.
      • Assicurati che l'ambito di accesso della VM sia impostato su cloud-platform (https://www.googleapis.com/auth/cloud-platform o Consenti l'accesso completo a tutte le API Cloud nella console Google Cloud ). Gli ambiti di accesso sono un metodo legacy per specificare l'autorizzazione per una VM e impostano solo l'ambito di autorizzazione OAuth massimo per le richieste. Gestisci controllo dell'accesso tramite ruoli IAM predefiniti anziché ambiti di accesso.

      Se l'istanza di Compute Engine non dispone dei ruoli o dell'ambito di accesso del service account richiesti, puoi aggiornarla. Per ulteriori informazioni sulla modifica del account di servizio e degli ambiti di accesso su una VM, consulta Modifica il service account collegato nella documentazione di Compute Engine.

    3. Apri una connessione terminale all'istanza seguendo le istruzioni riportate in Connessione alle istanze Linux.
  3. Installa il client sqlcmd sull'istanza Compute Engine o sulla macchina client, se non è già installato.
  4. Se necessario, installa il client Docker:
    curl https://get.docker.com | sh
    sudo usermod -aG docker $USER

    Se utilizzi un'istanza Compute Engine ottimizzata per i container, il client Docker è già installato.

  5. Installa l'immagine Docker del Cloud SQL Auth Proxy da Google Container Registry.
    docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.27.0
  6. Se esegui l'immagine Docker del proxy di autenticazione Cloud SQL su una macchina locale (non un'istanza Compute Engine) o se il account di servizio collegato alla tua istanza Compute Engine non dispone dei ruoli IAM e dell'ambito di accesso richiesti, crea un service account Google Cloud .
    1. Nella Google Cloud console, vai alla pagina Service account.

      Vai ad Account di servizio

    2. Seleziona il progetto che contiene l'istanza Cloud SQL.
    3. Fai clic su Crea account di servizio.
    4. Nel campo Nome service account, inserisci un nome descrittivo per il account di servizio.
    5. Modifica l'ID service account in un valore univoco e riconoscibile, quindi fai clic su Crea e continua.
    6. Fai clic sul campo Seleziona un ruolo e seleziona uno dei seguenti ruoli:
      • Cloud SQL > Cloud SQL Client
      • Cloud SQL > Cloud SQL Editor
      • Cloud SQL > Cloud SQL Admin
    7. Fai clic su Fine per completare la creazione del service account.
    8. Fai clic sul menu Azioni per il nuovo account di servizio e seleziona Gestisci chiavi.
    9. Fai clic sul menu a discesa Aggiungi chiave, quindi su Crea nuova chiave.
    10. Verifica che il tipo di chiave sia JSON e poi fai clic su Crea.

      Il file della chiave privata viene scaricato sulla tua macchina. Puoi spostarlo in un'altra posizione. Mantieni il file di chiave al sicuro.

    Devi fornire il percorso del file della chiave come "PATH_TO_KEY_FILE" quando avvii il proxy di autenticazione Cloud SQL.

  7. Vai alla pagina Istanze Cloud SQL nella console Google Cloud .

    Vai a Istanze Cloud SQL

  8. Seleziona l'istanza per aprire la pagina Dettagli istanza e copia il Nome connessione istanza.

    Ad esempio: myproject:us-central1:myinstance.

  9. Avvia il proxy di autenticazione Cloud SQL.

    Socket 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

    Se utilizzi le credenziali fornite dall'istanza di Compute Engine, non includere il parametro --credentials-file e la riga -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.

    Specifica sempre il prefisso 127.0.0.1 in -p in modo che il Cloud SQL Auth Proxy non sia esposto all'esterno dell'host locale. Il flag --address 0.0.0.0 è necessario per rendere la porta accessibile dall'esterno del container Docker.

  10. Avvia il client:

    La stringa di connessione che utilizzi dipende dal fatto che tu abbia avviato il Cloud SQL Auth Proxy utilizzando un socket TCP o Docker.

    Socket TCP

    1. Avvia il client sqlcmd:
      sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD

      Quando ti connetti utilizzando i socket TCP, l'accesso al proxy di autenticazione Cloud SQL avviene tramite 127.0.0.1.

    2. Se richiesto, inserisci la password.
    3. Viene visualizzato il prompt sqlcmd.
Hai bisogno di aiuto? Per assistenza nella risoluzione dei problemi del proxy, consulta Risoluzione dei problemi delle connessioni del proxy di autenticazione Cloud SQL o visita la nostra pagina di assistenza di Cloud SQL.

Mantieni aggiornata l'immagine Docker del Cloud SQL Auth Proxy

L'immagine Docker del proxy di autenticazione Cloud SQL si basa su una versione specifica del proxy di autenticazione Cloud SQL. Quando è disponibile una nuova versione del Cloud SQL Auth Proxy, esegui il pull della nuova versione dell'immagine Docker del Cloud SQL Auth Proxy per mantenere aggiornato il tuo ambiente. Puoi visualizzare la versione corrente del proxy di autenticazione Cloud SQL controllando la pagina delle release di GitHub del proxy di autenticazione Cloud SQL.

Passaggi successivi