Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK)

Questa pagina descrive il funzionamento delle chiavi di crittografia gestite dal cliente (CMEK) con Datastream.

CMEK è la soluzione giusta per te?

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

Crittografia gestita da Google e crittografia gestita dal cliente

La funzionalità CMEK ti consente di utilizzare le tue chiavi di crittografia per i dati inattivi 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 chiavi di crittografia dei dati (DEK) e chiavi di crittografia della chiave (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 ti 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?

La chiave CMEK è disponibile in tutte le posizioni di Datastream.

Informazioni sugli account di servizio

Quando i tuoi stream Datastream hanno CMEK abilitata, devi utilizzare un account di servizio per richiedere l'accesso alle chiavi da Cloud Key Management Service.

Per utilizzare una chiave CMEK in un progetto, devi disporre di un account di servizio e devi concedere l'accesso alla chiave al account di servizio. Il 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 il account di servizio la prima volta che scegli l'opzione Chiave gestita dal cliente (se non esiste già un account di servizio). Non devi disporre di autorizzazioni speciali per il tuo account utente quando Datastream crea automaticamente il account di servizio.

Informazioni sulle chiavi

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

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

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), lo stato dello stream viene modificato in FAILED e viene visualizzato un messaggio di errore associato. Dopo aver risolto i problemi associati al messaggio di errore in modo che la chiave diventi di nuovo accessibile, Datastream riprende automaticamente lo stream.

Gestori chiavi esterni

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

Come si rendono inaccessibili in modo permanente i dati criptati con CMEK?

Potresti trovarti in situazioni in cui vuoi eliminare definitivamente i dati criptati con CMEK. Per farlo, distruggi la versione CMEK. Non puoi eliminare il portachiavi o la chiave, ma puoi eliminare 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 tu possa utilizzare CMEK per criptare le righe del database di origine, non puoi utilizzare queste chiavi per criptare i metadati dello stream, 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 hai compreso il funzionamento di CMEK, puoi configurare un account di servizio e le chiavi per CMEK. Inoltre, imparerai a configurare Datastream per utilizzare CMEK.

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. Verify 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. Verify that billing is enabled for your Google Cloud project.

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

    Vai alla pagina IAM

  8. Enable the Cloud Key Management Service API.

    Enable the API

  9. Abilitare l'API Datastream.

    Abilita l'API

  10. Workflow per creare uno stream in Datastream con CMEK

    1. Solo utenti gcloud e API:assicurati di avere un service account 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 per ogni chiave. La località è la regione Google Cloud .
    3. Solo utenti gcloud e API: concedi l'accesso della chiave al service account.
    4. Copia o annota l'ID chiave (KMS_KEY_ID) e la posizione della chiave, nonché l'ID (KMS_KEYRING_ID) del portachiavi. Queste informazioni sono necessarie quando concedi l'accesso della chiave al account di servizio.
    5. Vai a un progetto e crea uno stream in Datastream con le seguenti opzioni:
      1. La stessa posizione della chiave 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 CMEK.

    Per consentire a un utente di gestire i service account, concedi uno dei seguenti ruoli:

    • Utente service account (roles/iam.serviceAccountUser): include le autorizzazioni per elencare i service account, ottenere 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 service account e per visualizzare o modificare il criterio Datastream su un account di servizio.

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

    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 un nome del account di servizio. Utilizzi questo nome del account di servizio durante la procedura descritta in Concedere l'accesso della chiave al service account.

    Crea una chiave

    Puoi creare la chiave nello stesso progetto Google Cloud dello stream in Datastream o in un progetto utente separato. La posizione delle chiavi automatizzate di Cloud KMS deve corrispondere alla regione in cui vuoi creare lo stream. Una 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 crittografiche.
    2. Fai clic su Crea keyring.
    3. Aggiungi un Nome chiave automatizzata. Prendi nota di questo nome perché ti servirà quando concedi alla chiave l'accesso alaccount di serviziot.
    4. Aggiungi una posizione chiave automatizzata.
    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 una 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 annotalo. Questo è il KMS_KEY_ID. Devi disporre di KMS_KEY_ID quando concedi l'accesso alla chiave al account di servizio.

    gcloud

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

    Concedi alla chiave l'accesso al account di servizio

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

    Per concedere l'accesso al 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

    Crea uno stream in Datastream con CMEK

    Quando crei uno stream in Datastream, puoi utilizzare la tua CMEK per gestire la crittografia dei dati.

    Passaggi successivi