Introduzione al controllo dell'accesso a livello di colonna
BigQuery offre un accesso granulare alle colonne sensibili tramite tag di criteri o classificazione dei tipi basata sui dati. Con il controllo dell'accesso a livello di colonna BigQuery puoi creare criteri che verificano, al momento della query, se un utente dispone dell'accesso corretto. Ad esempio, un criterio può applicare controlli di accesso come:
- Devi essere in
group:high-access
per vedere le colonne contenentiTYPE_SSN
.
Per migliorare il controllo dell'accesso a livello di colonna, puoi facoltativamente utilizzare la mascheramento dinamico dei dati. Il mascheramento dei dati consente di mascherare i dati sensibili sostituendo contenuti nulli, predefiniti o sottoposti ad hashing al posto del valore effettivo della colonna.
Flusso di lavoro del controllo dell'accesso a livello di colonna
Per limitare l'accesso ai dati a livello di colonna:
Definisci una tassonomia e i tag di criteri. Creare e gestire una tassonomia e tag di criteri per i dati. Per le linee guida, consulta la pagina Best practice per i tag di criteri.
Assegna tag di criteri alle colonne BigQuery. In BigQuery, utilizza le annotazioni schema per assegnare un tag di criteri a ogni colonna in cui vuoi limitare l'accesso.
Applicazione del controllo dell'accesso alla tassonomia. L'applicazione del controllo dell'accesso causa l'applicazione delle restrizioni di accesso definite per tutti i tag di criteri nella tassonomia.
Gestire l'accesso ai tag dei criteri. Utilizza i criteri di Identity and Access Management (IAM) per limitare l'accesso a ciascun tag di criteri. Il criterio viene applicato a ogni colonna che appartiene al tag di criteri.
Quando un utente tenta di accedere ai dati della colonna al momento della query, BigQuery controlla il tag criterio delle colonne e i relativi criteri per verificare se l'utente è autorizzato ad accedere ai dati.
Identifica gli elementi da taggare
Per determinare quali tipi di dati sensibili sono presenti e quali colonne richiedono tag di criteri, valuta la possibilità di generare profili sui dati in un'organizzazione, una cartella o un progetto utilizzando Cloud Data Loss Prevention. I profili dati contengono metriche e metadati relativi alle tue tabelle e ti aiutano a determinare dove si trovano i dati sensibili e ad alto rischio. Cloud DLP segnala queste metriche a livello di progetto, tabella e colonna. Per ulteriori informazioni, consulta Profili di dati per dati BigQuery.
La seguente immagine mostra un elenco di profili di dati per le colonne (fai clic per ingrandire). Le colonne con valori ad alto rischio di dati potrebbero contenere dati ad alta sensibilità e non avere controlli di accesso a livello di colonna. In alternativa, queste colonne potrebbero contenere dati moderati o ad alta sensibilità accessibili a un numero elevato di persone.
Esempio di caso d'uso
Prendi in considerazione un'organizzazione che deve classificare i dati sensibili in due categorie: Alta e Media.
Per configurare la sicurezza a livello di colonna, un gestore dati in possesso delle autorizzazioni appropriate deve seguire questi passaggi per impostare una gerarchia di classificazione dei dati.
Il gestore dei dati crea una tassonomia di nome "Criticità aziendale". La tassonomia include i nodi o i tag di criteri High e Medium.
Il gestore dati decide che il criterio per il nodo High include l'accesso per un gruppo denominato high-tier-access.
Il gestore dei dati crea più livelli di nodi nella tassonomia, in Alto e Mezzo. Il nodo di livello più basso è un nodo foglia, come il nodo foglia employee_ssn. Il gestore dati può creare un criterio di accesso diverso per il nodo foglia employee_ssn.
L'amministratore dei dati assegna un tag di criteri a colonne specifiche della tabella. In questo esempio, il gestore dati assegna il criterio di accesso Alto alla colonna employee_ssn in una tabella.
Nella pagina Schema attuale della console, il gestore dati può vedere il tag di criteri che regola una determinata colonna. In questo esempio, la colonna employee_ssn si trova sotto il tag di criteri High (Elevata); pertanto, quando visualizzi lo schema per employee_ssn, la console visualizza il nome della tassonomia e il tag di criteri nel campo
Policy tags
:Business criticality:High
.Per maggiori dettagli sull'utilizzo della console per impostare un tag di criteri, consulta Impostare un tag di criteri in una colonna.
In alternativa, puoi impostare il tag di criteri utilizzando il comando
bq update
. Il camponames
dipolicyTags
include l'ID del tag di criteri Alto,projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id
:[ ... { "name": "ssn", "type": "STRING", "mode": "REQUIRED", "policyTags": { "names": ["projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id"] } }, ... ]
Per maggiori dettagli sull'utilizzo del comando
bq update
per impostare un tag di criteri, consulta Impostare un tag di criteri in una colonna.L'amministratore esegue passaggi simili per il tag di criteri Mezzo.
Con questo accesso granulare, puoi gestire l'accesso a molte colonne controllando solo un numero limitato di tag di criteri di classificazione dei dati.
Per i dettagli su questi passaggi, consulta Limitazione dell'accesso con controllo dell'accesso a livello di colonna.
Ruoli utilizzati con controllo dell'accesso a livello di colonna
I seguenti ruoli vengono utilizzati per il controllo dell'accesso a livello di colonna di BigQuery.
Il ruolo Amministratore tag criterio di Data Catalog è obbligatorio per gli utenti che devono creare e gestire tassonomie e tag di criteri.
Ruolo/ID | Autorizzazioni | Descrizione |
---|---|---|
Amministratore tag criterio Data Catalog/datacatalog.categoryAdmin
|
datacatalog.categories.getIamPolicy datacatalog.categories.setIamPolicy datacatalog.taxonomies.create datacatalog.taxonomies.delete datacatalog.taxonomies.get datacatalog.taxonomies.getIamPolicy datacatalog.taxonomies.list datacatalog.taxonomies.setIamPolicy datacatalog.taxonomies.update resourcemanager.projects.get resourcemanager.projects.list
|
Si applica a livello di progetto. Questo ruolo concede la possibilità di:
|
Per creare e gestire i criteri relativi ai dati è necessario il ruolo Amministratore BigQuery o il ruolo Proprietario dati BigQuery. Quando utilizzi la console Google Cloud per applicare il controllo dell'accesso su una tassonomia, il servizio crea automaticamente un criterio per i dati.
Ruolo/ID | Autorizzazioni | Descrizione |
---|---|---|
Amministratore BigQuery/bigquery.admin
Proprietario dati BigQuery/ bigquery.dataOwner
|
bigquery.dataPolicies.create bigquery.dataPolicies.delete bigquery.dataPolicies.get bigquery.dataPolicies.getIamPolicy bigquery.dataPolicies.list bigquery.dataPolicies.setIamPolicy bigquery.dataPolicies.update
|
Le autorizzazioni Questo ruolo concede la possibilità di:
|
datacatalog.taxonomies.get
, che puoi ottenere da diversi ruoli predefiniti di Data Catalog.
Il ruolo Lettore granulare di Data Catalog è obbligatorio per gli utenti che devono accedere ai dati nelle colonne protette.
Ruolo/ID | Autorizzazioni | Descrizione |
---|---|---|
Lettore granulare/datacatalog.categoryFineGrainedReader
|
datacatalog.categories.fineGrainedGet |
Si applica a livello di tag di criteri. Questo ruolo concede la possibilità di accedere ai contenuti delle colonne limitate da un tag di criteri. |
Per scoprire di più sui ruoli di Data Catalog, consulta Identity and Access Management (IAM) di Data Catalog. Per scoprire di più sui ruoli di BigQuery, consulta Controllo dell'accesso con IAM.
Impatto delle scritture
Per leggere i dati di una colonna protetta da controllo di accesso a livello di colonna, l'utente deve disporre sempre dell'autorizzazione di lettura tramite l'accesso granulare in lettura ai tag di criteri della colonna.
Questo vale per:
- Tabelle, incluse tabelle con caratteri jolly
- Visualizzazioni
- Copia di tabelle
Per scrivere dati in una riga per una colonna protetta da controllo di accesso a livello di colonna, il requisito utente dipende dal tipo di scrittura.
Se l'operazione di scrittura è insert, non è richiesto un accesso granulare in lettura. Tuttavia, l'utente non ha accesso in lettura ai dati inseriti, a meno che l'utente non abbia accesso in lettura granulare.
Se l'operazione di scrittura è un aggiornamento, un eliminazione o un'unione, l'utente non può eseguire l'operazione, a meno che l'utente non abbia accesso in lettura granulare alle colonne di lettura.
Un utente può caricare dati da file locali o da Cloud Storage. Quando carichi i dati in una tabella, BigQuery non controlla l'autorizzazione di lettura granulare delle colonne della tabella di destinazione. Ciò avviene perché il caricamento dei dati non richiede la lettura di contenuti della tabella di destinazione. Analogamente, un utente può caricare dati dallo streaming, perché i caricamenti di flussi di dati non controllano i tag di criteri. L'utente non ha accesso in lettura ai dati caricati da un flusso, a meno che non abbia un accesso in lettura granulare.
Per ulteriori informazioni, consulta la pagina Impatto sulle scritture con il controllo dell'accesso a livello di colonna.
Query su tabelle
Se un utente ha accesso al set di dati e ha il ruolo Lettore granulare Data Catalog, i dati della colonna sono a sua disposizione. L'utente esegue una query come di consueto.
Se un utente ha accesso al set di dati ma non ha il ruolo Lettore granulare di Data Catalog, i dati della colonna non sono disponibili. Se un utente esegue SELECT *
, riceverà un errore in cui sono elencate le colonne a cui non può accedere. Per risolvere il problema, puoi:
Modifica la query per escludere le colonne a cui l'utente non può accedere. Ad esempio, se l'utente non ha accesso alla colonna
ssn
, ma ha accesso alle colonne rimanenti, può eseguire la seguente query:SELECT * EXCEPT (ssn) FROM ...
Nell'esempio precedente, la clausola
EXCEPT
esclude la colonnassn
.Chiedi a un amministratore di Data Catalog di aggiungere l'utente come lettore granulare di Data Catalog alla classe di dati pertinente. Il messaggio di errore fornisce il nome completo del tag di criteri per cui l'utente deve accedere.
Visualizzazioni query
L'impatto della sicurezza a livello di colonna sulle visualizzazioni dipende dalla visualizzazione autorizzata o meno. In entrambi i casi, la sicurezza a livello di colonna viene applicata in modo trasparente.
Una vista autorizzata è una delle seguenti:
- Una vista autorizzata esplicitamente ad accedere alle tabelle in un set di dati.
- Una vista autorizzata implicitamente ad accedere alle tabelle in un set di dati perché è inclusa in un set di dati autorizzato.
Per ulteriori informazioni, consulta Visualizzazioni autorizzate e Set di dati autorizzati.
Se non si tratta di una visualizzazione autorizzata:
Se l'utente ha accesso IAM alle tabelle e al set di dati sottostanti della vista, nonché l'accesso a livello di colonna alle tabelle sottostanti, può eseguire query sulle colonne nella vista. In caso contrario, l'utente non può eseguire query sulle colonne nella vista.
Se la visualizzazione è autorizzata:
Solo il livello di sicurezza delle colonne nelle tabelle sottostanti della vista controlla l'accesso. I criteri IAM a livello di tabella e di set di dati, se presenti, non vengono utilizzati per verificare l'accesso. Se l'utente ha accesso ai tag di criteri utilizzati nelle tabelle sottostanti della visualizzazione autorizzata, può eseguire query sulle colonne nella vista autorizzata.
Il seguente diagramma mostra come viene valutato l'accesso a una visualizzazione.
Impatto dei viaggi nel tempo
BigQuery ti consente di eseguire query su una tabella in uno stato precedente. Questa funzionalità ti consente di eseguire query sulle righe da un punto precedente nel tempo. Ti permette inoltre di ripristinare una tabella da un determinato momento.
Nella versione precedente di SQL, puoi eseguire query sui dati storici utilizzando i decoratori di tempo nel nome della tabella. In SQL standard di Google, esegui query sui dati storici utilizzando la clausola FOR SYSTEM_TIME AS OF
nella tabella.
Supponiamo di eseguire query sui dati storici di una tabella all'ora t. In tal caso:
Se lo schema al momento t è identico o a un sottoinsieme dello schema corrente della tabella, BigQuery verifica la sicurezza più recente a livello di colonna nella tabella corrente. Se l'utente è autorizzato a leggere le colonne attuali, può eseguire query sui dati storici di quelle colonne.
Se lo schema al momento t è diverso dallo schema corrente per le colonne nella query, la query ha esito negativo.
Considerazioni sulla località
Quando scegli una località per la tua tassonomia, considera le seguenti limitazioni.
Tag di criteri
Le tassonomie sono risorse di regione, come set di dati e tabelle BigQuery. Quando crei una tassonomia, devi specificare l'area geografica o la località.
Puoi creare una tassonomia e applicare tag di criteri alle tabelle in tutte le aree geografiche in cui è disponibile BigQuery. Tuttavia, per applicare tag di criteri da una tassonomia a una colonna della tabella, la tassonomia e la tabella devono esistere nella stessa regione.
Anche se non puoi applicare un tag di criteri a una colonna della tabella che si trova in una località diversa, puoi copiare la tassonomia in un'altra posizione replicandola esplicitamente in quella posizione.
Se vuoi utilizzare la stessa tassonomia e gli stessi tag di criteri in più località regionali, scopri di più sulla replica delle tassonomie in Gestione dei tag di criteri tra località.
Organizzazioni
Non puoi utilizzare i riferimenti tra le organizzazioni. Una tabella e tutti i tag di criteri che vuoi applicare alle colonne devono esistere all'interno della stessa organizzazione.
Limitazioni
Se sovrascrivi una tabella di destinazione, tutti i tag di criteri esistenti vengono rimossi dalla tabella, a meno che non utilizzi il flag
--destination_schema
per specificare uno schema con tag di criteri. L'esempio seguente mostra come utilizzare--destination_schema
.bq query --destination_table mydataset.mytable2 \ --use_legacy_sql=false --destination_schema=schema.json \ 'SELECT * FROM mydataset.mytable1'
Le modifiche allo schema vengono eseguite in un'operazione separata dall'esecuzione delle query. Se scrivi i risultati della query in una tabella specificando il flag
--destination_table
e in seguito la query solleva un'eccezione, è possibile che le eventuali modifiche allo schema vengano ignorate. In questo caso, controlla lo schema della tabella di destinazione e, se necessario, aggiornalo manualmente.Una colonna può avere un solo tag di criteri.
Una tabella può avere al massimo 1000 tag di criteri univoci.
Non puoi utilizzare SQL precedente se hai attivato il controllo dell'accesso a livello di colonna. Le query SQL precedenti vengono rifiutate se sono presenti tag di criteri nelle tabelle di destinazione.
Una gerarchia di tag di criteri non può contenere più di cinque livelli dal nodo radice al sottotag di livello più basso, come mostrato nel seguente screenshot:
Prezzi
Il controllo dell'accesso a livello di colonna richiede l'utilizzo di BigQuery e di Data Catalog. Per informazioni sui prezzi di questi prodotti, consulta i seguenti argomenti:
Audit logging
Quando i dati della tabella con i tag di criteri vengono letti, salviamo i tag di criteri di riferimento in Cloud Logging. Tuttavia, il controllo del tag di criteri non è associato alla query che lo ha attivato.
Tramite Cloud Logging, i revisori possono sapere chi ha un determinato tipo di accesso a quali categorie di dati sensibili. Per ulteriori informazioni, consulta Tag di criteri di controllo.
Per ulteriori informazioni sul logging in BigQuery, consulta Introduzione al monitoraggio di BigQuery.
Per ulteriori informazioni sul logging in Google Cloud, consulta Cloud Logging.
Passaggi successivi
Per maggiori dettagli sull'utilizzo del controllo dell'accesso a livello di colonna, consulta Limitazione dell'accesso con controllo dell'accesso a livello di colonna.
Per informazioni sulle best practice relative ai tag di criteri, consulta Best practice di BigQuery: utilizzo dei tag di criteri.