Autorizzazione con certificati SSL/TLS

Questa pagina descrive in che modo Cloud SQL utilizza i certificati SSL (Secure Socket Layer)/Transport Layer Security(TLS) autogestiti per connettersi in modo sicuro alle istanze Cloud SQL.

Panoramica

Cloud SQL supporta la connessione a un'istanza mediante il protocollo SSL/TLS (Transport Layer Security). I dati in transito all'interno di un confine fisico controllato da Google o per conto di Google sono generalmente autenticati, ma potrebbero non essere criptati per impostazione predefinita. Se ti connetti a un'istanza utilizzando il suo indirizzo IP pubblico, devi applicare i certificati SSL/TLS in modo che i dati siano protetti durante la trasmissione. SSL/TLS è il protocollo standard per la crittografia dei dati inviati su internet. Se i tuoi dati non sono criptati, chiunque può esaminare i tuoi pacchetti e leggere informazioni riservate.

Il metodo più sicuro di crittografia è noto come crittografia asimmetrica e richiede due chiavi di crittografia, una pubblica e una privata. Essenzialmente, devi utilizzare la chiave pubblica per criptare i dati e la chiave privata per decriptarli. I computer server e client hanno lo stesso insieme di chiavi client.

In Cloud SQL, la chiave pubblica è denominata client-cert.pem e la chiave privata è denominata client-key.pem. Il server genera anche il proprio certificato, denominato server-ca.pem.

L'applicazione richiede tutte e tre le chiavi per connettersi correttamente. Archivia queste chiavi in modo sicuro; chiunque abbia accesso a queste chiavi potrebbe potenzialmente connettere o intercettare i tuoi dati. Non puoi recuperare la chiave privata dal server in un secondo momento, quindi, se la perdi, devi creare nuovi certificati client per sostituire quelli precedentemente in uso. Analogamente, quando il server genera un nuovo file server-ca.pem, devi scaricarlo e archiviarlo sul computer host del client MySQL, sostituendo il file esistente.

Certificati SSL/TLS

Per le connessioni SSL è richiesto un certificato dell'autorità di certificazione (CA) del server. Cloud SQL crea automaticamente un certificato server quando crei l'istanza. Finché il certificato del server è valido, non è necessario gestire attivamente il certificato del server. Tuttavia, il certificato ha una data di scadenza di 10 anni, dopodiché non sarà più valido e i client non saranno in grado di stabilire una connessione sicura alla tua istanza utilizzando il certificato. Puoi anche crearne uno nuovo manualmente.

Puoi creare i certificati client autonomamente. Esiste un limite di 10 certificati client per istanza Cloud SQL.

Come funziona la rotazione dei certificati server

Cloud SQL offre un modo per ruotare il certificato del server, in modo da poter scambiare senza problemi un nuovo certificato prima della scadenza del certificato precedente.

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 in cui viene indicato che è iniziato il processo di rotazione del certificato per l'istanza. L'email fornisce il nome dell'istanza e informa che Cloud SQL ha aggiunto un nuovo certificato del server al progetto. Il certificato del server esistente continua a funzionare normalmente. In effetti, l'istanza ha due certificati server durante questo periodo.

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

Dopo aver aggiornato tutti i client MySQL, invia un comando all'istanza Cloud SQL per eseguire la rotazione del nuovo certificato del server. Una volta eseguita questa operazione, il vecchio certificato del server non sarà più riconosciuto e potrà essere utilizzato solo il nuovo certificato del server.

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

Applicare la crittografia SSL/TLS

La configurazione dell'istanza Cloud SQL in modo da accettare connessioni SSL/TLS consente di attivare le connessioni SSL/TLS per l'istanza, ma le connessioni non criptate e non sicure vengono comunque accettate. Se non richiedi SSL/TLS per tutte le connessioni, le connessioni non criptate sono comunque consentite. Per questo motivo, se accedi all'istanza utilizzando un IP pubblico, ti consigliamo vivamente di applicare il protocollo SSL per tutte le connessioni.

Le impostazioni utente per account possono prevalere sull'impostazione globale attivata o disattivata mediante l'applicazione di SSL. Lo stato SSL di un account utente è indicato nella colonna ssl_type della tabella mysql.user. Per maggiori informazioni, consulta Configurazione di MySQL per l'utilizzo di connessioni criptate.

Usa reti autorizzate

Se la tua istanza Cloud SQL utilizza un indirizzo IP pubblico, devi aggiungere gli indirizzi IP dei client MySQL come reti autorizzate durante la configurazione di SSL/TLS.

In questo caso, i client MySQL sono autorizzati a connettersi solo se i loro indirizzi IP vengono aggiunti all'elenco. Gli indirizzi IP possono essere limitati a un singolo endpoint o essere costituiti da un intervallo in formato CIDR. Ad esempio: 10.50.51.3 o 10.50.51.0/26.

Scadenza del certificato SSL

I certificati SSL associati alle istanze Cloud SQL hanno un periodo di scadenza di 10 anni. Alla scadenza, esegui la rotazione dei certificati SSL. Puoi anche reimpostare la configurazione SSL dell'istanza Cloud SQL in qualsiasi momento.

Passaggi successivi