Chiavi Cloud KMS gestite dal cliente
Per impostazione predefinita, BigQuery cripta i contenuti archiviati at-rest. BigQuery gestisce questa crittografia predefinita per conto tuo senza che tu debba fare altro. Innanzitutto, i dati in una tabella BigQuery vengono criptati utilizzando una chiave di crittografia dei dati. Successivamente, queste chiavi di crittografia dei dati vengono criptate con chiavi di crittografia delle chiavi, un processo noto come crittografia envelope. Le chiavi di crittografia delle chiavi non criptano direttamente i tuoi dati, ma vengono utilizzate per criptare le chiavi di crittografia dei dati che Google utilizza per criptare i tuoi dati.
Se vuoi controllare personalmente la crittografia, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) per BigQuery. Anziché essere di proprietà di Google e gestire le chiavi di crittografia delle chiavi che proteggono i tuoi dati, controlli e gestisci le chiavi di crittografia delle chiavi in Cloud KMS. Questo documento fornisce dettagli sulla creazione manuale delle chiavi Cloud KMS per BigQuery.
Scopri di più sulle opzioni di crittografia su Google Cloud. Per informazioni specifiche su CMEK, inclusi vantaggi e limitazioni, consulta Chiavi di crittografia gestite dal cliente.
Prima di iniziare
Tutti gli asset di dati che risiedono nello spazio di archiviazione gestito di BigQuery supportano CMEK. Tuttavia, se esegui query anche sui dati archiviati in un'origine dati esterna come Cloud Storage che contiene dati criptati con CMEK, la crittografia dei dati viene gestita da Cloud Storage. Ad esempio, le tabelle BigLake supportano i dati criptati con CMEK in Cloud Storage.
BigQuery e le tabelle BigLake non supportano le chiavi di crittografia fornite dal cliente (CSEK).
Decidi se eseguire BigQuery e Cloud KMS nello stesso progetto Google Cloud o in progetti diversi. Ai fini degli esempi di documentazione, viene utilizzata la seguente convenzione:
PROJECT_ID
: l'ID progetto del progetto che esegue BigQueryPROJECT_NUMBER
: il numero di progetto del progetto che esegue BigQueryKMS_PROJECT_ID
: l'ID progetto del progetto che esegue Cloud KMS (anche se si tratta dello stesso progetto che esegue BigQuery)
BigQuery viene attivato automaticamente nei nuovi progetti. Se utilizzi un progetto preesistente per eseguire BigQuery, abilita l'API BigQuery.
Per il progetto Google Cloud che esegue Cloud KMS, abilita l'API Cloud Key Management Service.
Una chiamata di decriptazione viene eseguita utilizzando Cloud KMS una volta per query a una tabella criptata con CMEK. Per maggiori informazioni, consulta la pagina Prezzi di Cloud KMS.
Specifica di crittografia
Le chiavi Cloud KMS utilizzate per proteggere i dati in BigQuery sono chiavi AES-256. Queste chiavi vengono utilizzate come chiavi di crittografia della chiave in BigQuery, in quanto criptano le chiavi di crittografia dei dati che criptano i tuoi dati.
Creazione manuale o automatica delle chiavi
Puoi creare le chiavi CMEK manualmente o utilizzare Cloud KMS Autokey. Autokey semplifica la creazione e la gestione delle chiavi CMEK automatizzando il provisioning e l'assegnazione. Con Autokey, non devi eseguire il provisioning di chiavi automatizzate, chiavi e service account in anticipo. Vengono invece generati on demand nell'ambito della creazione di risorse BigQuery. Per ulteriori informazioni, consulta la panoramica di Autokey.
Creare manualmente chiavi automatizzate e chiave
Per il progetto Google Cloud che esegue Cloud KMS, crea un keyring e una chiave come descritto in Creazione di keyring e chiavi. Crea il portachiavi in una posizione che corrisponda a quella del tuo set di dati BigQuery:
Qualsiasi set di dati multiregionale deve utilizzare un portachiavi multiregionale proveniente da una località corrispondente. Ad esempio, un set di dati nella regione
US
deve essere protetto con un portachiavi della regioneus
e un set di dati nella regioneEU
deve essere protetto con un portachiavi della regioneeurope
.I set di dati regionali devono utilizzare chiavi regionali corrispondenti. Ad esempio, un set di dati nella regione
asia-northeast1
deve essere protetto con un portachiavi della regioneasia-northeast1
.Non puoi utilizzare la regione
global
quando configuri CMEK per BigQuery nella console Google Cloud . Tuttavia, puoi utilizzare la regioneglobal
quando configuri CMEK per BigQuery utilizzando lo strumento a riga di comando bq o GoogleSQL.
Per ulteriori informazioni sulle località supportate per BigQuery e Cloud KMS, consulta Località cloud.
Concedere l'autorizzazione di crittografia e decrittografia
Per proteggere i tuoi dati BigQuery con una chiave CMEK, concedi all'account di servizio BigQuery l'autorizzazione per criptare e decriptare utilizzando questa chiave. Il ruolo Cloud KMS CryptoKey Encrypter/Decrypter concede questa autorizzazione.
Assicurati che il account di servizio sia stato creato, quindi utilizza la consoleGoogle Cloud per determinare l'ID service account BigQuery. Successivamente, fornisci all'account di servizio il ruolo appropriato per criptare e decriptare utilizzando Cloud KMS.
Attiva la creazione del account di servizio
L'account di servizio BigQuery non viene creato inizialmente quando
crei un progetto. Per attivare la creazione del service account, inserisci un comando che lo utilizzi, ad esempio il comando bq show --encryption_service_account
o chiama il metodo API
projects.getServiceAccount. Ad esempio:
bq show --encryption_service_account --project_id=PROJECT_ID
Determinare l'ID account di servizio
L'ID account di servizio BigQuery ha il seguente formato:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Le seguenti tecniche mostrano come determinare l'ID account di servizio BigQuery per il tuo progetto.
Console
Vai alla pagina Dashboard nella console Google Cloud .
Fai clic sull'elenco a discesa Seleziona da nella parte superiore della pagina. Nella finestra Seleziona da visualizzata, seleziona il tuo progetto.
Sia l'ID progetto che il numero di progetto vengono visualizzati nella scheda Informazioni sul progetto della dashboard del progetto:
Nella seguente stringa, sostituisci PROJECT_NUMBER con il numero del tuo progetto. La nuova stringa identifica l'ID del tuo account di servizio BigQuery.
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
bq
Utilizza il comando bq show
con il flag --encryption_service_account
per
determinare l'IDaccount di serviziot:
bq show --encryption_service_account
Il comando mostra l'ID del account di servizio:
ServiceAccountID ------------------------------------------------------------- bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Assegnare il ruolo Crittografo/Decrittografo
Assegna il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS all'account di servizio di sistema BigQuery che hai copiato negli appunti. Questo account ha il seguente formato:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
Console
Apri la pagina Chiavi crittografiche nella console Google Cloud .
Fai clic sul nome della chiave automatizzata che contiene la chiave.
Fai clic sulla casella di controllo della chiave di crittografia a cui vuoi aggiungere il ruolo. Si apre la scheda Autorizzazioni.
Fai clic su Aggiungi membro.
Inserisci l'indirizzo email del account di servizio,
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
.- Se il account di servizio è già presente nell'elenco dei membri, dispone di
ruoli esistenti. Fai clic sull'elenco a discesa del ruolo attuale per il account di servizio
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
.
- Se il account di servizio è già presente nell'elenco dei membri, dispone di
ruoli esistenti. Fai clic sull'elenco a discesa del ruolo attuale per il account di servizio
Fai clic sull'elenco a discesa Seleziona un ruolo, fai clic su Cloud KMS e poi sul ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS.
Fai clic su Salva per applicare il ruolo all'account di servizio
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
.
gcloud
Puoi utilizzare Google Cloud CLI per assegnare il ruolo:
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY
Sostituisci quanto segue:
KMS_PROJECT_ID
: l'ID del tuo Google Cloud progetto che esegue Cloud KMSPROJECT_NUMBER
: il numero di progetto (non l'ID progetto) del tuo progetto Google Cloud che esegue BigQueryKMS_KEY_LOCATION
: il nome della località della tua chiave Cloud KMSKMS_KEY_RING
: il nome del portachiavi della tua chiave Cloud KMSKMS_KEY
: il nome della chiave Cloud KMS
ID risorsa della chiave
Per l'utilizzo di CMEK è necessario l'ID risorsa per la chiave Cloud KMS, come mostrato negli esempi. Questa chiave è sensibile alle maiuscole e minuscole e ha il seguente formato:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY
Recupera l'ID risorsa della chiave
Apri la pagina Chiavi crittografiche nella console Google Cloud .
Fai clic sul nome della chiave automatizzata che contiene la chiave.
Per la chiave di cui stai recuperando l'ID risorsa, fai clic su Altro more_vert.
Fai clic su Copia nome risorsa. L'ID risorsa della chiave viene copiato negli appunti. L'ID risorsa è noto anche come nome della risorsa.
Crea una tabella protetta da Cloud KMS
Per creare una tabella protetta da Cloud KMS:
Console
Apri la pagina BigQuery nella console Google Cloud .
Nel riquadro Spazio di esplorazione, espandi il progetto e seleziona un set di dati.
Espandi l'opzione
Azioni e fai clic su Apri.Nel riquadro dei dettagli, fai clic su Crea tabella
.Nella pagina Crea tabella, inserisci le informazioni necessarie per creare una tabella vuota con una definizione dello schema. Prima di fare clic su Crea tabella, imposta il tipo di crittografia e specifica la chiave Cloud KMS da utilizzare con la tabella:
- Fai clic su Opzioni avanzate.
- Fai clic su Chiave gestita dal cliente.
- Seleziona la chiave. Se la chiave che vuoi utilizzare non è elencata, inserisci l'ID risorsa della chiave.
Fai clic su Crea tabella.
SQL
Utilizza l'istruzione CREATE TABLE
con l'opzione kms_key_name
:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
CREATE TABLE DATASET_ID.TABLE_ID ( name STRING, value INT64 ) OPTIONS ( kms_key_name = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Puoi utilizzare lo strumento a riga di comando bq con il flag --destination_kms_key
per creare la tabella. Il flag --destination_kms_key
specifica l'ID risorsa della chiave da utilizzare con la tabella.
Per creare una tabella vuota con uno schema:
bq mk --schema name:string,value:integer -t \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID
Per creare una tabella da una query:
bq query --destination_table=DATASET_ID.TABLE_ID \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ "SELECT name,count FROM DATASET_ID.TABLE_ID WHERE gender = 'M' ORDER BY count DESC LIMIT 6"
Per saperne di più sullo strumento a riga di comando bq, consulta Utilizzo dello strumento a riga di comando bq.
Terraform
Utilizza la risorsa
google_bigquery_table
.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
L'esempio seguente crea una tabella denominata mytable
e utilizza anche le risorse
google_kms_crypto_key
e
google_kms_key_ring
per specificare una
chiave Cloud Key Management Service per la
tabella.
Per eseguire questo esempio, devi abilitare l'API Cloud Resource Manager e l'API Cloud Key Management Service.
Per applicare la configurazione di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).
-
In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione
.tf
, ad esempiomain.tf
. In questo tutorial, il file viene denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel file
main.tf
appena creato.(Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi effettuare questa operazione una sola volta per directory.
terraform init
(Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
aggiornerà corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il comando seguente e inserendo
yes
al prompt:terraform apply
Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).
- Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Proteggi una nuova tabella con una chiave di crittografia gestita dal cliente impostando la proprietà Table.encryption_configuration su un oggetto EncryptionConfiguration prima di creare la tabella.Esegui una query su una tabella protetta da una chiave Cloud KMS
Non sono necessari accordi speciali per eseguire query su una tabella protetta da Cloud KMS. BigQuery archivia il nome della chiave utilizzata per criptare i contenuti della tabella e la utilizza quando viene eseguita una query su una tabella protetta da Cloud KMS.
Tutti gli strumenti esistenti, la console BigQuery e lo strumento a riga di comando bq vengono eseguiti allo stesso modo delle tabelle criptate per impostazione predefinita, a condizione che BigQuery abbia accesso alla chiave Cloud KMS utilizzata per criptare il contenuto della tabella.
Proteggere i risultati delle query con una chiave Cloud KMS
Per impostazione predefinita, i risultati della query vengono archiviati in una tabella temporanea criptata con un Google-owned and Google-managed encryption key. Se il progetto ha già una chiave predefinita, la chiave viene applicata alla tabella temporanea (predefinita) dei risultati della query. Per utilizzare una chiave Cloud KMS per criptare i risultati della query, seleziona una delle seguenti opzioni:
Console
Apri la pagina BigQuery nella console Google Cloud .
Fai clic su Crea nuova query.
Inserisci una query GoogleSQL valida nell'area di testo della query.
Fai clic su Altro, poi su Impostazioni query e infine su Opzioni avanzate.
Seleziona Crittografia gestita dal cliente.
Seleziona la chiave. Se la chiave che vuoi utilizzare non è elencata, inserisci l'ID risorsa della chiave.
Fai clic su Salva.
Fai clic su Esegui.
bq
Specifica il flag --destination_kms_key
per proteggere la tabella di destinazione o
i risultati della query (se utilizzi una tabella temporanea) con la chiave Cloud KMS.
Il flag --destination_kms_key
specifica l'ID risorsa della chiave da utilizzare con la destinazione o la tabella risultante.
(Facoltativo) Utilizza il flag --destination_table
per specificare la destinazione dei
risultati della query. Se non viene utilizzato --destination_table
, i risultati della query vengono
scritti in una tabella temporanea.
Per eseguire una query su una tabella:
bq query \ --destination_table=DATASET_ID.TABLE_ID \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ "SELECT name,count FROM DATASET_ID.TABLE_ID WHERE gender = 'M' ORDER BY count DESC LIMIT 6"
Per saperne di più sullo strumento a riga di comando bq, consulta Utilizzo dello strumento a riga di comando bq.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Proteggi una nuova tabella con una chiave di crittografia gestita dal cliente impostando la proprietà Table.encryption_configuration su un oggetto EncryptionConfiguration prima di creare la tabella.Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Proteggi una nuova tabella con una chiave di crittografia gestita dal cliente impostando la proprietà Table.encryption_configuration su un oggetto EncryptionConfiguration prima di creare la tabella.Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Proteggi una tabella di destinazione della query con una chiave di crittografia gestita dal cliente impostando la proprietà QueryJobConfig.destination_encryption_configuration su un EncryptionConfiguration ed esegui la query.
Carica una tabella protetta da Cloud KMS
Per caricare un file di dati in una tabella protetta da Cloud KMS:
Console
Proteggi una tabella di destinazione del job di caricamento con una chiave di crittografia gestita dal cliente specificando la chiave quando carichi la tabella.
Apri la pagina BigQuery nella console Google Cloud .
Nel riquadro Spazio di esplorazione, espandi il progetto e seleziona un set di dati.
Nel riquadro dei dettagli, fai clic su Crea tabella.
Inserisci le opzioni che vuoi utilizzare per caricare la tabella, ma prima di fare clic su Crea tabella, fai clic su Opzioni avanzate.
In Crittografia, seleziona Chiave gestita dal cliente.
Fai clic sull'elenco a discesa Seleziona una chiave gestita dal cliente e seleziona la chiave da utilizzare. Se non vedi chiavi disponibili, inserisci un ID risorsa chiave.
Fai clic su Crea tabella.
bq
Proteggi una tabella di destinazione del job di caricamento con una chiave di crittografia gestita dal cliente impostando il flag --destination_kms_key
.
bq --location=LOCATION load \ --autodetect \ --source_format=FORMAT \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET.TABLE \ path_to_source
bq load \ --autodetect \ --source_format=NEWLINE_DELIMITED_JSON \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ test2.table4 \ gs://cloud-samples-data/bigquery/us-states/us-states.json
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Proteggi una tabella di destinazione del job di caricamento con una chiave di crittografia gestita dal cliente impostando la proprietà LoadJobConfig.destination_encryption_configuration su un EncryptionConfiguration e carica la tabella.
Trasmettere in streaming in una tabella protetta da Cloud KMS
Puoi trasmettere i dati in streaming nella tabella BigQuery protetta da CMEK senza specificare parametri aggiuntivi. Tieni presente che questi dati vengono criptati utilizzando la chiave Cloud KMS nel buffer e nella posizione finale. Prima di utilizzare lo streaming con una tabella CMEK, esamina i requisiti relativi alla disponibilità e all'accessibilità delle chiavi.
Scopri di più sullo streaming in Streaming di dati utilizzando l'API BigQuery Storage Write.
Cambia una tabella dalla crittografia predefinita alla protezione di Cloud KMS
bq
Puoi utilizzare il comando bq cp
con il flag --destination_kms_key
per copiare una tabella protetta dalla crittografia predefinita in una nuova tabella o nella tabella originale, protetta da Cloud KMS. Il flag
--destination_kms_key
specifica l'ID risorsa
della chiave da utilizzare con la tabella di destinazione.
Per copiare una tabella con crittografia predefinita in una nuova tabella con protezione Cloud KMS:
bq cp \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ SOURCE_DATASET_ID.SOURCE_TABLE_ID DESTINATION_DATASET_ID.DESTINATION_TABLE_ID
Se vuoi copiare una tabella con crittografia predefinita nella stessa tabella con protezione Cloud KMS:
bq cp -f \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID DATASET_ID.TABLE_ID
Se vuoi modificare una tabella dalla protezione Cloud KMS alla crittografia predefinita, copia il file in se stesso eseguendo bq cp
senza utilizzare il flag --destination_kms_key
.
Per saperne di più sullo strumento a riga di comando bq, consulta Utilizzo dello strumento a riga di comando bq.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Proteggi la destinazione di una copia della tabella con una chiave di crittografia gestita dal cliente impostando la proprietà QueryJobConfig.destination_encryption_configuration su EncryptionConfiguration e copia la tabella.
Determinare se una tabella è protetta da Cloud KMS
Nella console Google Cloud , fai clic sulla freccia blu a sinistra del set di dati per espanderlo oppure fai doppio clic sul nome del set di dati. Vengono visualizzate le tabelle e le visualizzazioni nel set di dati.
Fai clic sul nome della tabella.
Fai clic su Dettagli. La pagina Dettagli tabella mostra la descrizione e le informazioni della tabella.
Se la tabella è protetta da Cloud KMS, il campo Chiave di crittografia gestita dal cliente mostra l'ID risorsa della chiave.
Per ciascuna delle chiavi che hai creato o che proteggono le tue tabelle, puoi vedere quali risorse protegge la chiave con il monitoraggio dell'utilizzo delle chiavi. Per ulteriori informazioni, vedi Visualizzare l'utilizzo delle chiavi.
Modificare la chiave Cloud KMS per una tabella BigQuery
Per modificare la chiave Cloud KMS di una tabella esistente protetta da CMEK, puoi eseguire una query ALTER TABLE
, utilizzare l'API o lo strumento a riga di comando bq.
Esistono due modi per modificare la chiave Cloud KMS utilizzando l'API e lo strumento a riga di comando bq: update
o cp
.
Se utilizzi update
, puoi modificare la chiave Cloud KMS utilizzata per una tabella protetta da CMEK.
Se utilizzi cp
, puoi modificare la chiave Cloud KMS utilizzata per una tabella protetta da CMEK, modificare una tabella dalla crittografia predefinita alla protezione CMEK o modificare una tabella dalla protezione CMEK alla crittografia predefinita.
Un vantaggio di update
è che è più veloce di cp
e ti consente di utilizzare
decoratori di tabelle.
SQL
Utilizza l'istruzione ALTER TABLE SET OPTIONS
per aggiornare il campo kms_key_name
per una tabella:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
ALTER TABLE DATASET_ID.mytable SET OPTIONS ( kms_key_name = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Puoi utilizzare il comando bq cp
con il flag --destination_kms_key
per modificare la chiave di una tabella protetta da Cloud KMS. Il flag
--destination_kms_key
specifica l'ID risorsa
della chiave da utilizzare con la tabella.
bq update \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ -t DATASET_ID.TABLE_ID
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Modifica la chiave di crittografia gestita dal cliente per una tabella modificando la proprietà Table.encryption_configuration in un nuovo oggetto EncryptionConfiguration e aggiorna la tabella.
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Impostare una chiave predefinita del set di dati
Puoi impostare una chiave Cloud KMS predefinita a livello di set di dati che si applica a tutte le tabelle appena create all'interno del set di dati, a meno che non venga specificata una chiave Cloud KMS diversa quando crei la tabella. La chiave predefinita non si applica alle tabelle esistenti. La modifica della chiave predefinita non modifica le tabelle esistenti e si applica solo alle nuove tabelle create dopo la modifica.
Puoi applicare, modificare o rimuovere una chiave predefinita del set di dati
specificando la chiave predefinita nel campo
EncryptionConfiguration.kmsKeyName
quando chiami i metodidatasets.insert
odatasets.patch
.specificando la chiave predefinita nel flag
--default_kms_key
quando esegui il comandobq mk --dataset
.bq mk \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
bq update \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
Impostare una chiave predefinita del progetto
Puoi impostare chiavi Cloud KMS predefinite per il progetto che si applicano a tutti i risultati delle query e alle tabelle appena create nel progetto per quella località, a meno che tu non specifichi una chiave Cloud KMS diversa. La chiave predefinita non si applica alle tabelle esistenti. La modifica della chiave predefinita non modifica le tabelle esistenti e si applica solo alle nuove tabelle create dopo la modifica.
SQL
Utilizza l'istruzione
ALTER PROJECT SET OPTIONS
per aggiornare il campo default_kms_key_name
per un progetto. Puoi trovare il
nome della risorsa per la chiave nella pagina Cloud KMS.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-LOCATION.default_kms_key_name` = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Puoi utilizzare il comando bq
per eseguire un'istruzione
ALTER PROJECT SET OPTIONS
per aggiornare il campo default_kms_key_name
per un progetto:
bq query --nouse_legacy_sql \
'ALTER PROJECT PROJECT_ID
SET OPTIONS (
`region-LOCATION.default_kms_key_name`
="projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY");'
Utilizzare CMEK per proteggere i modelli BigQuery ML
BigQuery ML supporta CMEK. Oltre alla crittografia predefinita fornita da BigQuery, puoi utilizzare le tue chiavi Cloud Key Management Service per criptare i modelli di machine learning, inclusi i modelli TensorFlow importati.
Crea un modello criptato con una chiave Cloud KMS
Per creare un modello criptato, utilizza l'istruzione
CREATE MODEL
e specifica KMS_KEY_NAME
nelle opzioni di addestramento:
CREATE MODEL my_dataset.my_model OPTIONS( model_type='linear_reg', input_label_cols=['your_label'], kms_key_name='projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key') AS SELECT * FROM my_dataset.my_data
La stessa sintassi si applica anche ai modelli TensorFlow importati:
CREATE MODEL my_dataset.my_model OPTIONS( model_type='tensorflow', path='gs://bucket/path/to/saved_model/*', kms_key_name='projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key') AS SELECT * FROM my_dataset.my_data
Limitazioni
Le chiavi di crittografia gestite dal cliente presentano le seguenti limitazioni durante la crittografia dei modelli di machine learning:
Le chiavi CMEK della regione
Global
non sono supportate per i seguenti tipi di modelli:Le chiavi CMEK della regione
Global
e le chiavi CMEK multiregionali, ad esempioEU
oUS
, non sono supportate durante la creazione dei seguenti tipi di modelli:Le chiavi CMEK non sono supportate per i modelli remoti:
Cambia un modello dalla crittografia predefinita alla protezione di Cloud KMS
Puoi utilizzare il comando bq cp
con il flag --destination_kms_key
per copiare un modello protetto dalla crittografia predefinita
in un nuovo modello protetto da Cloud KMS.
In alternativa, puoi utilizzare il comando bq cp
con il flag -f
per sovrascrivere un modello protetto dalla crittografia predefinita e aggiornarlo in modo che utilizzi la protezione Cloud KMS. Il flag --destination_kms_key
specifica l'ID risorsa della chiave da utilizzare con il modello di destinazione.
Per copiare un modello con crittografia predefinita in un nuovo modello con protezione Cloud KMS:
bq cp \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ SOURCE_DATASET_ID.SOURCE_MODEL_ID DESTINATION_DATASET_ID.DESTINATION_MODEL_ID
Per sovrascrivere un modello con crittografia predefinita con lo stesso modello con protezione Cloud KMS:
bq cp -f \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.MODEL_ID DATASET_ID.MODEL_ID
Per modificare un modello dalla protezione Cloud KMS alla crittografia predefinita:
bq cp -f \ DATASET_ID.MODEL_ID DATASET_ID.MODEL_ID
Per saperne di più sullo strumento a riga di comando bq, consulta Utilizzo dello strumento a riga di comando bq.
Determinare se un modello è protetto da Cloud KMS
Utilizza il comando
bq show
per verificare se un modello è protetto dalla chiave Cloud KMS. La chiave di crittografia si trova nel campo kmsKeyName
.
bq show -m my_dataset.my_model
Puoi anche utilizzare la console Google Cloud per trovare la chiave Cloud KMS per un modello criptato. Le informazioni sulla CMEK si trovano nel campo Chiave gestita dal cliente nella sezione Dettagli modello del riquadro Dettagli del modello.
Modificare la chiave Cloud KMS per un modello criptato
Utilizza il comando bq update
con il flag --destination_kms_key
per modificare la chiave di un modello protetto da Cloud KMS:
bq update --destination_kms_key \ projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key \ -t my_dataset.my_model
Utilizzare le chiavi predefinite di progetto o set di dati
Se hai impostato una chiave Cloud KMS predefinita a livello di progetto o set di dati,
BigQuery ML la utilizza automaticamente durante la creazione dei modelli.
Utilizza l'istruzione CREATE MODEL
per specificare una chiave diversa per criptare il modello
se non vuoi utilizzare la chiave predefinita.
Utilizzare le funzioni BigQuery ML con modelli criptati
Puoi utilizzare tutte le funzioni BigQuery ML con un modello criptato senza specificare una chiave di crittografia.
Utilizzare CMEK per proteggere l'API BigQuery Connection
Per le connessioni Cloud SQL, puoi proteggere le credenziali dell'API BigQuery Connection utilizzando CMEK.
Per ulteriori informazioni su come creare una connessione protetta da CMEK, consulta Creare connessioni Cloud SQL.
Rimuovere l'accesso di BigQuery alla chiave Cloud KMS
Puoi rimuovere l'accesso di BigQuery alla chiave Cloud KMS in qualsiasi momento revocando l'autorizzazione Identity and Access Management (IAM) per quella chiave.
Se BigQuery perde l'accesso alla chiave Cloud KMS, l'esperienza utente può risentirne in modo significativo e possono verificarsi perdite di dati:
Non è più possibile accedere ai dati in queste tabelle protette da CMEK:
query
,cp
,extract
etabledata.list
non andranno a buon fine.Non è possibile aggiungere nuovi dati a queste tabelle protette da CMEK.
Una volta ripristinato l'accesso, il rendimento delle query a queste tabelle potrebbe peggiorare per più giorni.
Controllare l'utilizzo di CMEK con i criteri dell'organizzazione
BigQuery si integra con i vincoli dei criteri dell'organizzazione della CMEK per consentirti di specificare i requisiti di conformità alla crittografia per le risorse BigQuery nella tua organizzazione.
Questa integrazione ti consente di:
Richiedi chiavi CMEK per tutte le risorse BigQuery in un progetto.
Limita le chiavi Cloud KMS che possono essere utilizzate per proteggere le risorse in un progetto.
Richiedi CMEK per tutte le risorse
Una policy comune consiste nel richiedere l'utilizzo di CMEK per proteggere tutte le risorse in un insieme specifico di progetti. Puoi utilizzare il
vincolo constraints/gcp.restrictNonCmekServices
per applicare questo criterio in
BigQuery.
Se impostato, questo criterio dell'organizzazione causa l'esito negativo di tutte le richieste di creazione di risorse senza una chiave Cloud KMS specificata.
Dopo aver impostato questo criterio, questo si applica solo alle nuove risorse del progetto. Tutte le risorse esistenti senza chiavi Cloud KMS impostate continuano a esistere e sono accessibili senza problemi.
Console
Apri la pagina Policy dell'organizzazione.
Nel campo Filtro, inserisci
constraints/gcp.restrictNonCmekServices
, quindi fai clic su Limita i servizi che possono creare risorse senza CMEK.Fai clic su
Modifica.Seleziona Personalizza, seleziona Sostituisci e poi fai clic su Aggiungi regola.
Seleziona Personalizzato, quindi fai clic su Nega.
Nel campo Valore personalizzato, inserisci
is:bigquery.googleapis.com
.Fai clic su Fine e poi su Salva.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \ deny gcp.restrictNonCmekServices is:bigquery.googleapis.com
Per verificare che il criterio sia stato applicato correttamente, puoi provare a creare una tabella nel progetto. Il processo non va a buon fine a meno che tu non specifichi una chiave Cloud KMS.
Queste norme si applicano anche alle tabelle dei risultati delle query nel progetto. Puoi specificare una chiave predefinita del progetto in modo che gli utenti non debbano specificare manualmente una chiave ogni volta che eseguono una query nel progetto.
Limitare le chiavi Cloud KMS per un progetto BigQuery
Puoi utilizzare il vincolo constraints/gcp.restrictCmekCryptoKeyProjects
per
limitare le chiavi Cloud KMS che puoi utilizzare per proteggere una risorsa in un
progetto BigQuery.
Puoi specificare una regola, ad esempio "Per tutte le risorse BigQuery in projects/my-company-data-project, le chiavi Cloud KMS utilizzate in questo progetto devono provenire da projects/my-company-central-keys O projects/team-specific-keys".
Console
Apri la pagina Policy dell'organizzazione.
Nel campo Filtro, inserisci
constraints/gcp.restrictCmekCryptoKeyProjects
, quindi fai clic su Limita i progetti che possono fornire CryptoKey KMS per CMEK.Fai clic su
Modifica.Seleziona Personalizza, seleziona Sostituisci e poi fai clic su Aggiungi regola.
Seleziona Personalizzata, quindi fai clic su Consenti.
Nel campo Valore personalizzato, inserisci
under:projects/<var>KMS_PROJECT_ID</var>
.Fai clic su Fine e poi su Salva.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \ allow gcp.restrictCmekCryptoKeyProjects under:projects/KMS_PROJECT_ID
Per verificare che il criterio sia stato applicato correttamente, puoi provare a creare una tabella utilizzando una chiave Cloud KMS di un altro progetto. Il processo non andrà a buon fine.
Limitazioni delle policy dell'organizzazione
Esistono limitazioni associate all'impostazione di un criterio dell'organizzazione.
Ritardo di propagazione
Dopo aver impostato o aggiornato una norma dell'organizzazione, l'applicazione della nuova norma può richiedere fino a 15 minuti. BigQuery memorizza nella cache i criteri per non influire negativamente sulla latenza di creazione di query e tabelle.
Autorizzazioni richieste per impostare una policy dell'organizzazione
L'autorizzazione per impostare o aggiornare la policy dell'organizzazione potrebbe essere difficile da ottenere a scopo di test. Devi disporre del ruolo Amministratore criteri dell'organizzazione, che può essere concesso solo a livello di organizzazione (anziché a livello di progetto o cartella).
Sebbene il ruolo debba essere concesso a livello di organizzazione, è comunque possibile specificare un criterio che si applichi solo a un progetto o a una cartella specifici.
Impatto della rotazione della chiave Cloud KMS
BigQuery non ruota automaticamente la chiave di crittografia di una tabella quando viene ruotata la chiave Cloud KMS associata alla tabella. Tutti i dati nelle tabelle esistenti continuano a essere protetti dalla versione della chiave con cui sono stati creati.
Tutte le tabelle appena create utilizzano la versione della chiave primaria al momento della creazione.
Per aggiornare una tabella in modo che utilizzi la versione più recente della chiave, modificala in modo che utilizzi una chiave Cloud KMS diversa e poi ripristina quella originale.
Impatto sulla fatturazione di Cloud KMS
Quando crei o tronchi una tabella protetta da CMEK, BigQuery genera una chiave di crittografia intermedia che viene poi criptata con la chiave Cloud KMS specificata.
Ai fini della fatturazione, ciò significa che né le chiamate a Cloud KMS né i relativi costi aumentano in base alle dimensioni della tabella. Per le tabelle protette da CMEK,
puoi prevedere una chiamata a Cloud KMS
cryptoKeys.encrypt
per ogni creazione o troncamento di tabella e una chiamata a Cloud KMS
cryptoKeys.decrypt
per ogni tabella coinvolta in una query. Questi metodi appartengono entrambi alla categoria
Operazioni con le chiavi: crittografiche elencata in
Prezzi di Cloud KMS.
La lettura o la scrittura in una tabella esistente protetta da CMEK richiama
Cloud KMS cryptoKeys.decrypt
perché la chiave intermedia deve essere
decriptata.
Limitazioni
Accesso a BigQuery alla chiave Cloud KMS
Una chiave Cloud KMS è considerata disponibile e accessibile da BigQuery alle seguenti condizioni:
- La chiave è abilitata
- Il account di servizio BigQuery dispone delle autorizzazioni di crittografia e decrittografia sulla chiave
Le sezioni seguenti descrivono l'impatto sugli inserimenti in streaming e sui dati inaccessibili a lungo termine quando una chiave non è accessibile.
Impatto sugli inserimenti di flussi di dati
La chiave Cloud KMS deve essere disponibile e accessibile per almeno 24 ore consecutive nel periodo di 48 ore successivo a una richiesta di inserimento dello streaming. Se la chiave non è disponibile e accessibile, i dati in streaming potrebbero non essere completamente persistenti e potrebbero andare persi. Per ulteriori informazioni sugli inserimenti di flussi di dati, consulta la sezione Inserimento di flussi di dati in BigQuery.
Impatto sui dati inaccessibili a lungo termine
Poiché BigQuery fornisce spazio di archiviazione gestito, i dati inaccessibili a lungo termine non sono compatibili con l'architettura di BigQuery. Se la chiave Cloud KMS di una determinata tabella BigQuery non è disponibile e non è accessibile per 60 giorni consecutivi, BigQuery potrebbe scegliere di eliminare la tabella e i relativi dati. Almeno 7 giorni prima dell'eliminazione dei dati, BigQuery invia un'email all'indirizzo email associato all'account di fatturazione.
Utilizzo di origini dati esterne
Se esegui query sui dati archiviati in un'origine dati esterna come Cloud Storage con dati criptati con CMEK, la crittografia dei dati viene gestita da Cloud Storage. Ad esempio, le tabelle BigLake supportano i dati criptati con CMEK in Cloud Storage.
BigQuery e le tabelle BigLake non supportano le chiavi di crittografia fornite dal cliente (CSEK).
Passare dalla crittografia protetta da CMEK a quella predefinita
Non puoi scambiare una tabella in loco tra le crittografie predefinite e la crittografia CMEK. Per cambiare la crittografia, copia la
tabella con le informazioni di crittografia di destinazione impostate o utilizza una query SELECT *
per selezionare la tabella in se stessa con la disposizione WRITE_TRUNCATE
.
Utilizzo dei decorator per tabelle
Se proteggi una tabella con Cloud KMS e poi sostituisci i dati nella tabella utilizzando il valore WRITE_TRUNCATE
per un'operazione load
, cp
o query
, i decoratori di intervallo non funzionano oltre il limite di modifica della crittografia. Puoi comunque utilizzare i decoratori di tabelle, inclusi i decoratori di intervalli, per eseguire query sui dati prima o dopo il limite oppure eseguire query sullo snapshot in un determinato momento.
Query sulle tabelle con caratteri jolly
Non è possibile eseguire query sulle tabelle protette da CMEK con un suffisso con caratteri jolly.
Supporto per gli script
Gli script non possono definire tabelle di destinazione per le operazioni CMEK.
Versioni supportate
Il supporto di CMEK per BigQuery è disponibile solo per BigQuery Enterprise, BigQuery Enterprise Plus e BigQuery On-Demand.
Supporto di BigQuery Studio
Gli asset di codice di BigQuery Studio, tra cui le query salvate e i blocchi note, non supportano CMEK.
Domande frequenti
Chi ha bisogno dell'autorizzazione per la chiave Cloud KMS?
Con le chiavi di crittografia gestite dal cliente, non è necessario specificare ripetutamente le autorizzazioni. Se il account di servizio BigQuery è autorizzato a utilizzare la chiave Cloud KMS per la crittografia e la decrittografia, chiunque abbia l'autorizzazione per la tabella BigQuery può accedere ai dati, anche se non ha accesso diretto alla chiave Cloud KMS.
Quale account di servizio viene utilizzato?
L'account di servizio BigQuery associato al progettoGoogle Cloud della tabella viene utilizzato per decriptare i dati della tabella. Gli account di servizio BigQuery sono univoci per ogni progetto. Per un job che scrive dati in una tabella anonima protetta da Cloud KMS, viene utilizzato il account di servizio del progetto del job.
Ad esempio, considera tre tabelle protette da CMEK: table1
, table2
e
table3
. Per eseguire query sui dati da {project1.table1, project2.table2}
con
la tabella di destinazione {project3.table3}
:
- Utilizza l'account di servizio
project1
perproject1.table1
- Utilizza l'account di servizio
project2
perproject2.table2
- Utilizza l'account di servizio
project3
perproject3.table3
In che modo BigQuery può utilizzare la mia chiave Cloud KMS?
BigQuery utilizza la chiave Cloud KMS per decriptare i dati in risposta a una query utente, ad esempio tabledata.list
o jobs.insert
.
BigQuery può anche utilizzare la chiave per le attività di manutenzione e ottimizzazione dell'archiviazione dei dati, come la conversione dei dati in un formato ottimizzato per la lettura.
Quali librerie di crittografia vengono utilizzate?
BigQuery si basa su Cloud KMS per la funzionalità CMEK. Cloud KMS utilizza Tink per la crittografia.
Come ricevere ulteriore assistenza?
Se hai domande a cui non è stata data risposta qui, consulta Assistenza BigQuery.
Risolvere gli errori
Di seguito sono descritti gli errori comuni e le mitigazioni consigliate.
Errore | Consiglio |
---|---|
Concedi il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS | Il account di servizio BigQuery associato al tuo progetto non dispone dell'autorizzazione IAM sufficiente per operare sulla chiave Cloud KMS specificata. Segui le istruzioni riportate nell'errore o in questa documentazione per concedere l'autorizzazione IAM appropriata. |
Le impostazioni di crittografia della tabella esistente non corrispondono alle impostazioni di crittografia specificate nella richiesta | Ciò può verificarsi in scenari in cui la tabella di destinazione ha impostazioni di crittografia
che non corrispondono a quelle della tua richiesta. Come
mitigazione, utilizza la disposizione di scrittura TRUNCATE per sostituire la tabella
o specifica una tabella di destinazione diversa. |
Questa regione non è supportata | La regione della chiave Cloud KMS non corrisponde a quella del set di dati BigQuery della tabella di destinazione. Come mitigazione, seleziona una chiave in una regione che corrisponda al tuo set di dati o carica un set di dati che corrisponda alla regione della chiave. |
Il tuo amministratore richiede che tu specifichi una chiave di crittografia per le query nel progetto PROJECT_ID. | Un criterio dell'organizzazione ha impedito la creazione di una risorsa o l'esecuzione di una query. Per saperne di più su questa norma, consulta Richiesta di chiavi CMEK per tutte le risorse di un progetto BigQuery. |
L'amministratore impedisce l'utilizzo delle chiavi KMS del progetto KMS_PROJECT_ID per proteggere le risorse nel progetto PROJECT_ID. | Un criterio dell'organizzazione ha impedito la creazione di una risorsa o l'esecuzione di una query. Per scoprire di più su questa policy, consulta Limitare le chiavi Cloud KMS per un progetto BigQuery. |