Informazioni sul proxy di autenticazione Cloud SQL

Questa pagina riassume il proxy di autenticazione Cloud SQL e descrive come utilizzarlo per stabilire connessioni autorizzate, criptate e protette alle tue istanze.

Per istruzioni dettagliate sull'utilizzo del proxy di autenticazione Cloud SQL, segui il link per il tuo ambiente:

Non è necessario utilizzare il proxy di autenticazione Cloud SQL o configurare SSL per la connessione a Cloud SQL da un ambiente standard di App Engine o un ambiente flessibile di App Engine.

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni di Cloud SQL in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Prova Cloud SQL gratuitamente

Vantaggi del proxy di autenticazione Cloud SQL

Il proxy di autenticazione Cloud SQL è un connettore Cloud SQL che fornisce l'accesso sicuro alle tue istanze senza bisogno di reti autorizzate o di configurazione di SSL.

Il proxy di autenticazione Cloud SQL e altri connettori Cloud SQL offrono i seguenti vantaggi:

  • Connessioni sicure:il proxy di autenticazione Cloud SQL cripta automaticamente il traffico da e verso il database utilizzando TLS 1.3 con una crittografia AES a 256 bit. I certificati SSL vengono utilizzati per verificare l'identità del client e del server e sono indipendenti dai protocolli del database. Non è necessario gestire i certificati SSL.
  • Autorizzazione di connessione più semplice: il proxy di autenticazione Cloud SQL utilizza le autorizzazioni IAM per controllare chi e cosa può connettersi alle tue istanze Cloud SQL. Pertanto, il proxy di autenticazione Cloud SQL gestisce l'autenticazione con Cloud SQL, eliminando la necessità di fornire indirizzi IP statici.
  • Autenticazione database IAM. Facoltativamente, il proxy di autenticazione Cloud SQL supporta un aggiornamento automatico dei token di accesso OAuth 2.0. Per informazioni su questa funzionalità, consulta Autenticazione del database IAM Cloud SQL.

Il proxy di autenticazione Cloud SQL non fornisce un nuovo percorso di connettività, ma si basa sulla connettività IP esistente. Per connetterti a un'istanza Cloud SQL utilizzando un IP privato, il proxy di autenticazione Cloud SQL deve trovarsi su una risorsa con accesso alla stessa rete VPC dell'istanza.

Come funziona il proxy di autenticazione Cloud SQL

Il proxy di autenticazione Cloud SQL funziona avendo un client locale in esecuzione nell'ambiente locale. L'applicazione comunica con il proxy di autenticazione Cloud SQL con il protocollo di database standard utilizzato dal database.

Il proxy di autenticazione Cloud SQL utilizza un tunnel sicuro per comunicare con il processo associato in esecuzione sul server. Ogni connessione stabilita tramite il proxy di autenticazione Cloud SQL crea una connessione all'istanza Cloud SQL.

Quando un'applicazione si connette al proxy di autenticazione Cloud SQL, verifica se è disponibile una connessione esistente tra l'applicazione e l'istanza Cloud SQL di destinazione. Se non esiste una connessione, chiama le API Cloud SQL Admin per ottenere un certificato SSL temporaneo e lo utilizza per connettersi a Cloud SQL. I certificati SSL temporanei scadono dopo circa un'ora. Il proxy di autenticazione Cloud SQL aggiorna questi certificati prima che scadano.

Anche se il proxy di autenticazione Cloud SQL può rimanere in ascolto su qualsiasi porta, crea connessioni in uscita o in uscita verso la tua istanza Cloud SQL solo sulla porta 3307. Poiché il proxy di autenticazione Cloud SQL chiama le API tramite il nome di dominio sqladmin.googleapis.com, che non ha un indirizzo IP fisso, è necessario consentire tutte le connessioni TCP in uscita sulla porta 443. Se il tuo computer client dispone di un criterio firewall in uscita, assicurati che consenta le connessioni in uscita alla porta 3307 sull'IP dell'istanza Cloud SQL.

Il proxy di autenticazione Cloud SQL non fornisce il pooling di connessioni, ma può essere abbinato ad altri pool di connessioni per aumentare l'efficienza.

Il seguente diagramma mostra in che modo il proxy di autenticazione Cloud SQL si connette a Cloud SQL:

Diagramma del proxy di autenticazione Cloud SQL che si connette dal software client all'istanza SQL

Requisiti per l'utilizzo del proxy di autenticazione Cloud SQL

