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?

CMEK è destinato alle organizzazioni che hanno dati sensibili o regolamentati che richiedono la gestione delle chiavi di crittografia.

Confronto tra crittografia gestita da Google e crittografia gestita dal cliente

La funzionalità CMEK ti consente di utilizzare le tue chiavi di crittografia per i dati at-rest in Datastream. Dopo aver aggiunto 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 la CMEK, puoi creare una chiave che esegue il wrapping della KEK di Google. CMEK consente di creare, revocare ed eliminare la KEK.

Le chiavi CMEK, incluse quelle software, hardware ed esterne, vengono gestite tramite l'API Cloud Key Management Service (KMS).

Quali località supportano gli stream Datastream abilitati per CMEK?

CMEK è disponibile in tutte le località Datastream.

Informazioni sugli account di servizio

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

Per utilizzare un CMEK in un progetto, devi disporre di un account di servizio e devi concedere alla chiave l'accesso 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 uno stream, 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 sul tuo account utente quando Datastream crea automaticamente l'account di servizio.

Informazioni sulle chiavi

In Cloud Key Management Service, devi creare un keyring con una chiave di crittografia impostata con una posizione. Quando crei un nuovo flusso in Datastream, selezioni questa chiave per criptarlo.

Quando crei nuovi flussi che utilizzano CMEK, devi conoscere l'ID e la regione della chiave. Devi inserire i nuovi stream nella stessa regione della chiave CMEK associata. Puoi creare un progetto per chiavi e flussi oppure progetti diversi per ognuno.

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), imposta lo stato dello stream su 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 di nuovo accessibile, Datastream riprende automaticamente lo stream.

Gestori di chiavi esterni

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

Come faccio a rendere inaccessibili definitivamente i dati criptati con CMEK?

Potresti trovarti in situazioni in cui vuoi distruggere definitivamente i dati criptati con CMEK. Per farlo, dovrai eliminare la versione di CMEK. Non puoi distruggere il portachiavi o la chiave, ma puoi distruggere le versioni della chiave.

Limitazioni

Quando utilizzi le chiavi CMEK, si applicano le seguenti limitazioni:

  • Non puoi aggiornare CMEK su uno stream in esecuzione.

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

Utilizzo di CMEK

Ora che hai compreso CMEK, puoi configurare un account di servizio e le chiavi per CMEK. Inoltre, scoprirai come configurare Datastream per utilizzare CMEK. Per scoprire di più su CMEK, consulta la sezione Panoramica.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

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

    Vai alla pagina IAM

  8. Enable the Cloud Key Management Service API.

    Enable the API

  9. Abilita l'API Datastream.

    Abilitare 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 CMEK. In caso contrario, ecco come creare un account di servizio.
  2. Crea un portachiavi e una chiave e imposta la posizione di ogni chiave. La località è la regione Google Cloud.
  3. Solo utenti gcloud e API: concedi l'accesso con chiave all'account di servizio.
  4. Copia o annota l'ID chiave (KMS_KEY_ID) e la posizione della chiave e l'ID (KMS_KEYRING_ID) del keyring. Queste informazioni sono necessarie per concedere alla chiave l'accesso all'account di servizio.
  5. Vai a un progetto e crea un flusso in Datastream con le seguenti opzioni:
    1. La stessa posizione della CMEK
    2. La configurazione CMEK
    3. L'ID CMEK

Il flusso in Datastream è ora abilitato con CMEK.

Crea un account di servizio

Devi creare un account di servizio per ogni progetto che richiede 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, ottenere i dettagli di un account di servizio e rubare 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 i dettagli di un account di servizio. Sono incluse anche le autorizzazioni per creare, aggiornare ed eliminare account di servizio, nonché per visualizzare o modificare il criterio Datastream in un account di servizio.

Al momento puoi utilizzare solo i comandi gcloud per creare il tipo di l'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 il seguente comando:

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

Il comando precedente restituisce il nome di un account di servizio. Puoi utilizzare questo nome dell'account di servizio durante la procedura in Concedi alla chiave l'accesso 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 posizione del keyring Cloud KMS deve corrispondere alla regione in cui vuoi creare lo stream. R la chiave multiregionale 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 servirà quando concedi l'accesso alla chiave all'account di servizio.
  4. Aggiungi una posizione per il 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 Data di inizio.
  9. Fai clic su Crea.
  10. Nella tabella Chiavi, fai clic sui tre puntini nell'ultima colonna e seleziona Copia ID risorsa o annota l'ID. Questo è il KMS_KEY_ID. Devi disporre del token KMS_KEY_ID quando concedi all'account di servizio l'accesso alla chiave.

gcloud

  1. Crea un nuovo keyring.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    Annota questo nome perché ti servirà quando concederai l'accesso con 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 servirà quando concederai l'accesso con chiave all'account di servizio.

Concedi alla chiave l'accesso 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 seguente codice:

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

Creare uno stream in Datastream con CMEK

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

Passaggi successivi