Autorizzazione con certificati SSL/TLS

Questa pagina descrive come utilizzare Secure Socket Layer (SSL), ora Transport Layer Security (TLS), dalla tua applicazione per criptare le connessioni alle istanze Cloud SQL.

Panoramica

Cloud SQL supporta la connessione a un'istanza utilizzando il protocollo SSL/TLS. Le connessioni SSL/TLS forniscono un livello di sicurezza criptando i dati in transito tra il client e il database nell'istanza Cloud SQL. Se vuoi, la connessione SSL/TLS può eseguire la verifica dell'identità del server con la convalida del certificato del server installato sull'istanza Cloud SQL e la verifica dell'identità del client con la convalida del certificato client installato sul client.

Certificati server

Quando crei un'istanza, Cloud SQL crea e installa automaticamente un certificato server firmato da un'autorità di certificazione (CA). Puoi scaricare il certificato CA sulla macchina host client e utilizzarlo per verificare l'identità della CA e del server Cloud SQL. Se vuoi, puoi scegliere il tipo di CA che Cloud SQL utilizza per firmare il certificato server.

Certificati client

Se vuoi, puoi creare e scaricare i certificati client insieme alle chiavi della macchina host del client per l'autenticazione reciproca (verifica dell'identità del server e del client). Non puoi scegliere il tipo di CA che Cloud SQL utilizza per firmare il certificato client.

Connessione tramite SSL/TLS

Quando ti connetti a un'istanza Cloud SQL dai client, puoi utilizzare SSL/TLS per le connessioni dirette e per quelle che utilizzano il proxy di autenticazione Cloud SQL o i connettori dei linguaggi di Cloud SQL.

  • Per le connessioni dirette, Google consiglia vivamente di applicare la crittografia SSL/TLS utilizzando l'impostazione della modalità SSL in Cloud SQL. Facoltativamente, puoi anche applicare la verifica del certificato client. Per maggiori informazioni, consulta Applicare la crittografia SSL/TLS.

  • Per le connessioni che utilizzano il proxy di autenticazione Cloud SQL o i connettori dei linguaggi di Cloud SQL, le connessioni vengono criptate automaticamente con SSL/TLS insieme alla verifica dell'identità del client e del server senza richiedere il download di un certificato CA server e di un certificato client.

Per saperne di più sulle opzioni di connettività di Cloud SQL, consulta Informazioni sulle connessioni Cloud SQL.

Per maggiori informazioni sulla configurazione SSL/TLS lato client, consulta la documentazione del motore del database.

Gerarchie delle autorità di certificazione (CA)

Questa sezione descrive i tre tipi di autorità di certificazione (CA) del server che puoi scegliere per le tue istanze Cloud SQL. Hai a disposizione tre opzioni:

  • CA per istanza: con questa opzione, una CA interna dedicata a ogni istanza Cloud SQL firma il certificato server per quell'istanza. Cloud SQL crea e gestisce queste CA. Per scegliere la CA per istanza, seleziona Autorità di certificazione interna gestita da Google (consoleGoogle Cloud ) o specifica GOOGLE_MANAGED_INTERNAL_CA per l'impostazione serverCaMode (API Cloud SQL Admin) o il flag --server-ca-mode (gcloud CLI) quando crei l'istanza. Se lasci l'impostazione o il flag non specificato quando crei un'istanza, questa opzione è il valore predefinito per l'istanza.

  • CA condivisa: con questa opzione, viene utilizzata una gerarchia di CA costituita da una CA radice e da CA server subordinate. Le CA server subordinate in una regione firmano i certificati server e sono condivise tra le istanze nella regione. Cloud SQL ospita e gestisce la CA radice e le CA server subordinate su Google Cloud Certificate Authority Service (servizio CA). Cloud SQL gestisce anche la rotazione delle CA radice e delle CA server subordinate e fornisce link disponibili pubblicamente ai bundle di certificati CA per il download. Per scegliere una CA condivisa, specifica GOOGLE_MANAGED_CAS_CA per l'impostazione serverCaMode (API Cloud SQL Admin) o il flag --server-ca-mode (interfaccia a riga di comando gcloud) quando crei l'istanza.

  • CA gestita dal cliente: con questa opzione, crei e gestisci la tua gerarchia di CA. Scegli questa opzione se vuoi gestire le tue CA e i tuoi certificati. Per scegliere una CA gestita dal cliente, devi creare un pool di CA e una CA in CA Service. In Cloud SQL, specifica il pool CA e CUSTOMER_MANAGED_CAS_CA per l'impostazione serverCaMode (API Cloud SQL Admin) o il flag --server-ca-mode (interfaccia a riga di comando gcloud) quando crei l'istanza.

Dopo aver creato un'istanza, puoi visualizzare la gerarchia CA configurata per un'istanza Cloud SQL utilizzando il comando gcloud sql instances describe o nella console Google Cloud . Per saperne di più, consulta Visualizzare le informazioni sull'istanza.

La seguente tabella confronta le tre opzioni della gerarchia CA.

