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. Facoltativamente, la connessione SSL/TLS può eseguire la verifica dell'identità del server convalidando il certificato del server installato sull'istanza Cloud SQL e la verifica dell'identità del client convalidando il certificato del 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 del client e utilizzarlo per verificare l'identità della CA e del server Cloud SQL. Facoltativamente, puoi scegliere il tipo di CA che Cloud SQL utilizza per firmare il certificato del server.

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, seleziona Autorità di certificazione interna gestita da Google (Google Cloud console) 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 specificati quando crei un'istanza, questa opzione è il valore predefinito per l'istanza. Non puoi aggiornare un'istanza per utilizzare l'opzione CA per istanza se l'istanza è configurata per utilizzare una CA condivisa o una CA gestita dal cliente.

  • CA condivisa: con questa opzione, viene utilizzata una gerarchia di CA composta da una CA radice e CA server subordinate. Le CA server subordinate in una regione firmano i certificati server e vengono condivise tra le istanze nella regione. L'utilizzo di una gerarchia di CA condivisa è utile quando aumenti il numero di istanze in una regione perché non devi gestire CA univoche per le singole istanze. Passando a una CA condivisa (GOOGLE_MANAGED_CAS_CA), puoi utilizzare un singolo pacchetto di CA regionale per tutte le istanze nella regione, il che può semplificare la configurazione lato client. Cloud SQL ospita e gestisce la CA radice e le CA server subordinate in Certificate Authority Service (CA Service). Google CloudCloud SQL gestisce anche la rotazione della CA radice e delle CA server subordinate e fornisce link disponibili pubblicamente per scaricare i pacchetti di certificati CA. Per scegliere la CA condivisa, seleziona Autorità di certificazione CAS gestita da Google nella Google Cloud console o specifica GOOGLE_MANAGED_CAS_CA per l'impostazione serverCaMode (API Cloud SQL Admin) o il flag --server-ca-mode (gcloud CLI) quando crei o modifichi l'istanza. Puoi aggiornare un'istanza esistente per utilizzare una gerarchia di CA condivisa se utilizzi l'opzione CA per istanza o CA gestita dal cliente.

  • 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. Utilizzando una CA gestita dal cliente (CUSTOMER_MANAGED_CAS_CA), puoi gestire la tua gerarchia di CA e le tue policy di rotazione con CA Service. Questa configurazione ti offre un maggiore controllo e ti aiuta a soddisfare i requisiti di conformità. Per scegliere la CA gestita dal cliente, devi creare un pool di CA e una CA in CA Service. In Cloud SQL, specifica il pool di CA e Autorità di certificazione CAS gestita dal cliente (Google Cloud console), CUSTOMER_MANAGED_CAS_CA per l'impostazione serverCaMode (API Cloud SQL Admin) o il flag --server-ca-mode (gcloud CLI) quando crei o modifichi l'istanza. Puoi aggiornare un'istanza esistente per utilizzare una gerarchia di CA gestita dal cliente se utilizzi l'opzione CA per istanza o CA condivisa.

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

La seguente tabella confronta le tre opzioni di gerarchia di CA.

Funzionalità CA per istanza CA condivisa CA gestita dal cliente
Struttura della 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 Algoritmo di firma digitale con curva ellittica (ECDSA) con chiave a 256 bit con algoritmo SHA384 Algoritmo di firma digitale con curva ellittica (ECDSA) con chiave a 256 bit con algoritmo SHA384
Periodo di validità della CA 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 della CA avviata dall'utente? No. La rotazione della CA è gestita da Cloud SQL
Rotazione del certificato del server avviata dall'utente?
Rotazione automatica del certificato del server? No
Trust anchor della 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. Per la verifica dell'identità del server è necessario verificare il nome host e la CA, poiché le CA server sono condivise tra le istanze. Anche se la CA potrebbe non essere condivisa tra le istanze, potresti voler verificare il nome host e la CA.
Campo SAN (Subject Alternative Name) 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 della versione del proxy di autenticazione Cloud SQL Supporta tutte le versioni del proxy di autenticazione Cloud SQL, la v1 e successive. Richiede la versione 2.13.0 o successive del proxy di autenticazione Cloud SQL. Richiede la versione 2.14.3 o successive del proxy di autenticazione Cloud SQL.
Limitazioni della connessione al servizio Nessuna Non supporta le connessioni dai seguenti Google Cloud servizi: Non supporta le connessioni dai seguenti Google Cloud servizi:
  • Ambiente standard di App Engine
  • Ambiente flessibile di App Engine
  • Servizi Cloud Run che vengono 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 della CA più frequenti e un periodo di validità inferiore a un anno potrebbe influire sul periodo di validità dei certificati server. Per saperne di più, consulta Gestione della rotazione delle autorità di certificazione.

