Set di dati autorizzati
Questo documento descrive come utilizzare i set di dati autorizzati in BigQuery. Un set di dati autorizzato ti consente di autorizzare tutte le visualizzazioni in un set di dati specificato ad accedere ai dati in un secondo set di dati. Con un set di dati autorizzato, non è necessario configurare singole visualizzazioni autorizzate.
Panoramica
Una visualizzazione in BigQuery è una tabella virtuale definita da una query SQL. Ad esempio, la query di una visualizzazione potrebbe restituire solo un sottoinsieme delle colonne di una tabella, escludendo le colonne che contengono informazioni che consentono l'identificazione personale (PII). Per eseguire query su una visualizzazione, un utente deve avere accesso alle risorse a cui accede la query della visualizzazione.
Visualizzazioni autorizzate
Se vuoi consentire agli utenti di eseguire query su una visualizzazione senza concedere loro l'accesso diretto alle risorse a cui fa riferimento la visualizzazione, puoi utilizzare una vista autorizzata. Quando crei una vista autorizzata, puoi condividere una vista logica o una vista materializzata. Quando autorizzi una vista materializzata, viene chiamata visualizzazione materializzata autorizzata.
Una vista autorizzata ti consente, ad esempio, di condividere dati più limitati in una visualizzazione con gruppi o utenti (entità) specifici, senza concedere alle entità l'accesso a tutti i dati sottostanti. 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. La vista autorizzata, invece, ha accesso ai dati di origine.
Set di dati autorizzati
Se vuoi concedere l'accesso a un insieme di visualizzazioni a un set di dati, senza dover autorizzare ogni singola visualizzazione, puoi raggruppare le visualizzazioni in un set di dati e poi concedere al set di dati che contiene le visualizzazioni l'accesso al set di dati che contiene i dati. Puoi quindi concedere alle entità l'accesso al set di dati con il gruppo di visualizzazioni o alle singole visualizzazioni 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 suoi dati è chiamato set di dati condiviso.
Autorizzazioni e ruoli obbligatori
Per autorizzare un set di dati o revocare l'autorizzazione di un set di dati, devi disporre delle seguenti autorizzazioni di Identity and Access Management (IAM), che ti consentono di aggiornare l'elenco di controllo dell'accesso del set di dati che stai condividendo.
| Autorizzazione | Risorsa |
|---|---|
bigquery.datasets.get
|
Il set di dati che stai condividendo. |
bigquery.datasets.update
|
Il set di dati che stai condividendo. |
I seguenti ruoli IAM predefiniti forniscono le autorizzazioni richieste.
| Ruolo | Descrizione |
|---|---|
bigquery.dataOwner
|
Proprietario dati BigQuery |
bigquery.admin
|
Amministratore BigQuery |
Dopo aver autorizzato un set di dati, puoi creare o aggiornare le visualizzazioni nel set di dati autorizzato. Per ulteriori informazioni e per le autorizzazioni richieste, consulta Creare o aggiornare una visualizzazione in un set di dati autorizzato.
Quote e limiti
I set di dati autorizzati sono soggetti ai limiti dei set di dati. Per ulteriori informazioni, consulta Limiti dei set di dati.
L'elenco di controllo dell'accesso di un set di dati può avere fino a 2500 risorse autorizzate totali, tra cui visualizzazioni 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 raggruppare le visualizzazioni in set di dati autorizzati. Come best practice, raggruppa le visualizzazioni correlate in set di dati autorizzati quando progetti nuove BigQuery architectures, in particolare architetture multi-tenant.
Autorizzare un set di dati
Puoi autorizzare le visualizzazioni attuali e future di un set di dati ad accedere a un altro set di dati aggiungendo il set di dati che vuoi autorizzare all'elenco per gli accessi del set di dati che vuoi condividere, come segue:
Console
Nella Google Cloud console, vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.
Nel riquadro Spazio di esplorazione , espandi il progetto, fai clic su Set di dati e poi su un set di dati.
Nel riquadro dei dettagli visualizzato, fai clic su Condivisione e seleziona l'opzione Autorizza set di dati.
Nel riquadro Set di dati autorizzato visualizzato, inserisci l'ID set di dati del set di dati che vuoi autorizzare, nel seguente formato:
PROJECT.AUTHORIZED_DATASETAd esempio:
myProject.myDatasetFai clic su Aggiungi autorizzazione e poi su Chiudi.
bq
Apri Cloud Shell:
Scrivi i metadati esistenti (incluso l'elenco di controllo dell'accesso) per il set di dati che vuoi condividere in un file JSON utilizzando il
bq showcomando.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Utilizza un editor di testo per aggiungere il set di dati che vuoi autorizzare alla sezione
accessesistente del file JSON creato in FILE_PATH.Ad esempio:
"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
Aggiorna il set di dati condiviso utilizzando il
bq updatecomando. Ad esempio:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Per verificare che il set di dati autorizzato sia stato aggiunto, inserisci di nuovo il comando
bq show. Ad esempio:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
Recupera i metadati correnti per il set di dati che vuoi condividere chiamando il
datasets.getmetodo nel seguente modo:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Il corpo della risposta restituisce una
Datasetrisorsa che contiene i metadati JSON per il set di dati.Aggiungi il set di dati che vuoi autorizzare alla sezione
accessdei metadati JSON restituiti nella risorsaDatasetnel seguente modo:"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
Utilizza il
datasets.updatemetodo per aggiornare il set di dati con l'autorizzazione aggiunta:PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Includi la risorsa
Datasetaggiornata nel corpo della richiesta.Puoi verificare che il set di dati autorizzato sia stato aggiunto chiamando di nuovo il
datasets.getmetodo.
Revocare l'autorizzazione di un set di dati
Quando elimini un set di dati autorizzato ad accedere a un altro set di dati di origine, possono essere necessarie fino a 24 ore prima che la modifica venga applicata completamente agli elenchi di controllo dell'accesso (ECA) del set di dati di origine. Durante questo periodo:
- Non potrai accedere ai dati di origine tramite il set di dati eliminato.
- Il set di dati eliminato potrebbe essere ancora visualizzato nell'ECA del set di dati di origine e conteggiato ai fini di eventuali limiti dei set di dati autorizzati. Ciò potrebbe impedirti di creare nuovi set di dati autorizzati finché l'ECA non viene aggiornato.
Per revocare l'accesso concesso alle visualizzazioni in un set di dati autorizzato, rimuovi il set di dati autorizzato dall'elenco per gli accessi del set di dati condiviso, come segue:
Console
Nella Google Cloud console, vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Spazio di esplorazione:

