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 convalidando il certificato del server installato nell'istanza Cloud SQL e la verifica dell'identità del client convalidando il certificato client installato sul client.

Certificati server

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

Certificati client

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

Connettiti 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 Cloud SQL.

  • Per le connessioni dirette, Google consiglia vivamente di applicare la crittografia SSL/TLS utilizzando l'impostazione della modalità SSL in Cloud SQL. Se vuoi, puoi anche applicare la verifica del certificato client. Per ulteriori 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, oltre alla verifica dell'identità del client e del server, senza che sia necessario scaricare un certificato CA del server e un certificato client.

Per ulteriori informazioni sulle opzioni di connettività Cloud SQL, consulta Informazioni sulle connessioni Cloud SQL.

Per ulteriori informazioni sulla configurazione SSL/TLS lato client, consulta la documentazione del tuo 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 del server per quell'istanza. Cloud SQL crea e gestisce queste CA. Per scegliere la CA per istanza, specifica GOOGLE_MANAGED_INTERNAL_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. Se lasci l'impostazione o l'indicatore non specificato quando crei un'istanza, questa opzione è il valore predefinito per l'istanza.
  • CA condivisa: con questa opzione viene utilizzata una gerarchia CA composta da una CA radice e da CA server subordinate. Le CA del server subordinate in una regione firmano i certificati del server e sono condivise tra le istanze della regione. Cloud SQL ospita e gestisce la CA radice e le CA del server subordinate su Google Cloud Certificate Authority Service (servizio CA). Cloud SQL gestice anche la rotazione delle CA radice e delle CA del server subordinate e fornisce link disponibili pubblicamente ai bundle di certificati CA da scaricare. Per scegliere la 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.

    L'opzione CA condivisa è in Anteprima.

  • CA gestita dal cliente: con questa opzione, puoi creare e gestire la tua gerarchia di CA. Scegli questa opzione se vuoi gestire le tue CA e i tuoi certificati. Per scegliere la CA condivisa, devi creare un pool di CA e una CA nel servizio CA. 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.

    L'opzione CA gestita dal cliente è in anteprima.

Dopo aver creato un'istanza, puoi visualizzare la gerarchia CA configurata per un'istanza Cloud SQL utilizzando il comando gcloud sql instances describe. Per ulteriori informazioni, vedi Visualizzare le informazioni sull'istanza.

La seguente tabella mette a confronto le tre opzioni di gerarchia CA.

Funzionalità CA per istanza CA condivisa CA gestita dal cliente
Struttura dell'account cliente CA separata per ogni istanza CA radice e CA subordinate condivise tra le istanze nella stessa regione Gerarchia CA creata e gestita da te
Attributi crittografici Chiave RSA a 2048 bit con algoritmo SHA256 Algoritmo di firma digitale con curva ellittica (ECDSA) con chiave di 384 bit con algoritmo SHA384 Algoritmo di firma digitale con curva ellittica (ECDSA) con chiave di 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 del 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 L'autorità di certificazione univoca per istanza è il trust anchor per l'istanza corrispondente. L'autorità di certificazione radice e le autorità di certificazione subordinate sono i trust anchor per tutte le istanze in una determinata regione. Le CA che crei e gestisci sono le basi di attendibilità.
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 e della CA è obbligatoria per la verifica dell'identità del server, poiché le CA del server sono condivise tra le istanze. Anche se l'autorità di certificazione potrebbe non essere condivisa tra le istanze, ti consigliamo di verificare anche il nome host.
Campo Subject Alternative Name (SAN) nei certificati del 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.

* Per l'opzione CA gestita dal cliente, il periodo di validità predefinito di un certificato CA in CA Service è di 10 anni. Puoi scegliere di 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 Gestire la rotazione delle CA.

** Per l'opzione dell'autorità di certificazione 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à inferiore. Per ulteriori informazioni sulla configurazione del periodo di validità del certificato CA al momento della creazione, consulta Impostazioni del certificato CA e Creare una CA radice.

CA per istanza ospitata da Cloud SQL

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

Cloud SQL crea una nuova CA del 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 delle CA per istanza.

Diagramma della gerarchia delle CA interne per istanza.

CA condivise ospitate da CA Service

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

Questa modalità CA del server è composta da una CA radice e da CA del server subordinate in ogni regione. Le CA del server subordinate emettono certificati del server e vengono condivise tra le istanze della regione. Cloud SQL gestisce la rotazione delle CA di 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 del server in cui le CA di emissione sono condivise tra le istanze nella stessa regione. Per utilizzare questa impostazione, configura serverCaMode su GOOGLE_MANAGED_CAS_CA quando crei l'istanza.

Il seguente diagramma mostra la gerarchia della CA condivisa.

Diagramma di una gerarchia CA condivisa

CA gestite dal cliente

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

Per utilizzare l'opzione della CA gestita dal cliente in Cloud SQL, devi creare un pool di CA nella stessa regione delle istanze Cloud SQL. Poi crea 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. Il servizio CA fornisce una CA dal pool di CA e la utilizza per emettere il certificato del server per l'istanza.

Quando crei CA in CA Service, puoi creare una CA radice o una CA secondaria a seconda del caso d'uso. Ad esempio, potresti voler creare un'autorità di certificazione subordinata se prevedi di configurare una gerarchia di autorità di certificazione principale o di eseguire il chaining fino a un'autorità di certificazione esterna.

Seleziona l'opzione CA gestita dal cliente solo se vuoi gestire le tue CA e i tuoi certificati. Per ulteriori informazioni, consulta Utilizzare una CA gestita dal cliente. L'opzione CA gestita dal cliente è in anteprima.

Come funziona la rotazione dei certificati del server

Cloud SQL offre modi per girare il certificato del server, in modo che il nuovo certificato possa essere sostituito senza problemi prima della scadenza del vecchio certificato.

Per le istanze che utilizzano l'autorità di certificazione per istanza, l'autorità di certificazione condivisa o le gerarchie di autorità di certificazione gestite dal cliente, circa tre mesi prima della scadenza del certificato del server per un'istanza Cloud SQL, i proprietari del progetto ricevono un'email da Cloud SQL che indica che è iniziata la procedura di rotazione del certificato per l'istanza. L'email fornisce il nome dell'istanza e indica che Cloud SQL ha aggiunto un nuovo certificato del server al progetto. Il certificato del server esistente continuerà a funzionare normalmente. In pratica, l'istanza ha due certificati del 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 un'autorità di certificazione per istanza o un certificato del server emesso dall'autorità di certificazione condivisa o gestita dal cliente.

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

Dopo aver aggiornato tutti i client PostgreSQL, invia un comando di rotazione (per l'autorità di certificazione per istanza) o un comando di rotazione (per l'autorità di certificazione condivisa o gestita dal cliente) all'istanza Cloud SQL per eseguire la rotazione al nuovo certificato del server. Al termine dell'operazione, il vecchio certificato del server non viene più riconosciuto e può essere utilizzato solo il nuovo certificato del server.

I certificati client non sono interessati dalla rotazione dei certificati del 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 del server.

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

Se utilizzi un'autorità di certificazione gestita dal cliente (serverCaMode è impostato su CUSTOMER_MANAGED_CAS_CA)(anteprima), puoi eseguire la rotazione dei certificati 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 in CA Service. Per saperne di più, consulta Gestire la rotazione delle CA.

Se un client è configurato per verificare l'autorità di certificazione 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, gira il certificato del server prima della scadenza.

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

Passaggi successivi