Per utilizzare il proxy di autenticazione Cloud SQL, devi soddisfare i seguenti requisiti:

  • L'API Cloud SQL Admin deve essere abilitata.
  • Devi fornire il proxy di autenticazione Cloud SQL con le credenziali di autenticazione di Google Cloud.
  • Devi fornire al proxy di autenticazione Cloud SQL con un account utente e una password del database validi.
  • L'istanza deve avere un indirizzo IPv4 pubblico oppure essere configurata per l'utilizzo di un IP privato.

    L'indirizzo IP pubblico non deve essere accessibile da parte di nessun indirizzo esterno (non è necessario aggiungerlo come indirizzo di rete autorizzato).

Scarica e installa il proxy di autenticazione Cloud SQL

Linux a 64 bit

  1. Scarica il proxy di autenticazione Cloud SQL:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.10.1/cloud-sql-proxy.linux.amd64
    
  2. Rendi eseguibile il proxy di autenticazione Cloud SQL:
    chmod +x cloud-sql-proxy
    

Linux a 32 bit

  1. Scarica il proxy di autenticazione Cloud SQL:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.10.1/cloud-sql-proxy.linux.386
    
  2. Se il comando curl non viene trovato, esegui sudo apt install curl e ripeti il comando di download.
  3. Rendi eseguibile il proxy di autenticazione Cloud SQL:
    chmod +x cloud-sql-proxy
    

macOS a 64 bit

  1. Scarica il proxy di autenticazione Cloud SQL:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.10.1/cloud-sql-proxy.darwin.amd64
    
  2. Rendi eseguibile il proxy di autenticazione Cloud SQL:
    chmod +x cloud-sql-proxy
    

Mac M1

  1. Scarica il proxy di autenticazione Cloud SQL:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.10.1/cloud-sql-proxy.darwin.arm64
      
  2. Rendi eseguibile il proxy di autenticazione Cloud SQL:
      chmod +x cloud-sql-proxy
      

Windows a 64 bit

Fai clic con il pulsante destro del mouse su https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.10.1/cloud-sql-proxy.x64.exe e seleziona Salva link con nome per scaricare il proxy di autenticazione Cloud SQL. Rinomina il file come cloud-sql-proxy.exe.

Windows a 32 bit

Fai clic con il pulsante destro del mouse su https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.10.1/cloud-sql-proxy.x86.exe e seleziona Salva link con nome per scaricare il proxy di autenticazione Cloud SQL. Rinomina il file come cloud-sql-proxy.exe.

Immagine Docker del proxy di autenticazione Cloud SQL

Il proxy di autenticazione Cloud SQL ha immagini container diverse, ad esempio distroless, alpine e buster. L'immagine container predefinita del proxy di autenticazione Cloud SQL utilizza distroless, che non contiene shell. Se hai bisogno di una shell o di strumenti correlati, scarica un'immagine basata su alpine o buster. Per maggiori informazioni, consulta Immagini container di autenticazione proxy di Cloud SQL.

Puoi eseguire il pull dell'immagine più recente sulla tua macchina locale utilizzando Docker utilizzando il seguente comando:

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.10.1

Altro sistema operativo

Per gli altri sistemi operativi non inclusi qui, puoi compilare il proxy di autenticazione Cloud SQL dall'origine.

Opzioni di avvio del proxy di autenticazione Cloud SQL

Quando avvii il proxy di autenticazione Cloud SQL, fornisci le seguenti informazioni:

  • A quali istanze Cloud SQL stabilire le connessioni
  • e ascolta i dati provenienti dalla tua applicazione da inviare a Cloud SQL
  • dove troverà le credenziali che utilizzerà per autenticare la tua applicazione in Cloud SQL
  • Se necessario, quale tipo di indirizzo IP utilizzare.

Le opzioni di avvio del proxy di autenticazione Cloud SQL che fornisci determinano se quest'ultimo rimane in ascolto su una porta TCP o su un socket Unix. Se è in ascolto su un socket Unix, crea il socket nella posizione scelta, in genere la directory /cloudsql/. Per TCP, il proxy di autenticazione Cloud SQL rimane in ascolto su localhost per impostazione predefinita.

Esegui l'eseguibile cloud-sql-proxy con l'argomento --help per visualizzare l'elenco completo delle opzioni di avvio.

Puoi installare il proxy di autenticazione Cloud SQL ovunque nel tuo ambiente locale. La posizione dei file binari del proxy di autenticazione Cloud SQL non influisce sulla posizione in cui il client ascolta i dati della tua applicazione.

Per saperne di più su come avviare il proxy di autenticazione Cloud SQL, vedi Avviare il proxy di autenticazione Cloud SQL.

