Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK)

Panoramica

Questa pagina descrive come funzionano le chiavi di crittografia gestite dal cliente (CMEK) con Datastream.

CMEK è la scelta giusta per te?

La CMEK è pensata per le organizzazioni con dati sensibili o regolamentati che richiedono la gestione delle chiavi di crittografia.

Crittografia gestita da Google e crittografia gestita dal cliente

La funzionalità CMEK consente di utilizzare le tue chiavi di crittografia per i dati at-rest in Datastream. Dopo l'aggiunta di una CMEK, ogni volta che viene effettuata una chiamata API, Datastream utilizza la tua chiave per accedere ai dati.

Datastream utilizza le chiavi di crittografia dei dati (DEK) e le chiavi di crittografia delle chiavi (KEK) gestite da Google per criptare Datastream. Esistono due livelli di crittografia:

  1. La DEK cripta i dati.
  2. La KEK cripta la DEK.

Datastream archivia la DEK criptata insieme ai dati criptati e Google gestisce la KEK di Google. Con CMEK, crei una chiave che esegue il wrapping della KEK di Google. CMEK consente di creare, revocare ed eliminare la KEK.

Le CMEK, inclusi software, hardware e chiavi esterne, sono tutte gestite tramite l'API Cloud Key Management Service (KMS).

Quali località supportano i flussi Datastream abilitati per CMEK?

CMEK è disponibile in tutte le località di Datastream.

Informazioni sugli account di servizio

Una volta abilitata la CMEK per i flussi Datastream, devi utilizzare un account di servizio per richiedere l'accesso alla chiave da Cloud Key Management Service.

Per utilizzare una CMEK su un progetto, devi avere un account di servizio e concedere l'accesso alla chiave all'account di servizio. L'account di servizio deve esistere all'interno del progetto. L'account di servizio è visibile in tutte le regioni.

Se utilizzi la console per creare un flusso, Datastream crea automaticamente l'account di servizio quando scegli per la prima volta l'opzione Chiave gestita dal cliente (se non esiste già un account di servizio). Non è necessario disporre di autorizzazioni speciali per l'account utente quando Datastream crea automaticamente l'account di servizio.

Informazioni sulle chiavi

In Cloud Key Management Service, è necessario creare un keyring con una chiave di crittografia, impostata con una località. Quando crei un nuovo stream in Datastream, selezioni questa chiave per criptarlo.

Devi conoscere l'ID chiave e la regione della chiave quando crei nuovi flussi che utilizzano CMEK. Devi inserire i nuovi flussi nella stessa regione della CMEK associata. Puoi creare un progetto sia per le chiavi sia per i flussi di dati oppure progetti diversi per ciascuno.

La CMEK utilizza il seguente formato:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Se Datastream non riesce ad accedere alla chiave (ad esempio se disattivi la versione della chiave), Datastream modifica lo stato dello stream in FAILED e viene visualizzato un messaggio di errore associato. Dopo aver risolto eventuali problemi associati al messaggio di errore in modo che la chiave diventi nuovamente accessibile, Datastream ripristina il flusso automaticamente.

Gestori chiavi esterni

Come CMEK, puoi utilizzare chiavi memorizzate in gestori di chiavi esterni, come Fortanix, Ionic o Thales. Per informazioni su come utilizzare le chiavi esterne con Cloud Key Management Service, consulta Cloud External Key Manager.

Come fai a rendere definitivamente inaccessibili i dati criptati tramite CMEK?

Potrebbero verificarsi delle situazioni in cui vuoi eliminare definitivamente i dati criptati con CMEK. Per farlo, distruggi la versione di CMEK. Non puoi eliminare il keyring o la chiave, ma puoi eliminare le versioni della chiave.

Limitazioni

Durante l'utilizzo di CMEK si applicano le seguenti limitazioni:

  • Non puoi aggiornare CMEK su un flusso in esecuzione.

  • Anche se puoi utilizzare CMEK per criptare le righe del database di origine, non puoi utilizzare queste chiavi per criptare i metadati del flusso, come l'ID stream, l'indirizzo IP del database di origine, i nomi delle tabelle del database di origine e così via.

Utilizzo di CMEK

Ora che conosci CMEK, puoi configurare un account di servizio e le chiavi per CMEK. Inoltre, imparerai a configurare Datastream per utilizzare CMEK. Per saperne di più su CMEK, consulta la panoramica.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Installa e inizializza Cloud SDK.
  7. Assicurati di aver assegnato il ruolo Amministratore Datastream al tuo account utente.

    Vai alla pagina IAM

  8. Attiva Cloud Key Management Service API.

    Abilita l'API

  9. Abilitare l'API Datastream.

    Abilita l'API

