Utilizzare Secret Manager per gestire i secret in Cloud SQL

Panoramica

La gestione corretta delle informazioni sensibili è una parte essenziale della creazione di un flusso di lavoro di sviluppo sicuro. Per Cloud SQL, ti consigliamo di archiviare le informazioni sensibili come secret creati in Secret Manager. I secret includono chiavi API, password, informazioni sensibili o credenziali che potresti utilizzare per accedere a un sistema riservato.

Secret Manager offre praticità e migliora la sicurezza. Puoi anche applicare il controllo delle versioni ai secret e condividerli con il tuo team. Per scoprire di più su come condividere i secret con il tuo team, consulta Controllo dell'accesso (IAM).

Questa pagina descrive quattro casi d'uso per l'utilizzo di Secret Manager per gestire i secret con Cloud SQL:

Prima di iniziare

Prima di iniziare a utilizzare Secret Manager per gestire i secret in Cloud SQL:

Nomi utente e password

L'utilizzo di Secret Manager per archiviare i nomi utente e le password dei tuoi account utente Cloud SQL come secret è un modo sicuro e affidabile per gestire queste informazioni sensibili.

Innanzitutto, devi creare un utente in Cloud SQL. Durante la creazione di questo utente, devi fornire un nome utente e una password. Per saperne di più sulla creazione di un utente in Cloud SQL, consulta Creare e gestire gli utenti.

Dopo aver creato l'utente, crea un secret in Secret Manager per archiviare il nome utente e la password. In questo modo, le informazioni sensibili non andranno perse. Per saperne di più sulla creazione e sull'accesso ai secret in Secret Manager, consulta Creare e accedere ai secret.

Istanze Cloud SQL

Quando ti connetti all'istanza Cloud SQL, puoi utilizzare Secret Manager per gestire i secret e creare un flusso di lavoro di sviluppo sicuro.

Inizia connettendoti all'istanza Cloud SQL dal computer locale. Una volta avviata l'istanza, utilizza le variabili di ambiente per connetterti. Alcuni valori associati alle variabili sono più sensibili, ad esempio il nome della connessione dell'istanza. Per ogni valore, puoi creare un secret in Secret Manager per archiviare e gestire queste informazioni. Per scoprire di più sull'utilizzo delle variabili di ambiente per connetterti all'istanza Cloud SQL, consulta Configurare ed eseguire l'app di esempio.

Puoi recuperare il nome della connessione dell'istanza archiviato come secret direttamente da Secret Manager. In questo modo, il tuo team può condividere queste informazioni sensibili in più applicazioni e gestirle da una posizione centralizzata. Per saperne di più sul recupero dei secret da Secret Manager, consulta Creare un secret con Secret Manager.

Un'applicazione richiede le informazioni nei secret per essere avviata. Queste informazioni includono i valori associati alle variabili di ambiente utilizzate per connettersi all'applicazione. L'applicazione accede ai secret all'avvio e li utilizza per configurare una connessione a Cloud SQL. Se i secret pertinenti vengono aggiornati in Secret Manager, potrebbe essere necessario riavviare l'applicazione.

Certificati SSL/TLS

Se ti connetti a un'istanza Cloud SQL utilizzando un indirizzo IP pubblico o privato, devi utilizzare un certificato Transport Layer Security (TLS) che protegga i dati durante la trasmissione. Ogni certificato TLS include un certificato di chiave pubblica e una chiave privata. Per saperne di più sulla configurazione dei certificati TLS, consulta Configurare i certificati SSL/TLS.

Puoi salvare il certificato TLS, il certificato di chiave pubblica e la chiave privata come secret per proteggerli e condividerli con il tuo team. Per saperne di più sulla creazione e sull'accesso ai secret, consulta Creare un secret con Secret Manager. Per saperne di più su lla condivisione dei secret, consulta Controllo dell'accesso (IAM).

Scenari di disaster recovery

Se un'istanza principale in Cloud SQL non funziona, puoi promuovere una replica di lettura all'istanza principale. Dopo che la replica di lettura diventa l'istanza principale, devi aggiornare il nome della connessione dell'istanza per riflettere questa promozione. Se il nome della connessione dell'istanza è archiviato in un secret, devi aggiornare il secret con il nome della nuova istanza principale. Per saperne di più, consulta Modificare un secret.

Un modo per utilizzare Secret Manager per i failover è archiviare il nome dell'istanza principale in un secret e poi configurare il connettore Cloud SQL in modo che venga aggiornato ogni volta che il secret viene aggiornato.

Puoi utilizzare il seguente script wrapper bash con il proxy di autenticazione Cloud SQL per rilevare quando il valore del nome della connessione dell'istanza viene aggiornato e poi riavviare il proxy con il nuovo valore:

#!/bin/bash

SECRET_ID="my-secret-id" # TODO(developer): replace this value
REFRESH_INTERVAL=5
PORT=5432                # TODO(developer): change this port as needed

# Get the latest version of the secret and start the proxy
INSTANCE=$(gcloud secrets versions access "latest" --secret="$SECRET_ID")
cloud_sql_proxy -instances="$INSTANCE"=tcp:"$PORT" &
PID=$!

# Every 5s, get the latest version of the secret. If it's changed, restart the
# proxy with the new value.
while true; do
    sleep $REFRESH_INTERVAL
    NEW=$(gcloud secrets versions access "latest" --secret="$SECRET_ID")
    if [ "$INSTANCE" != "$NEW" ]; then
        INSTANCE=$NEW
        kill $PID
        wait $PID
        cloud_sql_proxy -instances="$INSTANCE"=tcp:"$PORT" &
        PID=$!
    fi
done

Per saperne di più sulla creazione e sull'accesso a un secret che contiene il nome della connessione dell'istanza della replica principale, consulta Creare un secret con Secret Manager. Per saperne di più sull'utilizzo del proxy di autenticazione Cloud SQL, consulta Connettersi a Cloud SQL utilizzando il proxy di autenticazione Cloud SQL.

Passaggi successivi

  • Puoi integrare Secret Manager con altri Google Cloud prodotti come Cloud Run.
  • Per scoprire come integrare Secret Manager con il tuo ambiente di sviluppo, consulta i vari esempi disponibili nella pagina Tutti gli esempi di codice di Secret Manager.