Visualizzazioni autorizzate

Questo documento descrive come creare viste autorizzate e viste materializzate autorizzate in BigQuery.

Panoramica

In qualità di amministratore dei dati, puoi creare una visualizzazione autorizzata per condividere un sottoinsieme di dati in un set di dati con utenti e gruppi specifici (principal). I principal possono visualizzare i dati che condividi ed eseguire query, 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 nella cache periodicamente 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. Tuttavia, l'esecuzione di query solo su un sottoinsieme dei dati o l'utilizzo di altre tecniche può spesso migliorare le prestazioni senza la necessità di creare una vista materializzata.

Per maggiori informazioni, consulta le seguenti risorse:

Passaggi di alto livello per la creazione di viste autorizzate

Per creare e condividere una vista, esamina questi passaggi di alto livello, 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 dei dati possono visualizzare nei risultati della query.
  • Concedi agli analisti dei dati l'autorizzazione a eseguire job di query.
  • Concedi agli analisti dei dati l'accesso al set di dati che contiene la visualizzazione autorizzata.
  • Concedi alla vista autorizzata l'accesso 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 criteri a livello di riga in una tabella.
  • Imposta i criteri a livello di colonna in una tabella.
  • Archivia i dati in una tabella separata.
  • Condividere tutte le visualizzazioni in un set di dati (set di dati autorizzati).

Utilizza la sicurezza a livello di riga o di colonna oppure tabelle separate

Impostando criteri 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 capacità di un utente di visualizzare questi dati. La memorizzazione 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 criteri, 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 criteri a livello di riga è flessibile e sicura, mentre la condivisione di visualizzazioni autorizzate è flessibile e offre il miglior rendimento.

Per confrontare questi metodi nel dettaglio, consulta le seguenti risorse:

Condividere tutte le visualizzazioni in un set di dati

Se vuoi concedere a una raccolta di viste l'accesso a un set di dati 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 contenente il gruppo di viste o alle singole viste nel set di dati, in base alle 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.

Per ulteriori informazioni, vedi Set di dati autorizzati e Autorizzare 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 posizione regionale.
  • Quando elimini una visualizzazione autorizzata, potrebbero essere necessarie fino a 24 ore prima che venga rimossa dall'elenco delle visualizzazioni. Durante questo periodo, non puoi accedere alla visualizzazione autorizzata, ma la visualizzazione autorizzata eliminata può essere visualizzata nell'elenco delle visualizzazioni e viene conteggiata ai fini del limite delle visualizzazioni autorizzate. Questo limite può impedire la creazione di ulteriori visualizzazioni autorizzate se la nuova visualizzazione autorizzata dovesse superarlo.

Prima di iniziare

Concedi 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.

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 visualizzazione.

Autorizzazioni di amministratore per il set di dati che contiene la visualizzazione

Le viste vengono trattate come risorse di tabelle 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 una vista, devi disporre dell'autorizzazione IAM bigquery.tables.create. Il ruolo IAM predefinito roles/bigquery.dataEditor include le autorizzazioni necessarie per creare una vista.

Inoltre, se disponi dell'autorizzazione bigquery.datasets.create, puoi creare viste nei set di dati che crei. Per creare una vista per i dati che non ti appartengono, devi disporre dell'autorizzazione bigquery.tables.getData per quella tabella.

Per saperne di più su ruoli e autorizzazioni IAM in BigQuery, vedi Ruoli e autorizzazioni predefiniti.

Autorizzazioni di amministratore sul secondo set di dati che concede l'accesso alla visualizzazione

Per aggiornare le proprietà del set di dati, devi disporre delle seguenti autorizzazioni IAM:

  • bigquery.datasets.update
  • bigquery.datasets.setIamPolicy (obbligatorio solo quando aggiorni i controlli di accesso al set di dati nella console Trusted Cloud )

Il ruolo IAM predefinito roles/bigquery.dataOwner include le autorizzazioni necessarie per aggiornare le proprietà del set di dati.

Inoltre, se disponi dell'autorizzazione bigquery.datasets.create, puoi aggiornare le proprietà dei set di dati che crei.

Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.

Autorizzazioni utente per il progetto e il set di dati per la visualizzazione

Per condividere una vista autorizzata con utenti o gruppi, devi concedere agli utenti o ai gruppi le seguenti autorizzazioni IAM:

  • Il ruolo IAM roles/bigquery.user per il progetto che contiene la vista autorizzata.
  • Il ruolo IAM roles/bigquery.dataViewer per il set di dati che contiene la vista autorizzata.

Utilizzare le viste autorizzate

Le sezioni seguenti descrivono come utilizzare le viste autorizzate e le viste materializzate autorizzate.

Creare una vista autorizzata