Funzionalità CA per istanza CA condivisa CA gestita dal cliente
Struttura CA CA separata per ogni istanza CA radice e CA subordinate condivise tra le istanze nella stessa regione Gerarchia di CA che crei e gestisci
Attributi crittografici Chiave RSA a 2048 bit con algoritmo SHA256 Elliptic Curve Digital Signature Algorithm (ECDSA) con chiave a 384 bit con algoritmo SHA384 Elliptic Curve Digital Signature Algorithm (ECDSA) con chiave a 384 bit con algoritmo SHA384
Periodo di validità dell'autorità di certificazione 10 anni 25 anni per la CA radice e 10 anni per le CA subordinate Configurabile *
Periodo di validità del certificato server 10 anni 1 anno 1 anno**
Rotazione dell'autorità di certificazione avviata dall'utente? No. La rotazione delle CA è gestita da Cloud SQL
Rotazione del certificato del server avviata dall'utente?
Trust anchor CA per le connessioni TLS La CA univoca per istanza è il trust anchor per l'istanza corrispondente. La CA radice e le CA subordinate sono i trust anchor per tutte le istanze in una determinata regione. Le CA che crei e gestisci sono i trust anchor.
Verifica dell'identità del server La verifica della CA verifica l'identità del server, poiché ogni istanza ha una CA univoca. La verifica del nome host insieme alla verifica della CA è necessaria per la verifica dell'identità del server, poiché le CA del server sono condivise tra le istanze. Anche se la CA potrebbe non essere condivisa tra le istanze, ti consigliamo di verificare il nome host insieme alla CA.
Campo Subject Alternative Name (SAN) nei certificati server Il campo SAN contiene il nome host (nome DNS dell'istanza) solo per le istanze abilitate con Private Service Connect. Il nome host può essere utilizzato per la verifica dell'identità del server. Se ti connetti a un'istanza Cloud SQL utilizzando il nome DNS come nome host, devi configurare la risoluzione DNS. Il campo SAN contiene il nome host (nome DNS dell'istanza) per tutti i tipi di istanze. Il nome host può essere utilizzato per la verifica dell'identità del server. Se ti connetti a un'istanza Cloud SQL utilizzando il nome DNS come nome host, devi configurare la risoluzione DNS. Il campo SAN contiene il nome host (nome DNS dell'istanza) per tutti i tipi di istanze. Il nome host può essere utilizzato per la verifica dell'identità del server.
Supporto delle versioni del proxy di autenticazione Cloud SQL Supporta tutte le versioni del proxy di autenticazione Cloud SQL, la v1 e successive. Richiede il proxy di autenticazione Cloud SQL versione 2.13.0 o successive. Richiede il proxy di autenticazione Cloud SQL versione 2.14.3 o successive.
Limitazioni della connessione al servizio Nessuno Non supporta le connessioni dai seguenti servizi Google Cloud: Non supporta le connessioni dai seguenti servizi Google Cloud:
  • Ambiente standard di App Engine
  • Ambiente flessibile di App Engine
  • Servizi Cloud Run eseguiti in un ambiente di esecuzione di prima generazione

* Per l'opzione CA gestita dal cliente, il periodo di validità predefinito di un certificato CA in CA Service è di 10 anni. Puoi configurare un periodo di validità diverso per i certificati CA. Un periodo di validità più breve per la CA potrebbe richiedere rotazioni più frequenti della CA e un periodo di validità inferiore a un anno potrebbe influire sul periodo di validità dei certificati del server. Per saperne di più, consulta Gestione della rotazione delle CA.

** Per l'opzione CA gestita dal cliente, il periodo di validità predefinito di un certificato del server è di un anno. Tuttavia, se configuri un periodo di validità inferiore a un anno per il certificato CA, il certificato del server avrà un periodo di validità più breve. Per saperne di più sulla configurazione del periodo di validità del certificato CA al momento della creazione, vedi Impostazioni del certificato CA e Creare una CA radice.

CA per istanza ospitata da Cloud SQL

La gerarchia di CA per istanza è la configurazione predefinita della modalità CA server quando crei un'istanza utilizzando gcloud CLI, l'API Cloud SQL Admin o Terraform.

Cloud SQL crea una nuova CA server autofirmata per ogni istanza quando la crei. Per utilizzare questa impostazione, configura serverCaMode su GOOGLE_MANAGED_INTERNAL_CA quando crei l'istanza. Puoi lasciare l'impostazione di configurazione serverCaMode non specificata utilizzando l'API Cloud SQL Admin o gcloud CLI oppure selezionare l'opzione Autorità di certificazione interna di Google nella console Google Cloud .

Il seguente diagramma mostra la gerarchia CA per istanza.

Diagramma della gerarchia della CA interna per istanza.

Autorità di certificazione condivise ospitate da CA Service

La gerarchia di CA condivisa è la configurazione predefinita della modalità CA server quando crei un'istanza utilizzando la console Google Cloud .

Questa modalità CA server è costituita da una CA radice e da CA server subordinate in ogni regione. Le CA server subordinate emettono certificati server e sono condivise tra le istanze nella regione. Cloud SQL gestisce la rotazione delle CA del server regionali condivise e fornisce link disponibili pubblicamente per scaricare i bundle di certificati CA.

Puoi configurare un'istanza in modo che utilizzi una gerarchia di CA server in cui le CA emittenti sono condivise tra le istanze nella stessa regione. Per utilizzare questa impostazione, configura serverCaMode su GOOGLE_MANAGED_CAS_CA quando crei l'istanza. Puoi anche selezionare Autorità di certificazione CAS gestita da Google nella console Google Cloud .

Il seguente diagramma mostra la gerarchia delle CA condivise.

Diagramma di una gerarchia di CA condivisa

CA gestite dal cliente

Questa modalità CA server ti consente di configurare la tua gerarchia di CA in CA Service.

Per utilizzare l'opzione CA gestita dal cliente in Cloud SQL, crea un pool di CA nella stessa regione delle istanze Cloud SQL. Poi crei almeno una CA. Quando crei l'istanza Cloud SQL, specifica l'ID del pool di CA nel campo serverCaPool e configura il campo serverCaMode con il valore CUSTOMER_MANAGED_CAS_CA. CA Service fornisce una CA dal pool di CA e la utilizza per emettere il certificato server per l'istanza.

Quando crei CA in CA Service, puoi creare una CA radice o una CA subordinata a seconda del caso d'uso. Ad esempio, potresti voler creare una CA subordinata se prevedi di configurare una gerarchia di CA principale o una catena fino a una CA esterna.

Seleziona l'opzione CA gestita dal cliente solo se vuoi gestire le tue CA e i tuoi certificati. Per saperne di più, vedi Utilizzare una CA gestita dal cliente.

Come funziona la rotazione del certificato del server

Cloud SQL offre modi per ruotare il certificato server, in modo che il nuovo certificato possa essere sostituito senza problemi prima che scada quello precedente.

Per le istanze che utilizzano le gerarchie CA per istanza, CA condivisa o CA gestita dal cliente, circa tre mesi prima della scadenza del certificato server per un'istanza Cloud SQL, i proprietari del progetto ricevono un'email da Cloud SQL che indica che è iniziato il processo di rotazione del certificato per quell'istanza. L'email indica il nome dell'istanza e comunica che Cloud SQL ha aggiunto un nuovo certificato server al progetto. Il certificato del server esistente continua a funzionare normalmente. In effetti, l'istanza ha due certificati server durante questo periodo.

Il comando di rotazione del certificato del server da utilizzare dipende dal fatto che tu stia utilizzando un certificato del server emesso da una CA per istanza o un certificato del server emesso dalla CA condivisa o dalla CA gestita dal cliente.

Prima della scadenza del certificato del server corrente, scarica il nuovo file server-ca.pem, che contiene le informazioni sul certificato corrente e su quello nuovo. Aggiorna i client PostgreSQL in modo che utilizzino il nuovo file copiandolo su tutte le macchine host client PostgreSQL e sostituendo il file esistente.

Dopo aver aggiornato tutti i client PostgreSQL, invia un comando rotate (per la CA per istanza) o un comando rotate (per la CA condivisa o gestita dal cliente) all'istanza Cloud SQL per passare al nuovo certificato del server. Una volta completata l'operazione, il vecchio certificato server non viene più riconosciuto e può essere utilizzato solo il nuovo certificato server.

I certificati client non sono interessati dalla rotazione dei certificati server.

Scadenza del certificato SSL

Per le istanze Cloud SQL che utilizzano CA per istanza (serverCaMode è impostato su GOOGLE_MANAGED_INTERNAL_CA), i certificati SSL hanno un periodo di scadenza di 10 anni. Prima della scadenza di questi certificati, esegui la rotazione del certificato CA server.

Per le istanze che utilizzano CA condivise (serverCaMode è impostato su GOOGLE_MANAGED_CAS_CA), il periodo di scadenza dei certificati server è di un anno. Prima della scadenza, esegui una rotazione del certificato server. Il certificato dell'autorità di certificazione (CA) radice ha un periodo di scadenza di 25 anni e il certificato CA condiviso subordinato ha un periodo di scadenza di 10 anni. Cloud SQL gestisce la rotazione.

Se utilizzi una CA gestita dal cliente (serverCaMode è impostato su CUSTOMER_MANAGED_CAS_CA), puoi eseguire la rotazione del certificato CA ruotando le CA nel pool di CA che hai creato. Il periodo di scadenza di una CA è in genere di 10 anni, ma puoi configurare un periodo di validità più breve per la tua CA in CA Service.

Per ruotare le CA, utilizza la procedura di rotazione delle CA nel servizio CA. Per saperne di più, consulta Gestione della rotazione delle CA.

Se un client è configurato per verificare la CA o il nome host nel certificato del server, le connessioni del client alle istanze Cloud SQL con certificati del server scaduti non andranno a buon fine. Per evitare interruzioni delle connessioni client, ruota il certificato del server prima della sua scadenza.

Indipendentemente dalla modalità del server CA per istanza, CA condivisa o CA gestita dal cliente, puoi reimpostare la configurazione SSL della tua istanza Cloud SQL in qualsiasi momento.

Passaggi successivi