Nel riquadro Spazio di esplorazione , espandi il progetto, fai clic su Set di dati e poi su un set di dati.
Nel riquadro dei dettagli visualizzato, fai clic su Condivisione e seleziona l'opzione Autorizza set di dati.
Nel riquadro Set di dati autorizzato visualizzato, trova la voce relativa al set di dati autorizzato nella sezione Set di dati attualmente autorizzati.
Fai clic sull'icona Elimina accanto al set di dati autorizzato che vuoi rimuovere, quindi fai clic su Chiudi.
bq
Apri Cloud Shell:
Scrivi i metadati esistenti (incluso l'elenco di controllo dell'accesso) per il set di dati condiviso in un file JSON utilizzando il
bq showcomando.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Utilizza un editor di testo per rimuovere il set di dati autorizzato dalla
accesssezione del file JSON creato in FILE_PATH, come segue:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
Aggiorna il set di dati condiviso utilizzando il
bq updatecomando. Ad esempio:bq update --source FILE_PATH PROJECT:SHARED_DATASET
Per verificare che il set di dati autorizzato sia stato rimosso, inserisci di nuovo il comando
bq show. Ad esempio:bq show --format=prettyjson PROJECT:SHARED_DATASET
API
Recupera i metadati correnti per il set di dati condiviso chiamando il
datasets.getmetodo nel seguente modo:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Il corpo della risposta restituisce una
Datasetrisorsa che contiene i metadati JSON per il set di dati.Rimuovi il set di dati autorizzato dalla sezione
accessdel file JSON restituito nella risorsaDataset, ad esempio:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
Utilizza il
datasets.updatemetodo per aggiornare il set di dati con l'autorizzazione rimossa:PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Includi la risorsa
Datasetaggiornata nel corpo della richiesta.Puoi verificare che il set di dati autorizzato sia stato rimosso chiamando di nuovo il
datasets.getmetodo.
Creare o aggiornare una visualizzazione in un set di dati autorizzato
Per creare o aggiornare una visualizzazione in un set di dati autorizzato, devi disporre delle autorizzazioni per il set di dati condiviso elencate in Autorizzazioni e ruoli obbligatori, oltre alle autorizzazioni necessarie per creare o aggiornare una visualizzazione in un set di dati standard.
| Autorizzazione | Risorsa |
|---|---|
bigquery.datasets.get
|
Il set di dati che stai condividendo. |
bigquery.tables.getData
|
Tutte le tabelle o le visualizzazioni del set di dati condiviso a cui viene fatto riferimento nella nuova visualizzazione che stai creando o aggiornando. |
bigquery.tables.create
|
Il set di dati autorizzato in cui stai creando una visualizzazione. |
bigquery.tables.update
|
Il set di dati autorizzato in cui stai aggiornando una visualizzazione. |
Non sono necessarie autorizzazioni aggiuntive per eliminare una visualizzazione da un set di dati autorizzato.
- Autorizzazione di un set di dati: concessione iniziale dell'accesso di un set di dati a un set di dati condiviso.
Gestione delle singole visualizzazioni autorizzate: aggiunta o rimozione di una visualizzazione specifica dall'elenco autorizzato di un set di dati condiviso.
Per ulteriori informazioni, consulta Ruoli obbligatori.
Eseguire query su una visualizzazione in un set di dati autorizzato
Per eseguire query su una visualizzazione in un set di dati autorizzato, un utente deve avere accesso alla visualizzazione, ma non è necessario l'accesso al set di dati condiviso.
Per ulteriori informazioni, consulta Visualizzazioni autorizzate.
Esempio di set di dati autorizzato
Il seguente esempio descrive come creare e utilizzare un set di dati autorizzato.
Supponiamo che tu abbia due set di dati, denominati private_dataset e public_dataset.
Il set di dati private_dataset contiene una tabella denominata private_table. Il set di dati public_dataset contiene una visualizzazione denominata private_table_filtered. La visualizzazione
private_table_filtered si basa su una query che restituisce alcuni, ma non
tutti, i campi della tabella private_table.
Puoi concedere a un utente l'accesso a
i dati restituiti dalla visualizzazione private_table_filtered, ma non a tutti i dati
della tabella private_table, come segue:
Concedi il ruolo
bigquery.dataViewerall'utente per il set di datipublic_dataset. Questo ruolo include l'autorizzazionebigquery.tables.getData, che consente all'utente di eseguire query sulle visualizzazioni nel set di datipublic_dataset. Per informazioni su come concedere un ruolo a un utente per un set di dati, consulta Controllare l'accesso ai set di dati.L'utente ora ha l'autorizzazione per eseguire query sulle visualizzazioni in
public_dataset, ma non può ancora accedere alla tabellaprivate_tableinprivate_dataset. Se l'utente tenta di eseguire query direttamente sulla tabellaprivate_tableo di accedere indirettamente alla tabellaprivate_tableeseguendo query sulla visualizzazioneprivate_table_filtered, riceve un messaggio di errore simile al seguente:Access Denied: Table PROJECT:private_dataset.private_table: User does not have permission to query table PROJECT:private_dataset.private_table.Nella pagina BigQuery della Google Cloud console, apri il
private_datasetset di dati, fai clic su Condivisione e poi seleziona Autorizza set di dati.Nel riquadro Set di dati autorizzato visualizzato, inserisci
PROJECT.public_datasetnel campo ID set di dati, e poi fai clic su Aggiungi autorizzazione.Il set di dati
public_datasetviene aggiunto all'elenco di controllo dell'accesso del set di datiprivate_dataset, autorizzando le visualizzazioni nel set di datipublic_dataseta eseguire query sui dati nel set di datiprivate_dataset.L'utente può ora eseguire query sulla visualizzazione
private_table_filterednel set di datipublic_dataset, che accede indirettamente al set di datiprivate_dataset, senza avere alcuna autorizzazione per accedere direttamente ai dati nel set di datiprivate_dataset.
Limitazioni
- Puoi creare set di dati autorizzati in regioni diverse, ma BigQuery non supporta le query tra regioni. Pertanto, ti consigliamo di creare set di dati nella stessa regione.
Passaggi successivi
Per informazioni sull'autorizzazione di una singola visualizzazione per accedere ai dati in un set di dati, consulta Visualizzazioni autorizzate.
Per informazioni sull'autorizzazione di una funzione di tabella o di una funzione definita dall'utente per accedere ai dati in un set di dati, consulta Funzioni autorizzate.