Utilizza un account di servizio per l'autenticazione

Il proxy di autenticazione Cloud SQL richiede l'autenticazione come identità IAM Cloud SQL per autorizzare le connessioni a un'istanza Cloud SQL.

Il vantaggio di utilizzare un account di servizio per questo scopo è che puoi creare un file delle credenziali specifico per il proxy di autenticazione Cloud SQL, che sarà collegato in modo esplicito e permanente al proxy di autenticazione Cloud SQL finché è in esecuzione. Per questo motivo, l'utilizzo di un account di servizio è il metodo consigliato per le istanze di produzione non in esecuzione su un'istanza di Compute Engine.

Il file delle credenziali può essere duplicato in un'immagine di sistema se devi richiamare il proxy di autenticazione Cloud SQL da più macchine.

Per utilizzare questo metodo, devi creare e gestire il file delle credenziali. Solo gli utenti con l'autorizzazione resourcemanager.projects.setIamPolicy (ad esempio i proprietari del progetto) possono creare l'account di servizio. Se l'utente di Google Cloud non dispone di questa autorizzazione, devi chiedere a un'altra persona di creare l'account di servizio per te o utilizzare un altro metodo per autenticare il proxy di autenticazione Cloud SQL.

Scopri come creare un account di servizio.

Autorizzazioni richieste per gli account di servizio

Quando utilizzi un account di servizio per fornire le credenziali per il proxy di autenticazione Cloud SQL, devi crearlo con autorizzazioni sufficienti. Se utilizzi i ruoli più granulari di Identity Access and Management (IAM) per gestire le tue autorizzazioni Cloud SQL, devi assegnare all'account di servizio un ruolo che includa l'autorizzazione cloudsql.instances.connect. I ruoli di Cloud SQL predefiniti che includono questa autorizzazione sono:

  • Client Cloud SQL
  • Editor Cloud SQL
  • Amministratore Cloud SQL

Se utilizzi i ruoli di progetto precedenti (Visualizzatore, Editor, Proprietario), l'account di servizio deve avere almeno il ruolo Editor.

Opzioni per specificare le istanze Cloud SQL

Esistono diversi modi per indicare al proxy di autenticazione Cloud SQL a quali istanze vuoi connetterti. Alcune sono esplicite, altre implicite. In alcune configurazioni, non è necessario indicare in anticipo al proxy di autenticazione Cloud SQL a quali istanze vuoi connetterti, poiché il proxy di autenticazione Cloud SQL si connette in base alle richieste di connessione.

Le opzioni per la specifica dell'istanza dipendono dal sistema operativo e dall'ambiente:

Opzione Vantaggi Precisazioni e requisiti Linux/macOS
(socket Unix)
Java Windows Note
FUSE
(File system nello spazio utente)
Creazione di socket dinamici basata su richieste di connessione; non sono necessari riavvii del proxy man mano che le istanze cambiano. È necessario installare FUSE. Supportato No No Usa il flag --fuse.
Rilevamento automatico dell'istanza Non è necessario specificare le istanze; socket creati per tutte le istanze nel progetto predefinito. L'utilizzo dell'API Auth Proxy di Cloud SQL è aumentato. Deve avere installato e autenticato gcloud CLI, con un set di progetti predefinito. Devi riavviare il proxy di autenticazione Cloud SQL per aggiungere una nuova istanza. Supportato No No Opzione non consigliata per le istanze di produzione.
Istanze specificate alla chiamata del proxy di autenticazione Cloud SQL Elenco di istanze noto e statico. Devi riavviare il proxy di autenticazione Cloud SQL per aggiungere una nuova istanza. Supportato Supportate con socket TCP Supportate con socket TCP Per più istanze, utilizza un elenco separato da virgole, senza spazi. Scopri di più.
Vedi esempi di chiamate e stringhe di connessione.

Mantieni aggiornato il proxy di autenticazione Cloud SQL

Occasionalmente Google rilascia nuove versioni del proxy di autenticazione Cloud SQL. Puoi vedere qual è la versione attuale consultando la pagina delle release GitHub del proxy di autenticazione Cloud SQL. Le future release del proxy verranno indicate anche nel forum di annunci di Cloud SQL di Google Gruppi.

Utilizzo delle API

Il proxy di autenticazione Cloud SQL invia richieste all'API Cloud SQL Admin. Queste richieste incidono sulla quota API del tuo progetto.