** Per l'opzione CA gestita dal cliente, il periodo di validità predefinito di un certificato server è di un anno. Tuttavia, se configuri un periodo di validità inferiore a un anno per il certificato CA, il certificato 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, consulta Impostazioni del certificato CA e Crea 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 crei l'istanza. Per utilizzare questa impostazione, configura serverCaMode su GOOGLE_MANAGED_INTERNAL_CA quando crei l'istanza. Puoi lasciare l'serverCaMode impostazione di configurazione 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 .

Non puoi aggiornare serverCaMode di un'istanza che utilizza una gerarchia di CA condivisa o gestita dal cliente per utilizzare la gerarchia di CA per istanza.

Il seguente diagramma mostra la gerarchia di CA per istanza.

Diagramma della gerarchia della CA interna per istanza.

CA condivise ospitate da CA Service

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

Quando utilizzi la modalità CA condivisa, i client di database devono considerare attendibili sia la CA radice sia la CA subordinata che emette i certificati server per la tua istanza.

Per considerare attendibili sia la CA radice sia la CA subordinata per la tua istanza, scegli una delle seguenti opzioni:

  • Scarica il global.pem pacchetto per considerare attendibile la CA radice e tutte le relative CA subordinate.
  • Scarica il pacchetto regionale per la località regionale della tua istanza per considerare attendibili la CA radice e le CA subordinate per quella regione. Ad esempio, se la tua istanza si trova nella regione asia-east1, scarica il pacchetto asia-east1.pem.
  • Scarica server-ca.pem per la tua istanza per considerare attendibili la CA radice e la CA subordinata che emette il certificato server per la tua istanza.

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 o modifichi l'istanza. Puoi anche selezionare Autorità di certificazione CAS gestita da Google nella Google Cloud console.

Il seguente diagramma mostra la gerarchia di CA condivisa.

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 tue 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. 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 tuo caso d'uso. Ad esempio, potresti voler creare una CA subordinata se prevedi di configurare una gerarchia di CA radice 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ù, consulta Utilizzare una CA gestita dal cliente.

Come funziona la rotazione del certificato del server

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

Le istanze che utilizzano la gerarchia di CA condivisa o gestita dal cliente possono abilitare la rotazione automatica del certificato del server durante gli aggiornamenti di manutenzione fino a 180 giorni prima della scadenza.

Per le istanze che utilizzano le gerarchie di CA per istanza, CA condivisa o CA gestita 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 quell'istanza. L'email fornisce il nome dell'istanza e indica che Cloud SQL ha aggiunto un nuovo certificato server al progetto. Il certificato 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 server emesso da una CA per istanza o un certificato server emesso dalla CA condivisa o gestita dal cliente.

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

Dopo aver aggiornato tutti i client SQL Server, invia un comando di rotazione (per la CA per istanza) o un comando di rotazione (per la CA condivisa o gestita dal cliente) all'istanza Cloud SQL per passare al nuovo certificato server. Al termine, il vecchio certificato server non viene più riconosciuto e può essere utilizzato solo il nuovo certificato 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), il periodo di scadenza dei certificati server è di 1 anno. Prima della scadenza, esegui la rotazione del certificato del server o abilita la rotazione automatica del certificato del 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 loro 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 della CA in CA Service. Per saperne di più, consulta Gestione della rotazione delle autorità di certificazione.

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

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

Limitazioni

Questa sezione illustra le limitazioni relative alla configurazione dei certificati SSL/TLS e a Cloud SQL.

Limitazioni della connessione al servizio

Passaggi successivi