Utilizzo delle chiavi di crittografia gestite dal cliente

Questa guida descrive l'utilizzo di CMEK per Dataform e illustra come attivare la crittografia CMEK dei repository Dataform.

Per impostazione predefinita, Dataform cripta i contenuti inattivi dei clienti. Dataform gestisce la crittografia per conto tuo senza che tu debba fare altro. Questa opzione è denominata Crittografia predefinita di Google.

Se vuoi controllare le tue chiavi di crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) in Cloud KMS con i servizi integrati con CMEK, tra cui Dataform. L'utilizzo delle chiavi Cloud KMS ti consente di controllare il loro livello di protezione, la posizione, la pianificazione della rotazione, le autorizzazioni di utilizzo e di accesso e i confini di crittografia. L'utilizzo di Cloud KMS ti consente inoltre di monitorare l'utilizzo delle chiavi, visualizzare i log di controllo e controllare i cicli di vita delle chiavi. Invece che essere di proprietà e gestite da Google, le chiavi di crittografia della chiave (KEK) simmetriche che proteggono i tuoi dati sono sotto il tuo controllo e vengono gestite in Cloud KMS.

Dopo aver configurato le risorse con le chiavi CMEK, l'esperienza di accesso alle risorse Dataform è simile all'utilizzo della crittografia predefinita di Google. Per saperne di più sulle opzioni di crittografia, consulta Chiavi di crittografia gestite dal cliente (CMEK).

Crittografia CMEK dei dati del repository

Quando applichi la crittografia CMEK a un repository Dataform, tutti i dati dei clienti gestiti da Dataform in quel repository vengono criptati at-rest utilizzando la chiave di protezione CMEK impostata per il repository. Questi dati includono:

  • Contenuti del repository Git del repository Dataform e delle relative aree di lavoro
  • Query SQL compilate ed errori di compilazione
  • Query SQL memorizzate delle azioni del flusso di lavoro
  • Dettagli degli errori delle azioni del flusso di lavoro eseguite

Dataform utilizza le chiavi di protezione CMEK nei seguenti scenari:

Dataform gestisce la crittografia dei dati dei clienti associati solo alle risorse Dataform. Dataform non gestisce la crittografia degli dati dei clienti creati in BigQuery tramite l'esecuzione degli flussi di lavoro Dataform. Per criptare i dati creati e archiviati in BigQuery, configura CMEK per BigQuery.

Chiavi supportate

Dataform supporta i seguenti tipi di chiavi CMEK:

La disponibilità delle chiavi varia in base al tipo di chiave e alla regione. Per ulteriori informazioni sulla disponibilità geografica delle chiavi CMEK, consulta Località Cloud KMS.

Limitazioni

Dataform supporta CMEK con le seguenti limitazioni:

  • La dimensione massima di un repository con crittografia CMEK è 512 MB.
  • La dimensione massima di uno spazio di lavoro in un repository con crittografia CMEK è 512 MB.
  • Non puoi applicare una chiave di protezione CMEK a un repository dopo la sua creazione. Puoi applicare la crittografia CMEK solo durante la creazione del repository.
  • Non puoi rimuovere una chiave di protezione CMEK da un repository.
  • Non puoi modificare una chiave di protezione CMEK per un repository.
  • Se imposti una chiave CMEK di Dataform predefinita per il tuo progetto Google Cloud, tutti i nuovi repository creati nella posizione del progetto Google Cloud devono essere criptati con CMEK. Quando crei un nuovo repository nella posizione del progetto Google Cloud, puoi applicare la chiave CMEK predefinita di Dataform o un'altra chiave CMEK, ma non puoi applicare la crittografia at rest predefinita.
  • Se modifichi il valore di una chiave CMEK predefinita di Dataform, il valore precedente si applica ai repository preesistenti e il valore aggiornato si applica ai repository creati dopo la modifica.
  • Puoi impostare una sola chiave CMEK predefinita di Dataform per ogni posizione dei repository del progetto Google Cloud.
  • I criteri dell'organizzazione CMEK non sono disponibili.
  • L'utilizzo delle chiavi Cloud HSM e Cloud EKM è soggetto a disponibilità. Per ulteriori informazioni sulla disponibilità delle chiavi nelle varie località, consulta Località Cloud KMS.

Quote di Cloud KMS e Dataform