L'utilizzo massimo dell'API si verifica all'avvio del proxy di autenticazione Cloud SQL. Mentre il proxy di autenticazione Cloud SQL è in esecuzione, emette 2 chiamate API all'ora per istanza connessa.

Informazioni sulla creazione di un account utente speciale per il proxy di autenticazione Cloud SQL

Quando ti connetti all'istanza utilizzando il proxy di autenticazione Cloud SQL, fornisci un account utente utilizzato per accedere all'istanza. A questo scopo, puoi usare qualsiasi account utente del database. Tuttavia, poiché il proxy di autenticazione Cloud SQL si connette sempre da un nome host a cui non è possibile accedere ad eccezione del proxy di autenticazione Cloud SQL, puoi creare un account utente che può essere utilizzato solo dal proxy di autenticazione Cloud SQL. Il vantaggio di questa scelta è che puoi specificare questo account senza una password senza compromettere la sicurezza dell'istanza o dei tuoi dati.

Per creare un account utente per le connessioni al proxy di autenticazione Cloud SQL, specifica il nome host come 'cloudsqlproxy~[IP_ADDRESS]'. Puoi anche utilizzare il carattere jolly per l'indirizzo IP, che genererà 'cloudsqlproxy~%'. Il nome completo dell'account utente sarà:

'[USER_NAME]'@'cloudsqlproxy~%'

o

'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'

Per informazioni sulla creazione di un utente, consulta Creazione e gestione degli utenti. Per informazioni su come funziona Cloud SQL con gli account utente, consulta Utenti. Per informazioni sugli account utente MySQL, consulta Protezione degli account MySQL iniziali nella documentazione di MySQL.

Parametri e flag del proxy di autenticazione Cloud SQL

Il proxy di autenticazione Cloud SQL accetta diversi flag e parametri all'avvio. Queste opzioni determinano dove e come il proxy di autenticazione Cloud SQL crea i socket che utilizza per la comunicazione con Cloud SQL e le modalità di autenticazione.

Per assistenza sulle opzioni del proxy di autenticazione Cloud SQL, consulta le seguenti informazioni:

Come viene utilizzato FUSE con il proxy di autenticazione Cloud SQL

FUSE è l'acronimo di "Filesystem in User Space". A seconda di come viene richiamato il proxy di autenticazione Cloud SQL, può facoltativamente utilizzare FUSE per creare i socket che utilizza per la connessione a Cloud SQL.

Durante la connessione da Compute Engine o da ambienti di sviluppo locali, il proxy di autenticazione Cloud SQL utilizza FUSE per accedere alle istanze di Cloud SQL nel seguente modo:

  • La directory "/cloudsql" è montata come file system in Userspace, o FUSE, dal proxy di autenticazione Cloud SQL.

  • Un processo (ad esempio mysql) tenta di cercare un file denominato $INSTANCE.

  • Il proxy di autenticazione Cloud SQL intercetta la richiesta e restituisce /cloudsql/$INSTANCE è un link simbolico che rimanda a un socket Unix situato altrove nel file system.

  • Il processo (ad esempio mysql) segue il link e apre il socket Unix a cui rimanda e a cui si collega.

Installazione di FUSE

Per Linux:

FUSE richiede il programma fusermount e un modulo kernel per funzionare. Puoi verificare se il programma è installato cercando il file /dev/fuse/. Se fusermount non è nel tuo sistema, puoi installarlo utilizzando il gestore di pacchetti o compilando il modulo dal codice sorgente.

Per macOS:

Installa FUSE per macOS.

Utilizzo del proxy di autenticazione Cloud SQL in un ambiente di produzione

Quando utilizzi il proxy di autenticazione Cloud SQL in un ambiente di produzione, puoi eseguire alcuni passaggi per assicurarti che il proxy di autenticazione Cloud SQL fornisca la disponibilità richiesta per la tua applicazione.

Assicurati che il proxy di autenticazione Cloud SQL sia eseguito come servizio permanente

Se il processo del proxy di autenticazione Cloud SQL viene interrotto, tutte le connessioni esistenti tramite il processo vengono eliminate e l'applicazione non può creare altre connessioni all'istanza Cloud SQL con il proxy di autenticazione Cloud SQL. Per evitare questo scenario, assicurati di eseguire il proxy di autenticazione Cloud SQL come servizio permanente, in modo che, se per qualsiasi motivo il proxy di autenticazione Cloud SQL si chiude, venga riavviato automaticamente. Puoi farlo utilizzando un servizio come systemd, upstart o supervisor. Per il sistema operativo Windows, esegui il proxy di autenticazione Cloud SQL come servizio Windows. In generale, assicurati che il proxy di autenticazione Cloud SQL abbia gli stessi requisiti di uptime del processo dell'applicazione.

