Visualizzazioni autorizzate
Questo documento descrive come creare viste autorizzate e viste materializzate autorizzate in BigQuery. In qualità di amministratore dei dati, puoi creare una vista autorizzata per condividere un sottoinsieme di dati di un set di dati con utenti e gruppi (entità) specifici. Le entità possono visualizzare i dati che condividi ed eseguire query su di essi, ma non possono accedere direttamente al set di dati di origine.
Tipi di visualizzazione
Una vista logica è il tipo di vista predefinito per BigQuery, mentre una vista materializzata è una vista precalcolata che memorizza periodicamente nella cache i risultati di una query per migliorare le prestazioni e l'efficienza.
Una vista autorizzata per una vista logica è chiamata vista autorizzata, ma una vista autorizzata per una vista materializzata è chiamata vista materializzata autorizzata.
Se una vista logica si basa su una query di grandi dimensioni o costosa dal punto di vista computazionale, puoi creare una vista materializzata. Per comprendere i casi d'uso di una vista logica e materializzata, consulta Panoramica delle viste logiche e materializzate.
Passaggi generali per la creazione di viste autorizzate
Per creare e condividere una vista, esamina questi passaggi generali, che sono gli stessi per le viste logiche autorizzate e le viste materializzate autorizzate.
- Crea un set di dati che contenga i dati di origine.
- Esegui una query per caricare i dati in una tabella di destinazione nel set di dati di origine.
- Crea un set di dati che contenga la vista autorizzata.
- Crea una vista autorizzata da una query SQL che limita le colonne che gli analisti di dati possono visualizzare nei risultati della query.
- Concedi ai tuoi analisti di dati l'autorizzazione per eseguire job di query.
- Concedi ai tuoi analisti di dati l'accesso al set di dati che contiene la vista autorizzata.
- Concedi l'accesso in visualizzazione al set di dati di origine.
Alternative
Sebbene le visualizzazioni autorizzate siano flessibili e scalabili, uno dei seguenti metodi potrebbe essere più adatto al tuo caso d'uso:
- Imposta policy a livello di riga su una tabella.
- Imposta policy a livello di colonna su una tabella.
- Archivia i dati in una tabella separata.
- Condividere tutte le viste di un set di dati (set di dati autorizzati).
Utilizza la sicurezza a livello di riga o di colonna oppure tabelle separate
Impostando policy di accesso a livello di riga su una tabella o creando una tabella separata per contenere dati sensibili, un amministratore dei dati può limitare la possibilità di un utente di visualizzare questi dati. L'archiviazione dei dati in una tabella separata isola i dati e rimuove la possibilità di vedere quante righe esistono nella tabella.
Inoltre, creando e applicando tag di policy, un amministratore dei dati può limitare la capacità dell'utente di visualizzare le colonne di una tabella.
L'archiviazione dei dati in una tabella separata è il metodo più sicuro, ma meno flessibile. L'impostazione di policy a livello di riga è flessibile e sicura, mentre la condivisione di viste autorizzate è flessibile e offre le migliori prestazioni.
Per confrontare questi metodi in dettaglio, consulta le seguenti risorse:
- Confronto tra viste autorizzate, sicurezza a livello di riga e tabelle separate
- Introduzione alla sicurezza a livello di riga
- Esempi di casi d'uso per la sicurezza a livello di riga
- Introduzione al controllo dell'accesso a livello di colonna
Condividi tutte le visualizzazioni in un set di dati
Se vuoi concedere l'accesso in visualizzazione a un set di dati a una raccolta di viste senza dover autorizzare ogni singola vista, puoi raggruppare le viste in un set di dati e poi concedere al set di dati che contiene le viste l'accesso al set di dati che contiene i dati.
Puoi quindi concedere alle entità l'accesso al set di dati che contiene il gruppo di viste o alle singole viste nel set di dati, a seconda delle esigenze. Un set di dati che ha accesso a un altro set di dati è chiamato set di dati autorizzato. Il set di dati che autorizza un altro set di dati ad accedere ai propri dati è chiamato set di dati condiviso.
L'elenco di controllo dell'accesso di un set di dati può avere fino a 2500 risorse autorizzate totali, tra cui viste autorizzate, set di dati autorizzati e funzioni autorizzate. Se superi questo limite a causa di un numero elevato di visualizzazioni autorizzate, valuta la possibilità di raggrupparle in set di dati autorizzati. Come best practice, raggruppa le viste correlate in set di dati autorizzati quando progetti nuove architetture BigQuery, in particolare architetture multi-tenant.
Per saperne di più, consulta Set di dati autorizzati e Autorizza un set di dati.
Limitazioni
- Quando crei una vista autorizzata o una vista materializzata autorizzata in un altro set di dati, il set di dati di origine e il set di dati della vista autorizzata devono trovarsi nella stessa località regionale.
- Quando elimini una vista autorizzata, possono essere necessarie fino a 24 ore per rimuoverla dall'elenco delle viste. Durante questo periodo, non puoi accedere alla vista autorizzata, ma la vista autorizzata eliminata può essere visualizzata nell'elenco delle viste e viene conteggiata ai fini del limite di viste autorizzate. Questo limite può impedire la creazione di visualizzazioni autorizzate aggiuntive se la nuova visualizzazione autorizzata supera il limite.
- Non puoi creare una vista autorizzata in una replica secondaria. Per saperne di più, consulta Comportamento delle risorse nella replica dei set di dati.
Prima di iniziare
Concedi i ruoli IAM (Identity and Access Management) che forniscono agli utenti le autorizzazioni necessarie per eseguire query sulle viste autorizzate o sulle viste materializzate autorizzate che condividi.
Viste autorizzate e Controlli di servizio VPC
Quando utilizzi le viste autorizzate in un perimetro dei Controlli di servizio VPC, le regole in entrata e in uscita devono consentire alle entità di accedere al progetto che contiene la vista e a tutti gli altri progetti che contengono i dati di origine da cui la vista accede ai dati.
Ad esempio, nel seguente diagramma, il chiamante nel Progetto R accede alla vista autorizzata nel Progetto A, la cui tabella di origine esiste nel Progetto B. In questo caso, le regole in entrata e in uscita dei Controlli di servizio VPC devono consentire al chiamante nel progetto R di accedere sia al progetto A sia al progetto B utilizzando il servizio BigQuery.
Autorizzazioni richieste per l'accesso ai Controlli di servizio VPC
L'entità non ha bisogno delle autorizzazioni di Identity and Access Management per il progetto di dati di origine, ma la regola in entrata deve consentire l'accesso al servizio BigQuery nel progetto di origine che contiene la tabella di origine, oltre a consentire l'accesso al progetto che contiene la vista.
Per informazioni sui ruoli e sulle autorizzazioni richiesti, consulta Autorizzazioni utente per il progetto e il set di dati.
Regole in entrata e in uscita
I seguenti esempi di regole in entrata e in uscita dei Controlli di servizio VPC consentono all'API BigQuery di accedere sia ai progetti di origine che a quelli di visualizzazione.
- Per informazioni dettagliate sulla configurazione delle regole in entrata e in uscita, consulta Configurazione delle policy in entrata e in uscita.
- Per le limitazioni su come configurare le regole in entrata e in uscita per BigQuery, consulta Prodotti supportati dai Controlli di servizio VPC: BigQuery.
Ad esempio, se crei una vista in PROJECT_A (vista) che accede ai dati in PROJECT_B (origine), devi disporre del seguente insieme di regole in entrata per PROJECT_B e di un altro insieme di regole in entrata per PROJECT_A:
- ingressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
title: Ingress rules for the source project
Il seguente file YAML mostra l'insieme di regole in uscita per PROJECT_B (origine). Avresti anche bisogno di un insieme di regole in uscita per PROJECT_A (visualizzazione):
- egressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
egressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
title: Egress rules for the source project
Ruoli obbligatori
Per creare o aggiornare una visualizzazione autorizzata, devi disporre delle autorizzazioni per il set di dati che contiene la visualizzazione e per il set di dati che fornisce l'accesso alla visualizzazione.
Devi anche concedere agli utenti o ai gruppi l'accesso al progetto e al set di dati che contengono la vista.
Autorizzazioni per il set di dati che contiene la vista
Le viste vengono trattate come risorse di tabella in BigQuery, quindi la creazione di una vista richiede le stesse autorizzazioni della creazione di una tabella. Devi anche disporre delle autorizzazioni per eseguire query su tutte le tabelle a cui fa riferimento la query SQL della vista.
- Per creare un set di dati, devi disporre dell'autorizzazione IAM
bigquery.datasets.createsul progetto. - Per creare una vista, devi disporre dell'autorizzazione IAM
bigquery.tables.createsul set di dati. Il ruolo IAM predefinitoroles/bigquery.dataEditorinclude le autorizzazioni necessarie per creare una visualizzazione. - Per creare una vista che esegue query su una tabella a cui non hai accesso, devi disporre dell'autorizzazione
bigquery.tables.getDatasulla tabella su cui la vista esegue query.
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Autorizzazioni per il set di dati che contiene i dati di origine
Per autorizzare una vista, devi concedere alla vista le autorizzazioni in lettura per il set di dati dei dati di origine.
Per eseguire questa autorizzazione, devi disporre delle seguenti autorizzazioni sul set di dati che contiene i dati di origine:
bigquery.datasets.updatedatasets.getIamPolicydatasets.setIamPolicy
Per ulteriori autorizzazioni necessarie per aggiornare i set di dati, consulta le autorizzazioni richieste.
Autorizzazioni dell'utente sul progetto e sul set di dati per la visualizzazione
Per condividere una visualizzazione autorizzata con utenti o gruppi, devi concedere agli utenti o ai gruppi le seguenti autorizzazioni IAM:
Il ruolo IAM
roles/bigquery.jobUser(oroles/bigquery.user) per il progetto in cui viene eseguito il job di query (il progetto di fatturazione o di esecuzione). Questo ruolo concede l'autorizzazionebigquery.jobs.create, necessaria per eseguire job di query sulla vista.Il ruolo IAM
roles/bigquery.jobUserè necessario solo per il progetto in cui vuoi eseguire il job, indipendentemente da dove è ospitata la vista.Il ruolo IAM
roles/bigquery.dataViewerper il set di dati che contiene la vista autorizzata. Questo ruolo concede l'autorizzazionebigquery.tables.getData, necessaria per eseguire query sulla vista.Se un utente esegue una query sulla vista autorizzata da un progetto separato, non ha bisogno del ruolo
roles/bigquery.jobUsernel progetto che ospita la vista. Devono disporre del ruoloroles/bigquery.dataViewernel set di dati che contiene la vista e del ruoloroles/bigquery.jobUsernel progetto in cui viene eseguita la query.
Utilizza le viste autorizzate
Le sezioni seguenti descrivono come utilizzare le viste autorizzate e le viste materializzate autorizzate.
Crea una vista autorizzata
Per creare una vista autorizzata, scegli una delle seguenti opzioni. Per i passaggi completi per autorizzare, condividere ed eliminare una vista autorizzata, consulta il tutorial Crea una vista autorizzata.
Console
Vai alla pagina BigQuery.
Nell'editor di query, digita la query su cui vuoi basare la vista autorizzata.
Fai clic su File > Salva > Salva visualizzazione.
Nella finestra di dialogo Salva visualizzazione, segui questi passaggi:
In Progetto, digita il progetto in cui salvare la visualizzazione.
In Set di dati, digita il set di dati in cui salvare la vista. Deve essere un set di dati diverso da quello utilizzato nella query di origine.
In Tabella, digita il nome della visualizzazione.
Fai clic su Salva.
Concedi le autorizzazioni necessarie agli utenti che possono utilizzare la vista autorizzata.
Nel riquadro Explorer, seleziona il set di dati utilizzato nella query di origine.
Nel riquadro Dettagli, fai clic su Condivisione > Autorizza visualizzazioni.
Nel riquadro Viste autorizzate, per Vista autorizzata, digita il nome completo della vista nel formato PROJECT_ID.DATASET_ID.VIEW_NAME.
Fai clic su Aggiungi autorizzazione.
Terraform
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configura l'autenticazione per le librerie client.
Per applicare la configurazione Terraform in un progetto Cloud de Confiance , completa i passaggi descritti nelle sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Cloud de Confiance 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 Terraform deve avere la propria directory (chiamata anche modulo principale).
-
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 è 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.tfappena creato.Facoltativamente, copia il codice da GitHub. Questa opzione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare l'ultima versione del provider Google, includi l'opzione
-upgrade:terraform init -upgrade
Applica le modifiche
-
Esamina 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 Terraform eseguendo il comando seguente e inserendo
yesal prompt:terraform apply
Attendi che Terraform visualizzi il messaggio "Apply complete!".
- Apri il tuo progetto Cloud de Confiance per visualizzare i risultati. Nella console Cloud de Confiance , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
Gestisci utenti o gruppi per le viste autorizzate
Dopo aver autorizzato una vista, puoi mantenerne l'accesso completando le seguenti attività per un set di dati, una tabella o una vista:
- Visualizza la policy di accesso.
- Concede l'accesso.
- Revoca l'accesso.
- Nega l'accesso.
Per saperne di più, consulta Controlla l'accesso alle risorse utilizzando IAM.
Rimuovi l'autorizzazione a una vista
Per rimuovere l'autorizzazione per una vista, seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery nella console Cloud de Confiance .
Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro sinistro per aprirlo.
Nel riquadro Explorer, espandi il progetto, fai clic su Set di dati, quindi seleziona un set di dati.
Fai clic su Panoramica > Tabelle, quindi seleziona una tabella.
Fai clic su Condivisione > Autorizza visualizzazioni.
Fai clic su per rimuovere l'autorizzazione.
Fai clic su Chiudi.
bq
Per rimuovere l'autorizzazione da una vista, utilizza il comando bq rm. Inserisci
l'table_id per la vista da cui vuoi rimuovere l'autorizzazione.
bq rm \ project_id:dataset:table_id
API
Chiama il metodo tables.delete e utilizza le proprietà projectID, datasetID e tableID per rimuovere la vista autorizzata per il set di dati. Per saperne di più, consulta Tabelle.
Autorizzazione revocata e Controlli di servizio VPC
Quando una vista autorizzata accede ai dati di un set di dati di origine attraverso un perimetro dei Controlli di servizio VPC, l'esecuzione di query sulla vista bypassa i controlli standard dei Controlli di servizio VPC sulle tabelle di base sottostanti.
Se revochi o rimuovi l'autorizzazione per la vista dal set di dati di origine, BigQuery torna ai controlli di autorizzazione standard ed esegue query direttamente sulle tabelle di base nel progetto di origine. Se queste tabelle di base superano il confine di un perimetro dei Controlli di servizio VPC senza regole in uscita esplicite che consentono l'accesso diretto alle tabelle, i Controlli di servizio VPC bloccano la query e restituiscono errori di violazione in entrata o in uscita.
Quando ripristini l'autorizzazione per la vista nel set di dati di origine, BigQuery ignora nuovamente i controlli diretti della tabella di base e questo risolve gli errori dei Controlli di servizio VPC.
Quote e limiti
- Le viste autorizzate sono soggette ai limiti dei set di dati. Per saperne di più, consulta Limiti dei set di dati.
- Se rimuovi una vista autorizzata, possono essere necessarie fino a 24 ore prima che tutti i riferimenti alla vista vengano rimossi dal sistema. Per evitare errori, attendi 24 ore prima di riutilizzare il nome di una vista rimossa o crea un nome univoco per la vista.
Argomenti avanzati
Le sezioni seguenti descrivono i metodi avanzati di utilizzo delle viste autorizzate.
Combina la sicurezza a livello di riga con le viste autorizzate
I dati visualizzati in una vista logica o in una vista materializzata vengono filtrati in base alle policy di accesso a livello di riga della tabella di origine sottostante.
Per informazioni dettagliate su come la sicurezza a livello di riga interagisce con le viste materializzate, consulta Utilizza la sicurezza a livello di riga con altre funzionalità di BigQuery.
Combina la sicurezza a livello di colonna con le viste autorizzate
L'impatto della sicurezza a livello di colonna sulle viste è indipendente dal fatto che la vista sia autorizzata o meno.
Per una descrizione dettagliata di come vengono applicate le autorizzazioni, consulta Query sulle viste per la sicurezza a livello di colonna.
Utilizza la condivisione di BigQuery con le viste autorizzate
BigQuery sharing (in precedenza Analytics Hub) è una piattaforma di scambio di dati con le seguenti funzionalità:
- Consente di condividere dati e insight su larga scala oltre i confini dell'organizzazione.
- Utilizza un solido framework di sicurezza e privacy.
- Supporta la pubblicazione di un set di dati BigQuery, chiamato set di dati condiviso, e delle relative viste autorizzate e set di dati autorizzati associati, per un insieme di sottoscrittori.
Un set di dati collegato è un set di dati BigQuery di sola lettura che funge da puntatore o riferimento a un set di dati condiviso. La sottoscrizione di un elenco di condivisione crea un set di dati collegato nel tuo progetto, ma non una copia del set di dati, pertanto gli abbonati possono leggere i dati, ma non possono aggiungere o aggiornare oggetti al suo interno.
Le viste materializzate che fanno riferimento alle tabelle nel set di dati collegato non sono supportate.
Per saperne di più, consulta Introduzione alla condivisione.
Passaggi successivi
- Per un tutorial sulla creazione di una vista autorizzata, consulta Crea una vista autorizzata.
- Per creare una vista logica, consulta Crea viste logiche.
- Per creare una vista materializzata, che supporta altri tipi di controllo dell'accesso, consulta Crea viste materializzate.
- Per ottenere i metadati della vista, consulta Recupero di informazioni sulle viste.
- Per gestire le visualizzazioni, consulta Gestisci le visualizzazioni.