Puoi utilizzare le chiavi Cloud HSM e Cloud EKM con Dataform. Quando utilizzi CMEK in Dataform, i tuoi progetti possono consumare le quote per le richieste crittografiche di Cloud KMS. Ad esempio, i repository Dataform con crittografia CMEK possono utilizzare queste quote per ogni modifica ai contenuti del repository. Le operazioni di crittografia e decrittografia che utilizzano le chiavi CMEK influiscono sulle quote di Cloud KMS solo se utilizzi chiavi hardware (Cloud HSM) o esterne (Cloud EKM). Per ulteriori informazioni, consulta Quote di Cloud KMS.

Gestione delle chiavi

Utilizza Cloud KMS per tutte le operazioni di gestione delle chiavi. Dataform non può rilevare o applicare modifiche alle chiavi finché non vengono propagate da Cloud KMS. Per alcune operazioni, come la disattivazione o l'eliminazione di una chiave, la propagazione può richiedere fino a tre ore. Le modifiche alle autorizzazioni in genere si propagano molto più rapidamente.

Dopo aver creato il repository, Dataform chiama Cloud KMS per assicurarsi che la chiave sia ancora valida durante ogni operazione sui dati del repository criptati.

Se Dataform rileva che la chiave Cloud KMS è stata disattivata o distrutta, tutti i dati archiviati nel repository corrispondente diventano inaccessibili.

Se le chiamate di Dataform a Cloud KMS rilevano che una chiave precedentemente disattivata è stata riattivata, Dataform ripristina automaticamente l'accesso.

Utilizzare le chiavi esterne con Cloud EKM

In alternativa all'utilizzo di chiavi che si trovano su Cloud KMS, puoi utilizzare le chiavi che si trovano in un partner di gestione delle chiavi esterne supportato. A tale scopo, utilizza Cloud External Key Manager (Cloud EKM) per creare e gestire le chiavi esterne, che sono puntatori a chiavi esterne a Google Cloud. Per ulteriori informazioni, consulta Cloud External Key Manager.

Dopo aver creato una chiave esterna con Cloud EKM, puoi applicarla a un nuovo repository Dataform fornendo l'ID della chiave al momento della creazione del repository. Questa procedura è uguale all'applicazione di una chiave Cloud KMS a un nuovo repository.

Utilizzare le chiavi CMEK predefinite di Dataform

Per criptare più repository Dataform con la stessa chiave CMEK, puoi impostare una chiave CMEK Dataform predefinita per il tuo progetto Google Cloud. Devi specificare la posizione del progetto Google Cloud per la chiave CMEK predefinita di Dataform. Puoi impostare una sola chiave CMEK predefinita per progetto Google Cloud.

Dopo aver impostato una chiave CMEK predefinita di Dataform, Dataform applica la chiave a tutti i nuovi repository creati nella posizione del progetto Google Cloud per impostazione predefinita. Quando crei un repository, puoi utilizzare la chiave predefinita o selezionare un'altra chiave CMEK.

Come viene gestito lo stato di una chiave non disponibile

In rari casi, ad esempio durante i periodi in cui Cloud KMS non è disponibile, Dataform potrebbe non essere in grado di recuperare lo stato della chiave da Cloud KMS.

Se il repository Dataform è protetto da una chiave attivata nel momento in cui Dataform non è in grado di comunicare con Cloud KMS, i dati del repository criptati diventano inaccessibili.

I dati del repository criptati rimangono inaccessibili finché Dataform non riesce a ricollegarsi a Cloud KMS e Cloud KMS non risponde che la chiave è attiva.

Al contrario, se il repository Dataform è protetto da una chiave disabilitata nel momento in cui Dataform non riesce per la prima volta a comunicare con Cloud KMS, i dati del repository criptati rimangono inaccessibili finché non riesce a riconnettersi a Cloud KMS e non hai riattivato la chiave.

Logging

Puoi eseguire il controllo delle richieste inviate da Dataform a Cloud KMS per tuo conto in Cloud Logging, se hai abilitato la registrazione degli audit per l'API Cloud KMS nel tuo progetto. Queste entrate dei log di Cloud KMS sono visibili in Cloud Logging. Per ulteriori informazioni, consulta la pagina relativa alla visualizzazione dei log.

Prima di iniziare

  • Decidi se eseguire Dataform e Cloud KMS in progetti diversi o nello stesso progetto. Ti consigliamo di utilizzare progetti separati per un maggiore controllo sulle autorizzazioni. Per informazioni sugli ID progetto e sui numeri di progetto Google Cloud, consulta Identificazione dei progetti.

  • Per il progetto Google Cloud che esegue Cloud KMS:

    1. Abilita l'API Cloud Key Management Service.
    2. Crea un keyring e una chiave come descritto in Creare keyring e chiavi. Crea il keyring in una posizione corrispondente a quella del repository Dataform:
      • I repository devono utilizzare chiavi regionali corrispondenti. Ad esempio, un repository nella regione asia-northeast3 deve essere protetto con una chiave di un keyring situato in asia-northeast3.
      • La regione global non può essere utilizzata con Dataform.
      Per ulteriori informazioni sulle località supportate per Dataform e Cloud KMS, consulta Località Cloud.