Il numero di copie del proxy di autenticazione Cloud SQL di cui la tua applicazione ha bisogno

Non è necessario creare un processo proxy per ogni processo di applicazione; molti processi applicativi possono condividere un singolo processo proxy di autenticazione Cloud SQL. Esegui un processo client del proxy di autenticazione Cloud SQL per workstation o macchina virtuale.

Se utilizzi la scalabilità automatica per le macchine virtuali, assicurati che il proxy di autenticazione Cloud SQL sia incluso nella configurazione della macchina virtuale in modo che ogni volta che viene avviata una nuova macchina virtuale, questa abbia il proprio processo del proxy di autenticazione Cloud SQL.

Sta a te gestire il numero di connessioni richieste dall'applicazione, limitandole o creandole in pool. Il proxy di autenticazione Cloud SQL non applica alcuna limitazione alle nuove velocità di connessione o al numero di connessioni permanenti.

Riduci l'output del proxy di autenticazione Cloud SQL

Se devi ridurre le dimensioni del log del proxy di autenticazione Cloud SQL, puoi farlo impostando --quiet all'avvio del proxy di autenticazione Cloud SQL. Tieni presente, tuttavia, che questo riduce l'efficacia dell'output del proxy di autenticazione Cloud SQL nella diagnosi dei problemi di connessione.

In che modo il failover influisce sul proxy di autenticazione Cloud SQL

Se esegui il proxy di autenticazione Cloud SQL su un'istanza configurata per l'alta disponibilità e si verifica un failover, le connessioni tramite il proxy di autenticazione Cloud SQL vengono interessate allo stesso modo delle connessioni su IP: tutte le connessioni esistenti vengono perse e l'applicazione deve stabilire nuove connessioni. Tuttavia, non è necessario alcun intervento manuale; l'applicazione può continuare a utilizzare le stesse stringhe di connessione di prima.

Mantieni aggiornata l'immagine Docker del proxy di autenticazione Cloud SQL

L'immagine Docker del proxy di autenticazione Cloud SQL è basata su una versione specifica del proxy di autenticazione Cloud SQL. Quando una nuova versione del proxy di autenticazione Cloud SQL diventa disponibile, esegui il pull della nuova versione dell'immagine Docker del proxy di autenticazione Cloud SQL per mantenere aggiornato l'ambiente. Puoi visualizzare la versione attuale del proxy di autenticazione Cloud SQL consultando la pagina delle release GitHub del proxy di autenticazione Cloud SQL.

Come applicare l'utilizzo del proxy di autenticazione Cloud SQL

Puoi forzare l'utilizzo del proxy di autenticazione Cloud SQL nelle connessioni di istanze Cloud SQL utilizzando ConnectorEnforcement. Con l'applicazione del connettore, la connessione diretta al database viene rifiutata.

Per utilizzare l'applicazione forzata del connettore, utilizza il campo ConnectorEnforcement nell'API instances.

Per maggiori informazioni, consulta Modificare le istanze.

Informazioni sull'operatore proxy Cloud SQL

L'operatore proxy Cloud SQL è un operatore Kubernetes open source che automatizza il collegamento dei carichi di lavoro in un cluster GKE ai database Cloud SQL. L'operatore proxy di autenticazione Cloud SQL utilizza una risorsa personalizzata AuthProxyWorkload che specifica la configurazione del proxy di autenticazione Cloud SQL per un carico di lavoro specifico. L'operatore proxy di autenticazione Cloud SQL legge questa risorsa e aggiunge ai carichi di lavoro appropriati un container proxy di autenticazione Cloud SQL con la configurazione richiesta.

Quando installi l'operatore nel cluster GKE e configuri i carichi di lavoro e le istanze Cloud SQL, l'operatore proxy di autenticazione Cloud SQL configura automaticamente il proxy di autenticazione Cloud SQL e connette i carichi di lavoro GKE alle istanze Cloud SQL.

L'operatore del proxy di autenticazione Cloud SQL controlla anche lo stato del proxy di autenticazione Cloud SQL. Se il proxy di autenticazione Cloud SQL non riesce a connettersi, l'operatore di autenticazione del proxy di Cloud SQL restituisce le informazioni di debug e fornisce indicazioni per la risoluzione dei problemi di configurazione più comuni.

Per saperne di più, consulta Connessione tramite l'operatore proxy Cloud SQL.

Passaggi successivi