Modifiche ai controlli di accesso a livello di set di dati
Se attivi l'applicazione della configurazione enable_fine_grained_dataset_acls_option per i controlli dell'accesso a livello di set di dati, è necessaria l'autorizzazione Identity and Access Management (IAM) bigquery.datasets.getIamPolicy per visualizzare i controlli dell'accesso di un set di dati ed eseguire query sulla visualizzazione INFORMATION_SCHEMA.OBJECT_PRIVILEGES. L'autorizzazione bigquery.datasets.setIamPolicy è necessaria per aggiornare i controlli dell'accesso di un set di dati o per creare un set di dati con controlli dell'accesso utilizzando l'API.
Se non accetti, i controlli dell'accesso a livello di set di dati rimangono invariati.
Attivare l'applicazione
Puoi attivare l'applicazione delle modifiche alle autorizzazioni. Quando attivi questa opzione, l'autorizzazione bigquery.datasets.getIamPolicy è
necessaria per ottenere i controlli dell'accesso di un set di dati e l'autorizzazione
bigquery.datasets.setIamPolicy è necessaria per aggiornare i controlli dell'accesso di un set di dati o per creare un set di dati con controlli dell'accesso utilizzando l'API.
Per attivare l'applicazione, imposta l'impostazione di configurazione enable_fine_grained_dataset_acls_option su TRUE a livello di organizzazione o progetto. Se vuoi disattivare la funzionalità dopo averla attivata, imposta l'impostazione di configurazione enable_fine_grained_dataset_acls_option su FALSE a livello di organizzazione o progetto. Per
istruzioni su come attivare le impostazioni di configurazione, vedi Gestire le impostazioni
di configurazione.
Esempi di impostazioni di configurazione
Gli esempi seguenti mostrano come impostare e rimuovere l'impostazione di configurazione enable_fine_grained_dataset_acls_option.
Configurare le impostazioni dell'organizzazione
Per configurare le impostazioni dell'organizzazione, utilizza l'istruzione DDL ALTER ORGANIZATION SET OPTIONS.
L'esempio seguente imposta enable_fine_grained_dataset_acls_option su TRUE
a livello di organizzazione:
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);
Sostituisci REGION con la
regione
associata alla tua organizzazione, ad esempio us o europe-west6.
L'esempio seguente cancella l'impostazione
enable_fine_grained_dataset_acls_option a livello di organizzazione:
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);
Configura le impostazioni del progetto
Per configurare le impostazioni del progetto, utilizza l'istruzione DDL ALTER PROJECT SET OPTIONS.
L'istruzione DDL ALTER PROJECT SET OPTIONS accetta facoltativamente la variabile
project_id. Se project_id non è specificato, il valore predefinito è il
progetto corrente in cui viene eseguita la query.
L'esempio seguente imposta enable_fine_grained_dataset_acls_option su TRUE.
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = TRUE);
Sostituisci PROJECT_ID con l'ID progetto.
L'esempio seguente cancella l'impostazione
enable_fine_grained_dataset_acls_option a livello di progetto:
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.enable_fine_grained_dataset_acls_option` = FALSE);
Modifiche ai ruoli personalizzati
Se attivi l'applicazione delle modifiche alle autorizzazioni, tutti i ruoli personalizzati che
concedono l'autorizzazione bigquery.datasets.get, bigquery.datasets.create o
bigquery.datasets.update e non concedono anche l'autorizzazione
bigquery.datasets.getIamPolicy o bigquery.datasets.setIamPolicy
sono interessati.
Tutti i ruoli personalizzati che includono solo l'autorizzazione bigquery.datasets.get, bigquery.datasets.update o bigquery.datasets.create devono essere aggiornati in modo da includere l'autorizzazione bigquery.datasets.getIamPolicy o bigquery.datasets.setIamPolicy, se vuoi mantenere la funzionalità esistente dei ruoli personalizzati. Se i tuoi ruoli personalizzati
devono visualizzare o aggiornare solo i metadati di un set di dati, utilizza i nuovi parametri dataset_view e
update_mode.
I ruoli predefiniti di BigQuery non sono interessati da questa modifica. Tutti i
ruoli predefiniti che concedono l'autorizzazione bigquery.datasets.get concedono anche
l'autorizzazione bigquery.datasets.getIamPolicy. Tutti i ruoli predefiniti che
concedono l'autorizzazione bigquery.datasets.update concedono anche
l'autorizzazione bigquery.datasets.setIamPolicy.
Modifiche ai comandi dello strumento a riga di comando bq
Quando attivi l'applicazione anticipata, i seguenti comandi dello strumento bq sono interessati.
bq show
Puoi utilizzare il comando bq show con il seguente flag:
--dataset_view={METADATA|ACL|FULL}- Specifica come applicare le autorizzazioni quando visualizzi i controlli di accesso o i metadati di un set di dati.
Utilizza uno dei seguenti valori:
METADATA: visualizza solo i metadati del set di dati. Questo valore richiede l'autorizzazionebigquery.datasets.get.ACL: visualizza solo i controlli dell'accesso del set di dati. Questo valore richiede l'autorizzazionebigquery.datasets.getIamPolicy.FULL: visualizza sia i metadati che i controlli di accesso del set di dati. Questo valore richiede l'autorizzazionebigquery.datasets.getebigquery.datasets.getIamPolicy.
bq update
Puoi utilizzare il comando bq update con il seguente flag:
--update_mode={UPDATE_METADATA|UPDATE_ACL|UPDATE_FULL}- Specifica come applicare le autorizzazioni quando aggiorni i controlli di accesso o i metadati di un set di dati.
Utilizza uno dei seguenti valori:
UPDATE_METADATA: aggiorna solo i metadati del set di dati. Questo valore richiede l'autorizzazionebigquery.datasets.update.UPDATE_ACL: aggiorna solo i controlli dell'accesso del set di dati. Questo valore richiede l'autorizzazionebigquery.datasets.setIamPolicy.UPDATE_FULL: aggiorna sia i metadati che i controlli dell'accesso del set di dati. Questo valore richiede l'autorizzazionebigquery.datasets.updateebigquery.datasets.setIamPolicy.
Modifiche alle istruzioni DCL (Data Control Language)
Se attivi l'applicazione anticipata, per eseguire le istruzioni GRANT e REVOKE sui set di dati utilizzando il Data Control Language (DCL), sono necessarie le seguenti autorizzazioni:
bigquery.datasets.setIamPolicy
Modifiche alle query di visualizzazione di INFORMATION_SCHEMA
Quando attivi l'applicazione anticipata, è necessaria l'autorizzazione bigquery.datasets.getIamPolicy
per eseguire query sulla
visualizzazione INFORMATION_SCHEMA.OBJECT_PRIVILEGES.
Modifiche ai metodi API
Dopo aver attivato l'applicazione forzata anticipata, i seguenti metodi dell'API REST v2 per i set di dati sono interessati.
Metodo datasets.get
Il metodo datasets.get ha
un parametro di percorso
aggiuntivo denominato dataset_view.
Questo parametro ti offre un maggiore controllo sulle informazioni restituite dal metodo
datasets.get. Anziché restituire sempre sia i controlli dell'accesso sia i metadati, il parametro dataset_view ti consente di specificare se restituire solo i metadati, solo i controlli dell'accesso o entrambi.
Il campo access nella risorsa dataset
contiene i controlli dell'accesso del set di dati. Gli altri campi, come friendlyName,
description e labels, rappresentano i metadati del set di dati.
La tabella seguente mostra l'autorizzazione richiesta e la risposta dell'API per i
diversi valori supportati dal parametro dataset_view:
| Valore parametro | Autorizzazioni obbligatorie | Risposta dell'API |
|---|---|---|
DATASET_VIEW_UNSPECIFIED (o vuoto) |
|
Il valore predefinito. Restituisce i metadati e i controlli dell'accesso del set di dati. |
METADATA |
|
Restituisce i metadati del set di dati. |
ACL |
|
Restituisce i controlli dell'accesso, i campi obbligatori e i campi nella risorsa del set di dati che sono solo di output. |
FULL |
|
Restituisce i metadati e i controlli dell'accesso del set di dati. |
Se non accetti l'applicazione anticipata o se la rifiuti dopo averla accettata, puoi utilizzare il parametro dataset_view con i valori METADATA o ACL. I valori
FULL e DATASET_VIEW_UNSPECIFIED (o vuoti) vengono impostati per impostazione predefinita sul comportamento
precedente; l'autorizzazione bigquery.datasets.get consente di ottenere sia i metadati
sia i controlli dell'accesso.
Esempio
L'esempio seguente invia una richiesta GET con il parametro dataset_view
impostato su METADATA:
GET https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?datasetView=METADATA&key=YOUR_API_KEY HTTP/1.1Sostituisci quanto segue:
- YOUR_PROJECT: il nome del progetto
- YOUR_DATASET: il nome del set di dati
- YOUR_API_KEY: la tua chiave API
Metodo datasets.update
Il metodo datasets.update
ha un parametro percorso
aggiuntivo denominato update_mode.
Questo parametro ti offre un maggiore controllo sui campi aggiornati dal metodo
datasets.update. Anziché consentire sempre gli aggiornamenti sia dei controlli
dell'accesso sia dei metadati, il parametro update_mode ti consente di specificare se
aggiornare solo i metadati, solo i controlli dell'accesso o entrambi.
Il campo access nella risorsa dataset
contiene i controlli dell'accesso del set di dati. Gli altri campi, come friendlyName,
description e labels, rappresentano i metadati del set di dati.
La tabella seguente mostra l'autorizzazione richiesta e la risposta dell'API per i
diversi valori supportati dal parametro update_mode:
| Valore parametro | Autorizzazioni obbligatorie | Risposta dell'API |
|---|---|---|
UPDATE_MODE_UNSPECIFIED (o vuoto) |
|
Il valore predefinito. Restituisce i metadati aggiornati e i controlli dell'accesso del set di dati. |
UPDATE_METADATA |
|
Restituisce i metadati aggiornati del set di dati. |
UPDATE_ACL |
|
Restituisce i controlli dell'accesso, i campi obbligatori e i campi della risorsa del set di dati di sola output aggiornati. |
UPDATE_FULL |
|
Restituisce i metadati e i controlli dell'accesso aggiornati del set di dati. |
Se non attivi l'applicazione anticipata o se la disattivi dopo averla attivata,
BigQuery torna al comportamento
precedente: l'autorizzazione bigquery.datasets.update ti consente di aggiornare sia
i metadati sia i controlli dell'accesso.
Esempio
L'esempio seguente invia una richiesta PUT con il
parametro update_mode impostato su METADATA:
PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1Sostituisci quanto segue:
- YOUR_PROJECT: il nome del progetto
- YOUR_DATASET: il nome del set di dati
- YOUR_API_KEY: il nome della tua chiave API
Metodo datasets.patch
Il metodo datasets.patch
ha un parametro percorso
aggiuntivo denominato update_mode.
Questo parametro ti offre un maggiore controllo sui campi aggiornati dal metodo
datasets.patch. Anziché consentire sempre gli aggiornamenti sia dei controlli
dell'accesso sia dei metadati, il parametro update_mode ti consente di specificare se
aggiornare solo i metadati, solo i controlli dell'accesso o entrambi.
Il campo access nella risorsa dataset
contiene i controlli dell'accesso del set di dati. Gli altri campi, come friendlyName,
description e labels, rappresentano i metadati del set di dati.
La tabella seguente mostra l'autorizzazione richiesta e la risposta dell'API per i
diversi valori supportati dal parametro update_mode:
| Valore parametro | Autorizzazioni obbligatorie | Risposta dell'API |
|---|---|---|
UPDATE_MODE_UNSPECIFIED (o vuoto) |
|
Il valore predefinito. Restituisce i metadati aggiornati e i controlli dell'accesso del set di dati. |
UPDATE_METADATA |
|
Restituisce i metadati aggiornati del set di dati. |
UPDATE_ACL |
|
Restituisce i controlli dell'accesso, i campi obbligatori e i campi della risorsa del set di dati di sola output aggiornati. |
UPDATE_FULL |
|
Restituisce i metadati e i controlli dell'accesso aggiornati del set di dati. |
Se non attivi l'applicazione anticipata o se la disattivi dopo averla attivata,
BigQuery torna al comportamento
precedente: l'autorizzazione bigquery.datasets.update ti consente di aggiornare sia
i metadati sia i controlli dell'accesso.
Esempio
L'esempio seguente invia una richiesta PUT con il
parametro update_mode impostato su METADATA:
PUT https://bigquery.googleapis.com/bigquery/v2/projects/YOUR_PROJECT/datasets/YOUR_DATASET?updateMode=METADATA&key=YOUR_API_KEY HTTP/1.1Sostituisci quanto segue:
- YOUR_PROJECT: il nome del progetto
- YOUR_DATASET: il nome del set di dati
- YOUR_API_KEY: il nome della tua chiave API
Metodo datasets.insert
Se attivi l'applicazione anticipata e utilizzi il metodo datasets.insert
per creare un set di dati con controlli dell'accesso, BigQuery verifica
che le autorizzazioni bigquery.datasets.create e bigquery.datasets.setIamPolicy
siano concesse all'utente.
Se utilizzi l'API per creare un set di dati senza controlli dell'accesso, è necessaria solo l'autorizzazione bigquery.datasets.create.