Attivare CMEK

Dataform può accedere alla chiave per tuo conto dopo che hai assegnato il ruolo Cloud KMS Autore crittografia/decrittografia CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) all'account di servizio Dataform predefinito.

L'ID account di servizio Dataform predefinito ha il seguente formato:

service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com

Per concedere il ruolo Autore crittografia/decrittografia CryptoKey all'account di servizio Dataform predefinito:

Console

  1. Apri la pagina Gestione delle chiavi nella console Google Cloud.

    Apri la pagina Gestione delle chiavi

  2. Fai clic sul nome del keyring che contiene la chiave.

  3. Fai clic sulla casella di controllo della chiave di crittografia a cui vuoi aggiungere il ruolo. Viene visualizzata la scheda Autorizzazioni.

  4. Fai clic su Aggiungi membro.

  5. Inserisci l'indirizzo email dell'account di servizio

    • Se l'account di servizio è già presente nell'elenco dei membri, ha ruoli esistenti. Fai clic sull'elenco a discesa del ruolo corrente per l'account di servizio.
  6. Fai clic sull'elenco a discesa Seleziona un ruolo, poi su Cloud KMS e infine sul ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS.

  7. Fai clic su Salva per applicare il ruolo all'account di servizio.

gcloud

Puoi utilizzare Google Cloud CLI per assegnare il ruolo:

gcloud kms keys add-iam-policy-binding \
    --project=KMS_PROJECT_ID \
    --member serviceAccount:SERVICE_ACCOUNT \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --location=KMS_KEY_LOCATION \
    --keyring=KMS_KEY_RING \
    KMS_KEY

Sostituisci quanto segue:

  • KMS_PROJECT_ID: l'ID del tuo progetto Google Cloud su cui è in esecuzione Cloud KMS
  • SERVICE_ACCOUNT: l'indirizzo email del tuo account di servizio Dataform predefinito
  • KMS_KEY_LOCATION: il nome della posizione della chiave Cloud KMS
  • KMS_KEY_RING: il nome della raccolta di chiavi della chiave Cloud KMS
  • KMS_KEY: il nome della chiave Cloud KMS

Impostare una chiave CMEK predefinita di Dataform

L'impostazione di una chiave CMEK Dataform predefinita per il tuo progetto Google Cloud ti consente di criptare più repository con la stessa chiave CMEK. Per ulteriori informazioni, consulta Utilizzare una chiave predefinita per i repository Dataform.

Per impostare o modificare una chiave CMEK predefinita, chiama l'API Dataform nella seguente richiesta:

curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":"projects/PROJECT_ID/locations/PROJECT_LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY"}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config

Sostituisci quanto segue:

  • KMS_KEY_RING: il nome della raccolta di chiavi della chiave Cloud KMS.
  • KMS_KEY: il nome della chiave Cloud KMS.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • PROJECT_LOCATION: il nome della località del tuo progetto Google Cloud.

Rimuovere una chiave CMEK predefinita di Dataform

Per rimuovere una chiave CMEK Dataform predefinita dal tuo progetto Google Cloud, chiama l'API Dataform nella seguente richiesta:

curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":""}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • PROJECT_LOCATION: il nome della località del progetto Google Cloud in cui vuoi annullare l'impostazione della CMEK predefinita.

Verificare se è impostata una chiave CMEK predefinita di Dataform

Per verificare se è impostata una chiave CMEK Dataform predefinita per il tuo progetto Google Cloud, chiama l'API Dataform nella seguente richiesta:

curl -X GET \
-H "Content-Type: application/json" \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • PROJECT_LOCATION: il nome della località del tuo progetto Google Cloud.

Applicare CMEK a un repository

Puoi applicare la protezione CMEK a un repository Dataform durante la creazione del repository.

Per applicare la crittografia CMEK a un repository Dataform, seleziona la crittografia con la chiave CMEK predefinita di Dataform o specifica una chiave Cloud KMS univoca quando crei il repository. Per le istruzioni, vedi Creare un repository.

Non puoi modificare il meccanismo di crittografia di un repository Dataform dopo la creazione del repository.

Per ulteriori informazioni, vedi Restrizioni.

Passaggi successivi