Per creare una vista autorizzata, scegli una delle seguenti opzioni. Per la procedura completa per autorizzare, condividere ed eliminare una vista autorizzata, consulta il tutorial Creare una vista autorizzata.

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor query, digita la query su cui vuoi basare la visualizzazione autorizzata.

  3. Fai clic su Salva > Salva visualizzazione.

  4. Nella finestra di dialogo Salva visualizzazione, procedi nel seguente modo:

    1. In Progetto, digita il progetto in cui salvare la visualizzazione.

    2. Per Set di dati, digita il set di dati in cui salvare la visualizzazione. Deve essere un set di dati diverso da quello utilizzato nella query di origine.

    3. In Tabella, digita il nome della visualizzazione.

    4. Fai clic su Salva.

  5. Concedi le autorizzazioni necessarie agli utenti che possono utilizzare la visualizzazione autorizzata.

  6. Nel riquadro Explorer, seleziona il set di dati utilizzato nella query di origine.

  7. Nel riquadro Dettagli, fai clic su Condivisione > Autorizza visualizzazioni.

  8. Nel riquadro Viste autorizzate, per Vista autorizzata, digita il nome completo della vista, nel formato PROJECT_ID.DATASET_ID.VIEW_NAME.

  9. Fai clic su Aggiungi autorizzazione.

Terraform

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.

# Creates an authorized view.

# Create a dataset to contain the view.
resource "google_bigquery_dataset" "view_dataset" {
  dataset_id  = "view_dataset"
  description = "Dataset that contains the view"
  location    = "us-west1"
}

# Create the view to authorize.
resource "google_bigquery_table" "movie_view" {
  project     = google_bigquery_dataset.view_dataset.project
  dataset_id  = google_bigquery_dataset.view_dataset.dataset_id
  table_id    = "movie_view"
  description = "View to authorize"

  view {
    query          = "SELECT item_id, avg(rating) FROM `movie_project.movie_dataset.movie_ratings` GROUP BY item_id ORDER BY item_id;"
    use_legacy_sql = false
  }
}


# Authorize the view to access the dataset
# that the query data originates from.
resource "google_bigquery_dataset_access" "view_authorization" {
  project    = "movie_project"
  dataset_id = "movie_dataset"

  view {
    project_id = google_bigquery_table.movie_view.project
    dataset_id = google_bigquery_table.movie_view.dataset_id
    table_id   = google_bigquery_table.movie_view.table_id
  }
}

# Specify the IAM policy for principals that can access
# the authorized view. These users should already
# have the roles/bigqueryUser role at the project level.
data "google_iam_policy" "principals_policy" {
  binding {
    role = "roles/bigquery.dataViewer"
    members = [
      "group:example-group@example.com",
    ]
  }
}

# Set the IAM policy on the authorized  view.
resource "google_bigquery_table_iam_policy" "authorized_view_policy" {
  project     = google_bigquery_table.movie_view.project
  dataset_id  = google_bigquery_table.movie_view.dataset_id
  table_id    = google_bigquery_table.movie_view.table_id
  policy_data = data.google_iam_policy.principals_policy.policy_data
}

Per applicare la configurazione di Terraform in un progetto Trusted Cloud , completa i passaggi nelle sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Trusted 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).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file viene denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice campione nel 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.

  3. Rivedi e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. 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

  1. 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.

  2. 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).

  3. Apri il tuo Trusted Cloud progetto per visualizzare i risultati. Nella console Trusted Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.

Gestire utenti o gruppi per le visualizzazioni autorizzate

Dopo aver autorizzato una vista, puoi mantenere l'accesso completando le seguenti attività per un set di dati, una tabella o una vista:

  • Visualizza la policy di accesso.
  • Concedi l'accesso.
  • Revoca l'accesso.
  • Rifiuta l'accesso.

Per ulteriori informazioni, consulta Controllare l'accesso alle risorse utilizzando IAM.

Rimuovere l'autorizzazione a una visualizzazione

Per rimuovere l'autorizzazione a una vista, seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery nella console Trusted Cloud .

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi il progetto e seleziona un set di dati.

  3. Fai clic su Condivisione > Autorizza visualizzazioni.

  4. Fai clic su per Rimuovere l'autorizzazione.

  5. Fai clic su Chiudi.

bq

Per rimuovere l'autorizzazione da una vista, utilizza il comando bq rm. Inserisci il table_id per la visualizzazione 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 visualizzazione autorizzata per il tuo set di dati. Per ulteriori informazioni, vedi Tabelle.

Quote e limiti

  • Le visualizzazioni autorizzate sono soggette ai limiti del set di dati. Per maggiori informazioni, consulta la pagina Limiti dei set di dati.
  • Se rimuovi una visualizzazione autorizzata, potrebbero essere necessarie fino a 24 ore prima che tutti i riferimenti alla visualizzazione 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.

Combinare 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 ai criteri 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 visualizzazioni materializzate, consulta Utilizzare la sicurezza a livello di riga con altre funzionalità BigQuery.

Combinare 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 una vista autorizzata.

Per una descrizione dettagliata di come vengono applicate le autorizzazioni, vedi Visualizzazioni query per la sicurezza a livello di colonna.

Utilizzare la condivisione 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 approfondimenti su larga scala oltre i confini organizzativi.
  • 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, a un insieme di abbonati.

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 a un elenco di condivisione crea un set di dati collegato nel progetto, ma non una copia del set di dati, quindi gli abbonati possono leggere i dati, ma non possono aggiungere o aggiornare gli oggetti al suo interno.

Le viste materializzate che fanno riferimento a tabelle nel set di dati collegato non sono supportate.

Per ulteriori informazioni, consulta la sezione Introduzione alla condivisione.

Passaggi successivi