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 viste di 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 viste autorizzate.

Puoi creare un set di dati autorizzato in BigQuery utilizzando quanto segue:

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 delle colonne di una tabella, escluse le colonne 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 una query su una vista, senza concedere loro l'accesso diretto alle risorse a cui fa riferimento, puoi utilizzare una vista autorizzata. Una vista autorizzata consente, ad esempio, di condividere più dati limitati in una vista con gruppi o utenti specifici (principali), senza consentire alle entità di accedere a tutti i dati sottostanti. A tal fine, concedi alle entità l'accesso alla vista e concedendo alla vista l'accesso al set di dati che contiene i dati sottostanti.

Se vuoi concedere l'accesso a un set di dati in una raccolta di viste, senza dover autorizzare ogni singola vista, puoi raggruppare le viste in un set di dati per poi concedere al set di dati che contiene le viste di accesso al set di dati che contiene i dati. Puoi quindi concedere alle entità l'accesso al set di dati con il gruppo di viste o alle singole viste nel set di dati, se necessario. 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 gestione di identità e accessi (IAM), che ti consentono di aggiornare l'elenco di controllo di accesso del set di dati che stai condividendo.

Dopo aver autorizzato un set di dati, hai bisogno di queste autorizzazioni se vuoi creare o aggiornare le visualizzazioni nel set di dati autorizzato. Per scoprire di più, consulta Creare o aggiornare una vista 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.

Ruolo Risorsa
bigquery.dataOwner Il set di dati che stai condividendo.
bigquery.admin Il set di dati che stai condividendo.

Quote e limiti

I set di dati autorizzati sono soggetti a limiti relativi ai set di dati. Per ulteriori informazioni, consulta la sezione Limiti dei set di dati.

Autorizzare un set di dati

Puoi autorizzare la vista corrente e futura di un set di dati ad accedere a un altro set di dati aggiungendolo all'elenco per gli accessi del set di dati che vuoi condividere, come indicato di seguito:

console

  1. In Google Cloud Console, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi il progetto e seleziona il set di dati contenente i dati che vuoi condividere.

  3. Fai clic sull'icona Azioni e seleziona Apri.

  4. Nel riquadro dei dettagli visualizzato, fai clic su Condivisione e seleziona l'opzione Autorizza set di dati.

    Autorizzare un set di dati

  5. Nel riquadro Set di dati autorizzato visualizzato, inserisci l'ID set di dati del set di dati da autorizzare, nel seguente formato:

    PROJECT.AUTHORIZED_DATASET

    Ad esempio:

    myProject.myDataset

  6. Fai clic su Aggiungi autorizzazione, quindi su Chiudi.

bq

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Scrivi i metadati esistenti (incluso l'elenco di controllo di 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
    
  3. Utilizza un editor di testo per aggiungere il set di dati che vuoi autorizzare nella sezione access esistente del file JSON creato a FILE_PATH.

    Ad esempio:

     "access": [
       ...
       {
         "dataset": {
           "dataset": {
             "project_id": "PROJECT",
             "dataset_id": "AUTHORIZED_DATASET"
           },
           "target_types": "VIEWS"
         }
       }
     ]
    

  4. Aggiorna il set di dati condiviso utilizzando il comando bq update. Ad esempio:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
    
  5. 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

  1. Recupera i metadati correnti per il set di dati che vuoi condividere 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 che contiene metadati JSON per il set di dati.

  2. Aggiungi il set di dati che vuoi autorizzare nella sezione access dei metadati JSON che sono stati restituiti nella risorsa Dataset come segue:

    "access": [
     ...
     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
    ]
    
  3. Utilizza il metodo datasets.update per aggiornare il set di dati con l'autorizzazione aggiuntiva:

    PUT https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT/datasets/SHARED_DATASET
    

    Includi la risorsa Dataset aggiornata nel corpo della richiesta.

  4. Puoi verificare che il set di dati autorizzato sia stato aggiunto richiamando il metodo datasets.get.

Revoca dell'autorizzazione di un set di dati

Per revocare l'accesso concesso alle viste in un set di dati autorizzato, rimuovi il set di dati autorizzato dall'elenco per gli accessi del set condiviso come descritto di seguito:

console

  1. In Google Cloud Console, vai alla pagina BigQuery.

    Vai a BigQuery

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

  3. Fai clic sull'icona Azioni e seleziona Apri.

  4. Nel riquadro dei dettagli visualizzato, fai clic su Condivisione e seleziona l'opzione Autorizza set di dati.

    Autorizzare un set di dati

  5. Nel riquadro Set di dati autorizzato visualizzato, trova la voce per il set di dati autorizzato nella sezione Set di dati attualmente autorizzati.

  6. Fai clic sull'icona Elimina accanto al set di dati autorizzato che vuoi rimuovere, quindi fai clic su Chiudi.

bq

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Scrivi i metadati esistenti (incluso l'elenco di controllo di 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
    
  3. Utilizza un editor di testo per rimuovere il set di dati autorizzato dalla sezione access del file JSON creato a FILE_PATH, come segue:

       {
         "dataset": {
           "dataset": {
             "project_id": "PROJECT",
             "dataset_id": "AUTHORIZED_DATASET"
           },
           "target_types": "VIEWS"
         }
       }
    
  4. Aggiorna il set di dati condiviso utilizzando il comando bq update. Ad esempio:

    bq update --source FILE_PATH PROJECT:SHARED_DATASET
    
  5. 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

  1. Recupera i metadati correnti per il 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 che contiene metadati JSON per il set di dati.

  2. Rimuovi il set di dati autorizzato dalla sezione access del JSON che è stato restituito nella risorsa Dataset, ad esempio:

     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
    
  3. 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.

  4. Puoi verificare che il set di dati autorizzato sia stato rimosso chiamando nuovamente il metodo datasets.get.

Creare o aggiornare una vista in un set di dati autorizzato

Se vuoi creare o aggiornare una vista che si trova in un set di dati autorizzato, devi avere le autorizzazioni per il set di dati condiviso elencate in Autorizzazioni e ruoli obbligatori, oltre alle autorizzazioni necessarie per creare o aggiornare una vista in un set di dati standard.

Non hai bisogno di autorizzazioni aggiuntive per eliminare una vista da un set di dati autorizzato.

Eseguire una query su una vista in un set di dati autorizzato

Per eseguire query su una vista in un set di dati autorizzato, un utente deve avere accesso alla vista, ma l'accesso al set di dati condiviso non è necessario.

Per ulteriori informazioni, consulta Controllo dell'accesso alle viste.

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 visualizzazione private_table_filtered si basa su una query che restituisce, 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 nella tabella private_table, come indicato di seguito:

  1. Concedi il ruolo bigquery.dataViewer all'utente per il set di dati public_dataset. Questo ruolo include l'autorizzazione bigquery.tables.getData, che consente all'utente di eseguire query sulle viste nel set di dati public_dataset. Per informazioni su come concedere un ruolo a un utente per un set di dati, consulta Controllo dell'accesso ai set di dati.

    L'utente dispone ora dell'autorizzazione per eseguire query sulle viste in public_dataset, ma non può ancora accedere alla tabella private_table in private_dataset. Se l'utente cerca di eseguire direttamente una query sulla tabella private_table oppure tenta di accedere alla tabella private_table indirettamente facendo una query sulla vista private_table_filtered, riceverà 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.

  2. Nella pagina BigQuery di Google Cloud Console, apri il set di dati private_dataset, fai clic su Condivisione e seleziona Autorizza set di dati.

  3. Nel riquadro Set di dati autorizzato 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 di accesso del set di dati private_dataset, autorizzando le viste nel set di dati public_dataset a eseguire query sui dati nel set di dati private_dataset.

    L'utente ora può eseguire query sulla vista private_table_filtered nel set di dati public_dataset, che accede indirettamente al set di dati private_dataset, senza disporre di autorizzazioni per accedere direttamente ai dati nel set di dati private_dataset.

Passaggi successivi

  • Per informazioni su come autorizzare una singola vista ad accedere ai dati in un set di dati, consulta Viste 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.