Set di dati autorizzati

Questo documento descrive come utilizzare i set di dati autorizzati in in BigQuery. Un set di dati autorizzato consente di autorizzare tutte le viste in un per accedere ai dati di un secondo set di dati. Con un non è necessario configurare un'istanza viste autorizzate.

Puoi creare un set di dati autorizzato in BigQuery utilizzando seguenti:

Panoramica

Una vista in BigQuery è una tabella virtuale definito da una query SQL. Ad esempio, la query di una vista potrebbe restituire solo un sottoinsieme delle colonne di una tabella, escluse le colonne contenenti informazioni che consentono l'identificazione personale (PII). Per eseguire una query su una vista, un utente deve avere 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 ai risorse a cui fa riferimento la vista, puoi utilizzare una vista autorizzata. Un visualizzazione autorizzata ti consente, ad esempio, di condividere Più dati limitati in una vista con gruppi o utenti (entità) specifici, senza dando alle entità l'accesso a tutti i dati sottostanti. Per farlo devi assegnare alle entità l'accesso alla vista, concedendo all'utente l'accesso in visualizzazione al set di dati che contiene la descrizione e i dati di Google Cloud.

Se vuoi concedere a una raccolta di viste l'accesso a un set di dati, senza per autorizzare ogni singola vista, puoi raggrupparle in una e assegna 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 con il gruppo di viste. 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 relativi dati viene chiamato il set di dati condiviso.

Autorizzazioni e ruoli richiesti

Per autorizzare un set di dati o per revocare l'autorizzazione di un set di dati, devi avere quanto segue Autorizzazioni IAM (Identity and Access Management), 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, hai bisogno delle stesse autorizzazioni se vuoi e creare o aggiornare le viste nel set di dati autorizzato. Per ulteriori informazioni, vedi Crea o aggiorna 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.

Le seguenti impostazioni predefinite Ruoli IAM fornisci le autorizzazioni richieste.

Role 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 Limiti dei set di dati.

Autorizza un set di dati

Puoi autorizzare le viste 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

  1. Nella console Google Cloud, 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' Azioni e seleziona Apri.

  4. Nel riquadro dei dettagli che viene visualizzato, fai clic su Condivisione e seleziona Autorizza Set di dati.

    Autorizza un set di dati

  5. 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_DATASET

    Ad esempio:

    myProject.myDataset

  6. Fai clic su Aggiungi autorizzazione e poi su Chiudi.

bq

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Scrivi i metadati esistenti (incluso l'elenco di controllo dell'accesso) per del set di dati che desideri condividere file JSON utilizzando 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 nel access esistente del file JSON creato in 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 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 bq show il comando precedente. Ad esempio:

    bq show --format=prettyjson PROJECT:SHARED_DATASET

API

  1. Get the current metadata for the dataset you want to share by calling the datasets.get method, as follows:

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

    Il corpo della risposta restituisce un Dataset che contiene metadati JSON per il set di dati.

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

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

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

Revoca l'autorizzazione di un set di dati

Quando elimini un set di dati autorizzato ad accedere a un altro set di dati di origine, può possono trascorrere fino a 24 ore prima che la modifica venga riportata completamente nel set di dati di origine elenchi di controllo dell'accesso (ACL). Durante questo volta:

  • Non potrai accedere ai dati di origine tramite il set di dati eliminato.
  • Il set di dati eliminato potrebbe essere ancora visualizzato nell'ACL e nel conteggio del set di dati di origine rispetto ai limiti autorizzati del set di dati. Questo potrebbe impedirti di creare fino all'aggiornamento dell'ACL.

Per revocare l'accesso concesso alle viste in un set di dati autorizzato, rimuovi dell'elenco per gli accessi del set di dati condiviso, che segue:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi il progetto e seleziona l'elemento del set di dati.

  3. Fai clic sull' Azioni e seleziona Apri.

  4. Nel riquadro dei dettagli che viene visualizzato, fai clic su Condivisione e seleziona Autorizza set di dati.

    Autorizza un set di dati

  5. Nel riquadro Set di dati autorizzato visualizzato, trova la voce relativa alla nella sezione Set di dati attualmente autorizzati.

  6. Fai clic sull'icona Elimina accanto al set di dati autorizzato da rimuovere. e fai clic su Chiudi.

bq

  1. Apri Cloud Shell:

    Vai a Cloud Shell

  2. Scrivi i metadati esistenti (incluso l'elenco di controllo dell'accesso) per in un set di dati condiviso file JSON utilizzando 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 da access del file JSON creato in FILE_PATH, come che segue:

       {
         "dataset": {
           "dataset": {
             "project_id": "PROJECT",
             "dataset_id": "AUTHORIZED_DATASET"
           },
           "target_types": "VIEWS"
         }
       }
    
  4. Aggiorna il set di dati condiviso utilizzando 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 bq show il comando precedente. Ad esempio:

    bq show --format=prettyjson PROJECT:SHARED_DATASET

API

  1. Get the current metadata for the shared dataset by calling the datasets.get method, as follows:

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

    Il corpo della risposta restituisce un Dataset che contiene metadati JSON per il set di dati.

  2. Rimuovi il set di dati autorizzato da access del JSON restituito nella risorsa Dataset, per esempio:

     {
       "dataset": {
         "dataset": {
           "project_id": "PROJECT",
           "dataset_id": "AUTHORIZED_DATASET"
         },
         "target_types": "VIEWS"
       }
     }
    
  3. Utilizza la 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 il metodo datasets.get .

Crea o aggiorna una vista in un set di dati autorizzato

Per creare o aggiornare una vista che si trova in un set di dati autorizzato, è necessario disporre delle autorizzazioni per il set di dati condiviso elencati Autorizzazioni e ruoli richiesti oltre alle autorizzazioni necessarie per create o aggiornare una vista in un un set di dati standard.

La tabella seguente riassume le Autorizzazioni IAM (Identity and Access Management) per creare o aggiornare una vista che si trova 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.
bigquery.tables.getData Tutte le 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 vista.

Non hai bisogno di autorizzazioni aggiuntive per elimina una visualizzazione da un un set di dati autorizzato.

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 ma l'accesso al set di dati condiviso non è richiesto.

Per ulteriori informazioni, vedi Visualizzazioni autorizzate.

Esempio di set di dati autorizzato

L'esempio seguente descrive come creare e utilizzare un set di dati autorizzato.

Supponi di avere due set di dati, denominati private_dataset e public_dataset. Il set di dati private_dataset contiene una tabella denominata private_table. La Il set di dati public_dataset contiene una vista denominata private_table_filtered. La La visualizzazione private_table_filtered si basa su una query che ne restituisce alcuni, ma non tutti i campi della tabella private_table.

Puoi concedere a un utente l'accesso a i dati restituiti dalla vista private_table_filtered, ma non tutti i dati in la tabella private_table, come segue:

  1. Concedi il ruolo bigquery.dataViewer all'utente per public_dataset del set di dati. 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 ora dispone dell'autorizzazione per eseguire query sulle visualizzazioni in public_dataset, ma non riesce ancora ad accedere alla tabella private_table in private_dataset. Se l'utente prova a eseguire query sulla tabella private_table direttamente o se tentano di accedere alla tabella private_table indirettamente eseguendo una query sulla vista private_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.

  2. Nella pagina BigQuery della console Google Cloud, apri la private_datasetset di dati, fai clic Condivisione, quindi seleziona Autorizza set di dati.

  3. Nel riquadro Set di dati autorizzato visualizzato, inserisci PROJECT.public_dataset nel campo ID set di dati, e fai clic su Aggiungi autorizzazione.

    Il set di dati public_dataset viene aggiunto all'elenco di controllo dell'accesso del Set di dati private_dataset, autorizzando le visualizzazioni in public_dataset per eseguire query sui dati nel set di dati private_dataset.

    Ora l'utente può eseguire query sulla vista private_table_filtered in public_dataset che accede indirettamente al set di dati private_dataset, senza dover eventuali autorizzazioni per accedere direttamente ai dati nel set di dati private_dataset.

Limitazioni

  • Puoi creare set di dati autorizzati in diverse regioni, ma BigQuery non supporta le query tra regioni. Pertanto, ti consigliamo di creare i set di dati nella stessa regione.

Passaggi successivi

  • Per informazioni su come autorizzare una singola vista ad accedere ai dati in una del set di dati, consulta Visualizzazioni autorizzate.

  • Per informazioni su come autorizzare una funzione di tabella o una funzione definita dall'utente per accedere ai dati in un set di dati, vedi Funzioni autorizzate.