Set di dati autorizzati
Questo documento descrive come utilizzare i set di dati autorizzati in BigQuery. Un set di dati autorizzato consente di autorizzare tutte le visualizzazioni in un set di dati specificato ad accedere ai dati di un secondo set di dati. Con un set di dati autorizzato, non è necessario configurare singole viste autorizzate.
Puoi creare un set di dati autorizzato in BigQuery utilizzando quanto segue:
- Nella console Google Cloud
- Il comando
bq update
- Metodo API
datasets.update
Panoramica
Una vista in BigQuery è una tabella virtuale definita da una query SQL. Ad esempio, la query di una vista potrebbe restituire solo un sottoinsieme di colonne di una tabella, escludendo quelle che contengono informazioni che consentono l'identificazione personale (PII). Per eseguire query su una vista, un utente deve avere accesso alle risorse a cui accede la query della vista.
Se vuoi consentire agli utenti di eseguire query su una vista, senza concedere loro l'accesso diretto alle risorse a cui fa riferimento la vista, puoi utilizzare una vista autorizzata. Una visualizzazione autorizzata ti consente, ad esempio, di condividere dati più limitati in una visualizzazione con gruppi o utenti (principali) specificati, senza dare ai principali accesso a tutti i dati sottostanti. Per farlo, devi concedere ai principali accesso alla vista e alla vista l'accesso al set di dati contenente i dati sottostanti.
Se vuoi concedere a una raccolta di visualizzazioni l'accesso 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 contenente le visualizzazioni l'accesso al set di dati contenente i dati. A seconda delle esigenze, puoi assegnare ai principali l'accesso al set di dati con il gruppo di visualizzazioni o alle singole visualizzazioni al suo interno. 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 richiesti
Per autorizzare un set di dati o revocarne l'autorizzazione, devi disporre delle seguenti autorizzazioni Identity and Access Management (IAM), che ti consentono di aggiornare l'elenco di controllo dell'accesso del set di dati che stai condividendo.
Dopo aver autorizzato un set di dati, devi disporre delle stesse autorizzazioni per creare o aggiornare le visualizzazioni nel set di dati autorizzato. Per ulteriori informazioni, consulta Creare o aggiornare una visualizzazione in un set di dati autorizzato.
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.
Role | Descrizione |
---|---|
bigquery.dataOwner
|
Proprietario dati BigQuery |
bigquery.admin
|
Amministratore BigQuery |
Quote e limiti
I set di dati autorizzati sono soggetti ai limiti dei set di dati. Per ulteriori informazioni, consulta la sezione Limiti dei set di dati.
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 di accesso del set di dati che vuoi condividere, come segue:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Spazio di esplorazione, espandi il progetto e seleziona il set di dati che contiene i dati che vuoi condividere.
Fai clic sull'icona
Azioni e seleziona Apri.Nel riquadro dei dettagli visualizzato, fai clic su Condivisione e seleziona l'opzione Autorizza set di dati.
Nel riquadro Set di dati autorizzati visualizzato, inserisci l'ID set di dati del set di dati che vuoi autorizzare nel seguente formato:
PROJECT.AUTHORIZED_DATASET
Ad esempio:
myProject.myDataset
Fai clic su Aggiungi autorizzazione e poi su Chiudi.
bq
Apri Cloud Shell:
Scrivere i metadati esistenti (incluso l'elenco di controllo dell'accesso'accesso) per il set di dati che vuoi condividere in un file JSON utilizzando il comando
bq show
.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Utilizza un editor di testo per aggiungere il set di dati che vuoi autorizzare nella sezione
access
esistente 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 comando
bq update
. 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
Per recuperare i metadati correnti del set di dati che vuoi condividere, chiama il metodo
datasets.get
, come segue:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Il corpo della risposta restituisce una risorsa
Dataset
contenente i metadati JSON per il set di dati.Aggiungi il set di dati che vuoi autorizzare alla sezione
access
dei metadati JSON restituiti nella risorsaDataset
come segue:"access": [ ... { "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } } ]
Utilizza il metodo
datasets.update
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
Dataset
aggiornata nel corpo della richiesta.Puoi verificare che il set di dati autorizzato sia stato aggiunto chiamando di nuovo il metodo
datasets.get
.
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 (ACL) del set di dati di origine. Durante questo periodo di tempo:
- Non potrai accedere ai dati di origine tramite il set di dati eliminato.
- Il set di dati eliminato potrebbe essere ancora visualizzato nell'ACL del set di dati di origine e essere conteggiato per eventuali limiti dei set di dati autorizzati. Ciò potrebbe impedirti di creare nuovi set di dati autorizzati finché l'ACL non viene aggiornato.
Per revocare l'accesso concesso alle visualizzazioni in un set di dati autorizzato, rimuovi il set di dati autorizzato dall'elenco di accesso del set di dati condiviso come segue:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto e seleziona il set di dati condiviso.
Fai clic sull'icona
Azioni e seleziona Apri.Nel riquadro dei dettagli visualizzato, fai clic su Condivisione e seleziona l'opzione Autorizza set di dati.
Nel riquadro Set di dati autorizzato visualizzato, individua 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 su Chiudi.
bq
Apri Cloud Shell:
Scrivere i metadati esistenti (incluso l'elenco di controllo dell'accesso'accesso) per il set di dati condiviso in un file JSON utilizzando il comando
bq show
.bq show --format=prettyjson PROJECT:SHARED_DATASET > FILE_PATH
Utilizza un editor di testo per rimuovere il set di dati autorizzato dalla sezione
access
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 comando
bq update
. 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 del set di dati condiviso chiamando il metodo
datasets.get
, come segue:GET https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
Il corpo della risposta restituisce una risorsa
Dataset
contenente i metadati JSON per il set di dati.Rimuovi il set di dati autorizzato dalla sezione
access
del JSON restituito nella risorsaDataset
, ad esempio:{ "dataset": { "dataset": { "project_id": "PROJECT", "dataset_id": "AUTHORIZED_DATASET" }, "target_types": "VIEWS" } }
Utilizza il metodo
datasets.update
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
Dataset
aggiornata nel corpo della richiesta.Puoi verificare che il set di dati autorizzato sia stato rimosso chiamando di nuovo il metodo
datasets.get
.
Creare o aggiornare una vista in un set di dati autorizzato
Per creare o aggiornare una vista in un set di dati autorizzato, devi disporre delle autorizzazioni per il set di dati condiviso elencate in Autorizzazioni e ruoli richiesti, oltre alle autorizzazioni necessarie per create o aggiornare una vista in un set di dati standard.
La tabella seguente riassume le autorizzazioni IAM (Gestione di identità e accessi) necessarie per creare o aggiornare una visualizzazione in un set di dati autorizzato:
Autorizzazione | Risorsa |
---|---|
bigquery.datasets.get
|
Il set di dati che stai condividendo. |
bigquery.tables.getData
|
Eventuali tabelle o viste del set di dati condiviso a cui viene fatto riferimento nella nuova vista che stai creando o aggiornando. |
bigquery.tables.create
|
Il set di dati autorizzato in cui stai creando una vista. |
bigquery.tables.update
|
Il set di dati autorizzato in cui stai aggiornando una visualizzazione. |
Non sono necessarie autorizzazioni aggiuntive per eliminare una vista da un set di dati autorizzato.
Esegui una 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 disporre dell'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
L'esempio seguente descrive come creare e utilizzare un set di dati autorizzato.
Supponiamo di avere 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 vista denominata private_table_filtered
. La vista 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 ai dati restituiti dalla vista private_table_filtered
, ma non a tutti i dati della tabella private_table
, come segue:
Concedi all'utente il ruolo
bigquery.dataViewer
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.Ora l'utente ha l'autorizzazione a eseguire query sulle visualizzazioni in
public_dataset
, ma non può ancora accedere alla tabellaprivate_table
inprivate_dataset
. Se l'utente tenta di eseguire query direttamente sulla tabellaprivate_table
o se tenta di accedere indirettamente alla tabellaprivate_table
eseguendo query sulla vistaprivate_table_filtered
, viene visualizzato 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 console Google Cloud, apri il set di dati
private_dataset
, fai clic su Condivisione e poi seleziona Autorizza set di dati.Nel riquadro Set di dati autorizzati visualizzato, inserisci
PROJECT.public_dataset
nel campo ID set di dati, quindi fai clic su Aggiungi autorizzazione.Il set di dati
public_dataset
viene aggiunto all'elenco di controllo dell'accesso del set di datiprivate_dataset
, autorizzando le visualizzazioni nel set di datipublic_dataset
a eseguire query sui dati nel set di datiprivate_dataset
.Ora l'utente può eseguire query sulla vista
private_table_filtered
nel set di datipublic_dataset
, che accede indirettamente al set di datiprivate_dataset
, senza disporre di autorizzazioni 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 su come autorizzare una singola visualizzazione ad accedere ai dati in un set di dati, consulta Visualizzazioni autorizzate.
Per informazioni su come autorizzare una funzione tabella o una funzione definita dall'utente#39;utente ad accedere ai dati in un set di dati, consulta Funzioni autorizzate.