Controlla l'accesso alle risorse con IAM
Questo documento descrive come visualizza il criterio di accesso attuale di una risorsa, come concedere l'accesso a una risorsa, e su come revoca l'accesso a una risorsa.
In questo documento si presume che tu abbia familiarità con Sistema IAM (Identity and Access Management) in Google Cloud.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per modificare i criteri IAM per le risorse,
chiedi all'amministratore di concederti
Ruolo IAM Proprietario dati BigQuery (roles/bigquery.dataOwner
) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per modificare i criteri IAM per le risorse. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per modificare i criteri IAM per le risorse sono necessarie le seguenti autorizzazioni:
-
Per ottenere il criterio di accesso di un set di dati:
bigquery.datasets.get
-
Per impostare il criterio di accesso di un set di dati:
bigquery.datasets.update
-
Per ottenere il criterio di accesso di un set di dati (solo console Google Cloud):
bigquery.datasets.getIamPolicy
-
Per impostare il criterio di accesso di un set di dati (solo console):
bigquery.datasets.setIamPolicy
-
Per ottenere il criterio di una tabella o di una visualizzazione:
bigquery.tables.getIamPolicy
-
Per impostare i criteri per una tabella o una vista:
bigquery.tables.setIamPolicy
-
(Facoltativo) Per creare lo strumento bq o job SQL BigQuery:
bigquery.jobs.create
Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.
Visualizza il criterio di accesso di una risorsa
Le sezioni seguenti descrivono come visualizzare i criteri di accesso di diverse risorse.
Visualizzare il criterio di accesso di un set di dati
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto e seleziona un set di dati.
Fai clic su > Autorizzazioni.
CondivisioneI criteri di accesso al set di dati vengono visualizzati nel riquadro Autorizzazioni del set di dati.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per recuperare un criterio esistente e inviarlo in un file locale in JSON, utilizza il metodo Comando
bq show
in Cloud Shell:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Sostituisci quanto segue:
- PROJECT_ID: il tuo ID progetto
- DATASET: il nome del set di dati
- PATH_TO_FILE: il percorso del file JSON sulla tua macchina locale
API
Per applicare i controlli di accesso quando viene creato il set di dati, chiama
datasets.insert
con un insieme di parametri
dataset resource
.
Per aggiornare i controlli di accesso, chiama
datasets.patch
e utilizza la proprietà access
nella risorsa Dataset
.
Poiché il metodo datasets.update
sostituisce l'intero
risorsa dataset, datasets.patch
è il metodo preferito per l'aggiornamento
controlli dell'accesso.
Visualizzare il criterio di accesso di una tabella o una vista
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto e seleziona una tabella o una visualizzazione.
Fai clic su
Condividi.I criteri di accesso per la tabella o la visualizzazione sono visualizzati nel riquadro Condividi.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per recuperare un criterio di accesso esistente e inviarlo in un file locale in JSON, utilizza il metodo Comando
bq get-iam-policy
in Cloud Shell:bq get-iam-policy \ --table=true \ PROJECT_ID:DATASET.RESOURCE > PATH_TO_FILE
Sostituisci quanto segue:
- PROJECT_ID: il tuo ID progetto
- DATASET: il nome del set di dati
- RESOURCE: il nome della tabella o della vista di cui vuoi visualizzare il criterio
- PATH_TO_FILE: il percorso del file JSON sulla tua macchina locale
API
Per recuperare il criterio corrente, richiama il metodo
Metodo tables.getIamPolicy
.
Concedere l'accesso a una risorsa
Le seguenti sezioni descrivono come concedere l'accesso a risorse diverse.
Concedi l'accesso a un set di dati
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto e seleziona un set di dati da condividere.
Fai clic su > Autorizzazioni.
CondivisioneFai clic su
Aggiungi entità.Nel campo Nuove entità, inserisci un'entità.
Nell'elenco Seleziona un ruolo, seleziona un ruolo predefinito o un ruolo personalizzato.
Fai clic su Salva.
Per tornare alle informazioni del set di dati, fai clic su Chiudi.
SQL
Per concedere alle entità l'accesso ai set di dati, utilizza
GRANT
Istruzione DCL:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
GRANT `ROLE_LIST` ON SCHEMA RESOURCE_NAME TO "USER_LIST"
Sostituisci quanto segue:
ROLE_LIST
: un ruolo o un elenco di valori separati da virgole ai ruoli che vuoi concedereRESOURCE_NAME
: il nome della risorsa per cui vuoi concedere l'autorizzazioneUSER_LIST
: un elenco di utenti separato da virgole a cui viene concesso il ruoloPer un elenco di formati validi, consulta:
user_list
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Nell'esempio seguente viene concesso il ruolo Visualizzatore dati per il set di dati
myDataset
:
GRANT `roles/bigquery.dataViewer`
ON SCHEMA `myProject`.myDataset
TO "user:raha@example-pet-store.com", "user:sasha@example-pet-store.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per scrivere le informazioni esistenti del set di dati (inclusi i controlli di accesso) in un file JSON, utilizza Comando
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Sostituisci quanto segue:
- PROJECT_ID: il tuo ID progetto
- DATASET: il nome del set di dati
- PATH_TO_FILE: il percorso del file JSON sulla tua macchina locale
Apporta modifiche alla sezione
access
del file JSON. Puoi aggiungi a una qualsiasi dellespecialGroup
voci:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Puoi aggiungi anche uno dei seguenti:userByEmail
,groupByEmail
edomain
.Ad esempio, la sezione
access
del file JSON di un set di dati sarebbe simile le seguenti:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Quando le modifiche sono complete, usa il comando
bq update
e includi file JSON utilizzando il flag--source
. Se il set di dati si trova in un progetto diverso rispetto al progetto predefinito, aggiungi l'ID progetto al nome del set di dati nella nel seguente formato:PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Per verificare le modifiche al controllo dell'accesso, usa di nuovo il comando
bq show
senza scrivere le informazioni in un file:bq show --format=prettyjson PROJECT_ID:DATASET
Terraform
Utilizza la
google_bigquery_dataset_iam
risorse da aggiornare
l'accesso a un set di dati.
Impostare il criterio di accesso per un set di dati
L'esempio seguente mostra come utilizzare il parametro
google_bigquery_dataset_iam_policy
risorsa
per impostare il criterio IAM
mydataset
set di dati. Sostituisce qualsiasi criterio esistente già collegato
al set di dati:
# This file sets the IAM policy for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.admin" members = [ "user:hao@altostrat.com", ] } binding { role = "roles/bigquery.dataOwner" members = [ "group:dba@altostrat.com", ] } binding { role = "roles/bigquery.dataEditor" members = [ "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel.iam.gserviceaccount.com", ] } } resource "google_bigquery_dataset_iam_policy" "dataset_iam_policy" { dataset_id = google_bigquery_dataset.default.dataset_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Impostare l'appartenenza ai ruoli per un set di dati
L'esempio seguente mostra come utilizzare il parametro
google_bigquery_dataset_iam_binding
risorsa
impostare l'appartenenza a un determinato ruolo
mydataset
set di dati. In questo modo si sostituisce qualsiasi appartenenza esistente al ruolo in questione.
Altri ruoli all'interno del criterio IAM per il set di dati
vengono conservati:
# This file sets membership in an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_binding" "dataset_iam_binding" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.jobUser" members = [ "user:raha@altostrat.com", "group:analysts@altostrat.com" ] }
Impostare l'appartenenza ai ruoli per una singola entità
L'esempio seguente mostra come utilizzare il parametro
google_bigquery_dataset_iam_member
risorsa
di aggiornare il criterio IAM per
mydataset
per concedere un ruolo a un'entità. Aggiornamento di questo IAM
non influisce sull'accesso per altre entità che sono state
a cui è stato concesso
il ruolo per il set di dati.
# This file adds a member to an IAM role for the dataset created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_dataset/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" dataset resource with a dataset_id of "mydataset". resource "google_bigquery_dataset_iam_member" "dataset_iam_member" { dataset_id = google_bigquery_dataset.default.dataset_id role = "roles/bigquery.user" member = "user:yuri@altostrat.com" }
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove 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 in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome file deve contenere i caratteri
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". per creare un nuovo messaggio email.
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
API
Per applicare i controlli di accesso quando il set di dati viene creato, chiama il metodo
Metodo datasets.insert
con un insieme di parametri
risorsa set di dati.
Per aggiornare i controlli di accesso, chiama il
Metodo datasets.patch
e uso
la proprietà access
nella risorsa Dataset
.
Poiché il metodo datasets.update
sostituisce l'intera risorsa del set di dati,
datasets.patch
è il metodo preferito per l'aggiornamento dei controlli dell'accesso.
Vai
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Imposta il parametro Proprietàdataset.access_entries
con i controlli di accesso per un set di dati. Quindi chiama il
funzione client.update_dataset()
per aggiornare la proprietà.
Concedere l'accesso a una tabella o una visualizzazione
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto e seleziona una tabella o una visualizzazione da condividere.
Fai clic su
Condividi.Fai clic su
Aggiungi entità.Nel campo Nuove entità, inserisci un'entità.
Nell'elenco Seleziona un ruolo, seleziona un ruolo predefinito o un ruolo personalizzato.
Fai clic su Salva.
Per tornare alla tabella o visualizzare i dettagli, fai clic su Chiudi.
SQL
Per concedere alle entità l'accesso alle tabelle o alle visualizzazioni, utilizza
GRANT
Istruzione DCL:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
GRANT `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Sostituisci quanto segue:
ROLE_LIST
: un ruolo o un elenco di valori separati da virgole ai ruoli che vuoi concedereRESOURCE_TYPE
: tipo di risorsa a cui viene applicato il ruoloI valori supportati includono
TABLE
,VIEW
,MATERIALIZED VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: il nome della risorsa per cui vuoi concedere l'autorizzazioneUSER_LIST
: un elenco di utenti separato da virgole a cui viene concesso il ruoloPer un elenco di formati validi, consulta:
user_list
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Nell'esempio seguente viene concesso il ruolo Visualizzatore dati per la tabella
myTable
:
GRANT `roles/bigquery.dataViewer`
ON TABLE `myProject`.myDataset.myTable
TO "user:raha@example-pet-store.com", "user:sasha@example-pet-store.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per scrivere la tabella esistente o visualizzare le informazioni (inclusi i controlli dell'accesso) in un file JSON, utilizza Comando
bq get-iam-policy
:bq get-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Sostituisci quanto segue:
- PROJECT_ID: il tuo ID progetto
- DATASET: il nome del set di dati che contiene la tabella o la vista da aggiornare
- TABLE_OR_VIEW: il nome della risorsa da aggiornare
- PATH_TO_FILE: il percorso del file JSON su dalla macchina locale
Apporta modifiche alla sezione
bindings
del file JSON. Un'associazione collega una o più entità (members
) a un singolorole
. Le entità possono essere account utente, account di servizio, gruppi Google e domini. Ad esempio, la sezionebindings
del file JSON di una tabella o di una vista sarà simile alla seguente:{ "bindings": [ { "role": "roles/bigquery.dataViewer", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, ], "etag": "BwWWja0YfJA=", "version": 1 }
Per aggiornare il criterio di accesso, usa il comando
bq set-iam-policy
:bq set-iam-policy PROJECT_ID:DATASET.TABLE_OR_VIEW PATH_TO_FILE
Per verificare le modifiche apportate al controllo dell'accesso, utilizza la Comando
bq get-iam-policy
senza scrivere le informazioni in un file:bq get-iam-policy --format=prettyjson \ PROJECT_ID:DATASET.TABLE_OR_VIEW
Terraform
Utilizza la
google_bigquery_table_iam
risorse per aggiornare l'accesso a una tabella.
Impostare il criterio di accesso per una tabella
L'esempio seguente mostra come utilizzare il parametro
google_bigquery_table_iam_policy
risorsa
per impostare il criterio IAM
Tabella mytable
. Sostituisce qualsiasi criterio esistente già collegato
nella tabella:
# This file sets the IAM policy for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". data "google_iam_policy" "iam_policy" { binding { role = "roles/bigquery.dataOwner" members = [ "user:raha@altostrat.com", ] } } resource "google_bigquery_table_iam_policy" "table_iam_policy" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id policy_data = data.google_iam_policy.iam_policy.policy_data }
Impostare l'appartenenza ai ruoli per una tabella
L'esempio seguente mostra come utilizzare il parametro
google_bigquery_table_iam_binding
risorsa
impostare l'appartenenza a un determinato ruolo
Tabella mytable
. In questo modo si sostituisce qualsiasi appartenenza esistente al ruolo in questione.
Altri ruoli all'interno del criterio IAM per la tabella
vengono conservati.
# This file sets membership in an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_binding" "table_iam_binding" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataOwner" members = [ "group:analysts@altostrat.com", ] }
Impostare l'appartenenza ai ruoli per una singola entità
L'esempio seguente mostra come utilizzare il parametro
google_bigquery_table_iam_member
risorsa
di aggiornare il criterio IAM per
mytable
per concedere un ruolo a un'entità. Aggiornamento di questo criterio IAM in corso...
non influisce sull'accesso per le altre entità concesse
per il set di dati.
# This file adds a member to an IAM role for the table created by # https://github.com/terraform-google-modules/terraform-docs-samples/blob/main/bigquery/bigquery_create_table/main.tf. # You must place it in the same local directory as that main.tf file, # and you must have already applied that main.tf file to create # the "default" table resource with a table_id of "mytable". resource "google_bigquery_table_iam_member" "table_iam_member" { dataset_id = google_bigquery_table.default.dataset_id table_id = google_bigquery_table.default.table_id role = "roles/bigquery.dataEditor" member = "serviceAccount:bqcx-1234567891011-12a3@gcp-sa-bigquery-condel.iam.gserviceaccount.com" }
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove 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 in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome file deve contenere i caratteri
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". per creare un nuovo messaggio email.
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
API
- Per recuperare il criterio corrente, richiama il metodo
Metodo
tables.getIamPolicy
. Modifica il criterio per aggiungere membri e/o associazioni. Per il formato richiesto per il criterio, consulta la pagina Norme. di riferimento.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Revocare l'accesso a una risorsa
Le sezioni seguenti descrivono come revocare l'accesso a risorse diverse.
Revocare l'accesso a un set di dati
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro Spazio di esplorazione, espandi il progetto e seleziona un set di dati.
Nel riquadro dei dettagli, fai clic su Condivisione > Autorizzazioni.
Nella finestra di dialogo Autorizzazioni set di dati, espandi l'entità di cui che vuoi revocare.
Fai clic su
Rimuovi entità.Nella finestra di dialogo Rimuovere il ruolo dall'entità?, fai clic su Rimuovi.
Per tornare ai dettagli del set di dati, fai clic su Chiudi.
SQL
Per rimuovere l'accesso ai set di dati dalle entità, utilizza
REVOKE
Istruzione DCL:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
REVOKE `ROLE_LIST` ON SCHEMA RESOURCE_NAME FROM "USER_LIST"
Sostituisci quanto segue:
ROLE_LIST
: un ruolo o un elenco di valori separati da virgole ruoli che vuoi revocareRESOURCE_NAME
: il nome della risorsa per cui vuoi revocare l'autorizzazioneUSER_LIST
: un elenco di utenti separato da virgole a chi verrà revocato il ruoloPer un elenco di formati validi, consulta:
user_list
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
L'esempio seguente revoca il ruolo Amministratore per il set di dati
myDataset
:
REVOKE `roles/bigquery.admin`
ON SCHEMA `myProject`.myDataset
FROM "group:example-team@example-pet-store.com", "serviceAccount:user@test-project.iam.gserviceaccount.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per scrivere le informazioni esistenti del set di dati (inclusi i controlli di accesso) in un file JSON, utilizza Comando
bq show
:bq show \ --format=prettyjson \ PROJECT_ID:DATASET > PATH_TO_FILE
Sostituisci quanto segue:
- PROJECT_ID: il tuo ID progetto
- DATASET: il nome del set di dati
- PATH_TO_FILE: il percorso del file JSON sul tuo computer macchina
Apporta modifiche alla sezione
access
del file JSON. Puoi rimuovi una qualsiasi dellespecialGroup
voci:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Puoi rimuovi anche uno dei seguenti:userByEmail
,groupByEmail
edomain
.Ad esempio, la sezione
access
del file JSON di un set di dati sarebbe simile le seguenti:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Quando le modifiche sono complete, usa il comando
bq update
e includi file JSON utilizzando il flag--source
. Se il set di dati si trova in un progetto diverso rispetto al progetto predefinito, aggiungi l'ID progetto al nome del set di dati nella nel seguente formato:PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Per verificare le modifiche al controllo dell'accesso, usa di nuovo il comando
show
senza scrivere le informazioni in un file:bq show --format=prettyjson PROJECT_ID:DATASET
API
Chiama datasets.patch
e
utilizza la proprietà access
nella risorsa Dataset
per aggiornare i controlli di accesso.
Poiché il metodo datasets.update
sostituisce l'intera risorsa del set di dati,
datasets.patch
è il metodo preferito per l'aggiornamento dei controlli dell'accesso.
Vai
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Imposta il parametro Proprietàdataset.access_entries
con i controlli di accesso per un set di dati. Quindi chiama il
funzione client.update_dataset()
per aggiornare la proprietà.
Revocare l'accesso a una tabella o una visualizzazione
Seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto e seleziona una tabella o una visualizzazione.
Nel riquadro dei dettagli, fai clic su Condividi.
Nella finestra di dialogo Condividi, espandi l'entità di cui vuoi l'accesso da revocare.
Fai clic su
Elimina.Nella finestra di dialogo Rimuovere il ruolo dall'entità?, fai clic su Rimuovi.
Per tornare alla tabella o visualizzare i dettagli, fai clic su Chiudi.
SQL
Per rimuovere l'accesso alle tabelle o alle visualizzazioni dalle entità, utilizza
REVOKE
Istruzione DCL:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
REVOKE `ROLE_LIST` ON RESOURCE_TYPE RESOURCE_NAME FROM "USER_LIST"
Sostituisci quanto segue:
ROLE_LIST
: un ruolo o un elenco di valori separati da virgole ruoli che vuoi revocareRESOURCE_TYPE
: tipo di risorsa che il ruolo è stato revocatoI valori supportati includono
TABLE
,VIEW
eMATERIALIZED VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: il nome della risorsa per cui vuoi revocare l'autorizzazioneUSER_LIST
: un elenco di utenti separato da virgole a chi verrà revocato il ruoloPer un elenco di formati validi, consulta:
user_list
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
L'esempio seguente revoca il ruolo Amministratore nella tabella
myTable
:
REVOKE `roles/bigquery.admin`
ON TABLE `myProject`.myDataset.myTable
FROM "group:example-team@example-pet-store.com", "serviceAccount:user@test-project.iam.gserviceaccount.com"
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per scrivere la tabella esistente o visualizzare le informazioni (inclusi i controlli dell'accesso) in un file JSON, utilizza Comando
bq get-iam-policy
:bq get-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Sostituisci quanto segue:
- PROJECT_ID: il tuo ID progetto
- DATASET: il nome del set di dati che contiene la tabella o la vista da aggiornare
- TABLE_OR_VIEW: il nome della risorsa da aggiornare
PATH_TO_FILE: il percorso del file JSON su dalla macchina locale
Apporta modifiche alla sezione
access
del file JSON. Puoi rimuovi una qualsiasi dellespecialGroup
voci:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Puoi rimuovi anche uno dei seguenti:userByEmail
,groupByEmail
edomain
. Ad esempio, la sezioneaccess
del file JSON di una tabella o di una vista sarebbe simile a le seguenti:{ "access": [ { "role": "READER", "specialGroup": "projectReaders" }, { "role": "WRITER", "specialGroup": "projectWriters" }, { "role": "OWNER", "specialGroup": "projectOwners" }, { "role": "READER", "specialGroup": "allAuthenticatedUsers" }, { "role": "READER", "domain": "domain_name" }, { "role": "WRITER", "userByEmail": "user_email" }, { "role": "READER", "groupByEmail": "group_email" } ], ... }
Per aggiornare il criterio di accesso, usa il comando
bq set-iam-policy
:bq set-iam-policy PROJECT_ID:DATASET.TABLE_OR_VIEW PATH_TO_FILE
Per verificare le modifiche al controllo dell'accesso, usa di nuovo il comando
get-iam-policy
senza scrivere le informazioni in un file:bq get-iam-policy --format=prettyjson \ PROJECT_ID:DATASET.TABLE_OR_VIEW
API
- Per recuperare il criterio corrente, richiama il metodo
Metodo
tables.getIamPolicy
. Modifica il criterio per rimuovere membri e/o associazioni. Per il formato richiesto per il criterio, consulta la pagina Norme. di riferimento.
Chiama
tables.setIamPolicy
per scrivere il criterio aggiornato. Nota: non sono consentite associazioni vuote senza membri e questo risultato restituisce un errore.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Nega l'accesso a una risorsa
I criteri di negazione IAM consentono di impostare misure di protezione per l'accesso alle risorse BigQuery. Puoi definire le regole di negazione che impediscono alle entità selezionate di utilizzare determinate autorizzazioni, indipendentemente da i ruoli assegnati.
Per informazioni su come creare, aggiornare ed eliminare i criteri di negazione, consulta Nega l'accesso alle risorse.
Casi speciali
Considera i seguenti scenari quando crei criteri di negazione IAM con alcune autorizzazioni BigQuery:
Accesso alle risorse autorizzate (viste, routine, set di dati o stored procedure) consente di crea, calo, o manipolare una tabella, oltre a leggere e modificare i dati della tabella, anche se non disponi di dati per eseguire queste operazioni. Può anche ottenere dati o metadati del modello e richiamare altre stored procedure della tabella sottostante. Questa funzionalità implica che le risorse autorizzate dispongono delle seguenti autorizzazioni:
bigquery.tables.get
bigquery.tables.list
bigquery.tables.getData
bigquery.tables.updateData
bigquery.tables.create
bigquery.tables.delete
bigquery.routines.get
bigquery.routines.list
bigquery.datasets.get
bigquery.models.getData
bigquery.models.getMetadata
Per negare l'accesso a queste risorse autorizzate, aggiungi una delle i seguenti valori a
deniedPrincipal
quando crei il criterio di negazione:Valore Caso d'uso principalSet://goog/public:all
Blocca tutte le entità, incluse le risorse autorizzate. principalSet://bigquery.googleapis.com/projects/PROJECT_NUMBER/*
Blocca tutte le risorse BigQuery autorizzate nel progetto specificato. PROJECT_NUMBER
è un identificatore univoco generato automaticamente per il progetto di tipoINT64
.BigQuery memorizza nella cache i risultati delle query di un proprietario del lavoro per 24 ore, a cui il proprietario può accedere senza l'autorizzazione
bigquery.tables.getData
nella tabella contenente e i dati di Google Cloud. Pertanto, l'aggiunta di un criterio di negazione IAM L'autorizzazionebigquery.tables.getData
non blocca l'accesso ai risultati memorizzati nella cache per il proprietario del job fino alla scadenza della cache. Per bloccare l'accesso del proprietario del lavoro a dei risultati memorizzati nella cache, crea un criterio di negazione separato subigquery.jobs.create
autorizzazione.