Flusso di lavoro per creare un flusso in Datastream con CMEK

  1. Solo utenti gcloud e API: assicurati di avere un account di servizio per ogni progetto che richiede una CMEK. In caso contrario, ecco come creare un account di servizio.
  2. Crea un keyring e una chiave, quindi imposta la posizione per ogni chiave. La località è la regione Google Cloud.
  3. Solo utenti gcloud e API: concedi l'accesso per la chiave all'account di servizio.
  4. Copia o annota l'ID chiave (KMS_KEY_ID) e la posizione della chiave, nonché l'ID (KMS_KEYRING_ID) del keyring. Queste informazioni sono necessarie quando concedi l'accesso alla chiave all'account di servizio.
  5. Vai a un progetto e crea un flusso in Datastream con le seguenti opzioni:
    1. La stessa posizione di CMEK
    2. La configurazione CMEK
    3. L'ID CMEK

Il tuo stream in Datastream è ora abilitato con CMEK.

Crea un account di servizio

Devi creare un account di servizio per ogni progetto che richiede una CMEK.

Per consentire a un utente di gestire gli account di servizio, concedi uno dei seguenti ruoli:

  • Utente account di servizio (roles/iam.serviceAccountUser): include le autorizzazioni per elencare gli account di servizio, recuperare i dettagli su un account di servizio e assumere l'identità di un account di servizio.
  • Amministratore account di servizio (roles/iam.serviceAccountAdmin): include le autorizzazioni per elencare gli account di servizio e ottenere dettagli su un account di servizio. Include anche le autorizzazioni per creare, aggiornare ed eliminare gli account di servizio e per visualizzare o modificare il criterio Datastream su un account di servizio.

Attualmente puoi utilizzare solo i comandi gcloud per creare il tipo di account di servizio necessario per CMEK. Se utilizzi la console, Datastream crea automaticamente questo account di servizio.

Per creare un account di servizio con gcloud, esegui questo comando:

gcloud beta services identity create \
--service=datastream.googleapis.com \
--project=PROJECT_ID

Il comando precedente restituisce il nome di un account di servizio. Potrai utilizzare questo nome dell'account di servizio durante la procedura descritta in Concedere l'accesso alla chiave all'account di servizio.

Crea una chiave

Puoi creare la chiave nello stesso progetto Google Cloud del flusso in Datastream o in un progetto utente separato. La località del keyring di Cloud KMS deve corrispondere alla regione in cui vuoi creare il flusso. Una chiave per più regioni o globale non funzionerà. Se le regioni non corrispondono, non puoi creare lo stream.

Per creare una chiave Cloud KMS:

Console

  1. Nella console Google Cloud, vai alla pagina Chiavi di crittografia.
  2. Fai clic su Crea keyring.
  3. Aggiungi un Nome keyring. Prendi nota di questo nome perché ti serve quando concedi l'accesso alla chiave all'account di servizio.
  4. Aggiungi una Posizione del keyring.
  5. Fai clic su Crea. Viene visualizzata la pagina Crea chiave.
  6. Aggiungi un Nome chiave.
  7. Seleziona uno Scopo (simmetrico o asimmetrico).
  8. Seleziona un Periodo di rotazione e A partire dalla data.
  9. Fai clic su Crea.
  10. Nella tabella Chiavi, fai clic sui tre puntini nell'ultima colonna e seleziona Copia ID risorsa o scrivilo. Questo è KMS_KEY_ID. Devi avere il KMS_KEY_ID quando concedi l'accesso alla chiave all'account di servizio.

gcloud

  1. Crea un nuovo keyring.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    Annota questo nome perché ti serve quando concedi l'accesso alla chiave all'account di servizio.
  2. Crea una chiave sul keyring.
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    Annota questo nome perché ti serve quando concedi l'accesso alla chiave all'account di servizio.

Concedi l'accesso alla chiave all'account di servizio

Devi eseguire questa procedura solo se utilizzi gcloud o l'API.

Per concedere l'accesso all'account di servizio, utilizza il codice seguente:

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-datastream.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Crea un flusso in Datastream con CMEK

Nell'ambito della creazione di un flusso in Datastream, puoi utilizzare la tua CMEK per gestire la crittografia dei dati.

Disabilita e riabilita le versioni delle chiavi

Vedi i seguenti argomenti: