Controlla l'accesso alle risorse con IAM
Questo documento descrive come visualizzare l'attuale criterio di accesso di una risorsa, come concedere l'accesso a una risorsa e come revocare l'accesso a una risorsa.
Questo documento acquisisce familiarità con il sistema Identity and Access Management (IAM) in Google Cloud.
Ruolo richiesto
Per ottenere le autorizzazioni necessarie per modificare i criteri IAM delle risorse, chiedi all'amministratore di concederti il ruolo IAM Proprietario dei dati BigQuery (roles/bigquery.dataOwner
) nel progetto.
Per maggiori informazioni sulla concessione dei ruoli, consulta
Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per modificare i criteri IAM per le risorse. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
-
Per ottenere il criterio di accesso di un set di dati:
bigquery.datasets.get
-
Per impostare i criteri di accesso di un set di dati:
bigquery.datasets.update
-
Solo console, per ottenere il criterio di accesso di un set di dati:
bigquery.datasets.getIamPolicy
-
Solo console, per impostare il criterio di accesso di un set di dati:
bigquery.datasets.setIamPolicy
-
Per ottenere un criterio per una tabella o una vista:
bigquery.tables.getIamPolicy
-
Per impostare un criterio per una tabella o una vista:
bigquery.tables.setIamPolicy
-
Facoltativo, per creare lo strumento
bq
o i job SQL SQL:bigquery.jobs.create
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Visualizza il criterio di accesso di una risorsa
Le seguenti sezioni descrivono come visualizzare i criteri di accesso delle diverse risorse.
Visualizza 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
Per ottenere un criterio esistente e eseguirne l'output in un file locale in JSON, utilizza il 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 tuo 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 elemento
dataset resource
definito.
Per aggiornare i controlli di accesso, chiama
datasets.patch
e utilizza la proprietà access
nella risorsa Dataset
.
Poiché il metodo datasets.update
sostituisce l'intera risorsa di set di dati, datasets.patch
è il metodo preferito per aggiornare i controlli di accesso.
Visualizzare il criterio di accesso di una tabella o di 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.
Fai clic su
Condividi.I criteri di accesso alla tabella o alla visualizzazione vengono visualizzati nel riquadro Condividi.
bq
Per ottenere un criterio di accesso esistente e generarlo in un file locale in JSON, usa il 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 tuo 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 attuale, chiama il metodo tables.getIamPolicy
.
Concedi l'accesso a una risorsa
Le seguenti sezioni descrivono come concedere l'accesso a risorse diverse.
Concedere 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 sul set di dati, fai clic su Chiudi.
SQL
Per concedere alle entità l'accesso ai set di dati, utilizza l'istruzione DCL di GRANT
:
In Google Cloud Console, 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 ruoli separati da virgole che vuoi concedereRESOURCE_TYPE
: tipo di risorsa a cui viene applicato il ruoloI valori supportati includono
SCHEMA
(equivalente al set di dati),TABLE
,VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: il nome della risorsa per cui vuoi concedere l'autorizzazioneUSER_LIST
: un elenco separato da virgole di utenti a cui viene concesso il ruoloPer un elenco dei formati validi, consulta
user_list
.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta la sezione Esecuzione di query interattive.
bq
Per scrivere le informazioni del set di dati esistente (inclusi i controlli dell'accesso) in un file JSON, utilizza il 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 tuo set di dati
- PATH_TO_FILE: il percorso del file JSON sulla tua macchina locale
Apporta modifiche alla sezione
access
del file JSON. Puoi aggiungere una qualsiasi delle vocispecialGroup
:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Puoi anche aggiungere uno dei seguenti valori:userByEmail
,groupByEmail
edomain
.Ad esempio, la sezione
access
del file JSON di un set di dati avrebbe il seguente aspetto:{ "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" } ], ... }
Una volta apportate le modifiche, utilizza il comando
bq update
e includi il file JSON utilizzando il flag--source
. Se il set di dati si trova in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Per verificare le modifiche al controllo dell'accesso, utilizza nuovamente il comando
bq show
senza scrivere le informazioni in un file:bq show --format=prettyjson PROJECT_ID:DATASET
API
Per applicare i controlli di accesso quando viene creato il set di dati, chiama il metodo datasets.insert
con una risorsa set di dati definita.
Per aggiornare i controlli di accesso, chiama il metodo datasets.patch
e utilizza 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 aggiornare i controlli di accesso.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery che utilizza librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go di BigQuery.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery che utilizza librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di BigQuery.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery che utilizza librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python di BigQuery.
Imposta la proprietàdataset.access_entries
con i controlli di accesso per un set di dati. Quindi chiama la
funzione client.update_dataset()
per aggiornare la proprietà.
Concedere l'accesso a 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 vista 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 ai dettagli, fai clic su Chiudi.
SQL
Per concedere alle entità l'accesso a tabelle o viste, utilizza l'istruzione DCL di GRANT
:
In Google Cloud Console, 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 ruoli separati da virgole che vuoi concedereRESOURCE_TYPE
: tipo di risorsa a cui viene applicato il ruoloI valori supportati includono
SCHEMA
(equivalente al set di dati),TABLE
,VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: il nome della risorsa per cui vuoi concedere l'autorizzazioneUSER_LIST
: un elenco separato da virgole di utenti a cui viene concesso il ruoloPer un elenco dei formati validi, consulta
user_list
.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta la sezione Esecuzione di query interattive.
bq
Per scrivere la tabella o le informazioni di visualizzazione esistenti (inclusi i controlli di accesso) in un file JSON, utilizza il 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 che vuoi aggiornare
- TABLE_OR_VIEW: il nome della risorsa da aggiornare
- PATH_TO_FILE: il percorso del file JSON sulla macchina locale
Apporta modifiche alla sezione
access
del file JSON. Puoi aggiungere una qualsiasi delle vocispecialGroup
:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Puoi anche aggiungere uno dei seguenti valori:userByEmail
,groupByEmail
edomain
. Ad esempio, la sezioneaccess
di un file JSON di una tabella o di una vista avrebbe il seguente aspetto:{ "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" } ], ... }
Utilizza il comando
set-iam-policy
per aggiornare il criterio:bq set-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Per verificare le modifiche al controllo dell'accesso, utilizza nuovamente il comando
bq 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 attuale, chiama il metodo
tables.getIamPolicy
. Modifica il criterio per aggiungere membri e/o associazioni. Per il formato richiesto per le norme, consulta l'argomento delle norme Norme.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery che utilizza librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di BigQuery.
Revoca accesso a una risorsa
Le sezioni seguenti descrivono come revocare l'accesso alle diverse risorse.
Revoca 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.
Nel riquadro dei dettagli, fai clic su Condivisione > Autorizzazioni.
Nella finestra di dialogo Autorizzazioni set di dati, espandi l'entità di cui vuoi revocare l'accesso.
Fai clic su
Rimuovi entità.Nella finestra di dialogo Rimuovi 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 l'istruzione DCL di REVOKE
:
In Google Cloud Console, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
REVOKE ROLE_LIST ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Sostituisci quanto segue:
ROLE_LIST
: un ruolo o un elenco di ruoli separati da virgole che vuoi revocareRESOURCE_TYPE
: tipo di risorsa da cui viene revocato il ruoloI valori supportati includono
SCHEMA
(equivalente al set di dati),TABLE
,VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: il nome della risorsa per cui vuoi revocare l'autorizzazioneUSER_LIST
: un elenco separato da virgole di utenti con i ruoli revocatiPer un elenco dei formati validi, consulta
user_list
.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta la sezione Esecuzione di query interattive.
bq
Per scrivere le informazioni del set di dati esistente (inclusi i controlli dell'accesso) in un file JSON, utilizza il 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 tuo set di dati
- PATH_TO_FILE: il percorso del file JSON sulla macchina locale
Apporta modifiche alla sezione
access
del file JSON. Puoi rimuovere qualsiasi vocespecialGroup
:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Puoi anche rimuovere uno dei seguenti elementi:userByEmail
,groupByEmail
edomain
.Ad esempio, la sezione
access
del file JSON di un set di dati avrebbe il seguente aspetto:{ "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" } ], ... }
Una volta apportate le modifiche, utilizza il comando
bq update
e includi il file JSON utilizzando il flag--source
. Se il set di dati si trova in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:PROJECT_ID:DATASET
.bq update \ --source PATH_TO_FILE \ PROJECT_ID:DATASET
Per verificare le modifiche al controllo dell'accesso, utilizza nuovamente il comando
show
senza scrivere le informazioni in un file:bq show --format=prettyjson PROJECT_ID:DATASET
API
Chiama il numero 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 aggiornare i controlli di accesso.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery che utilizza librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go di BigQuery.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery che utilizza librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python di BigQuery.
Imposta la proprietàdataset.access_entries
con i controlli di accesso per un set di dati. Quindi chiama la
funzione client.update_dataset()
per aggiornare la proprietà.
Revocare l'accesso a 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.
Nel riquadro dei dettagli, fai clic su Condividi.
Nella finestra di dialogo Condividi, espandi l'entità di cui vuoi revocare l'accesso.
Fai clic su
Elimina.Nella finestra di dialogo Rimuovi ruolo dall'entità?, fai clic su Rimuovi.
Per tornare alla tabella o ai dettagli, fai clic su Chiudi.
SQL
Per rimuovere l'accesso a tabelle o viste dalle entità, utilizza l'istruzione DCL di REVOKE
:
In Google Cloud Console, vai alla pagina BigQuery.
Nell'editor query, inserisci la seguente istruzione:
REVOKE ROLE_LIST ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
Sostituisci quanto segue:
ROLE_LIST
: un ruolo o un elenco di ruoli separati da virgole che vuoi revocareRESOURCE_TYPE
: tipo di risorsa da cui viene revocato il ruoloI valori supportati includono
SCHEMA
(equivalente al set di dati),TABLE
,VIEW
eEXTERNAL TABLE
.RESOURCE_NAME
: il nome della risorsa per cui vuoi revocare l'autorizzazioneUSER_LIST
: un elenco separato da virgole di utenti con i ruoli revocatiPer un elenco dei formati validi, consulta
user_list
.
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta la sezione Esecuzione di query interattive.
bq
Per scrivere la tabella o le informazioni di visualizzazione esistenti (inclusi i controlli di accesso) in un file JSON, utilizza il 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 che vuoi aggiornare
- TABLE_OR_VIEW: il nome della risorsa da aggiornare
PATH_TO_FILE: il percorso del file JSON sulla macchina locale
Apporta modifiche alla sezione
access
del file JSON. Puoi rimuovere qualsiasi vocespecialGroup
:projectOwners
,projectWriters
,projectReaders
eallAuthenticatedUsers
. Puoi anche rimuovere uno dei seguenti elementi:userByEmail
,groupByEmail
edomain
. Ad esempio, la sezioneaccess
di un file JSON di una tabella o di una vista avrebbe il seguente aspetto:{ "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" } ], ... }
Utilizza il comando
bq set-iam-policy
per aggiornare il criterio:bq set-iam-policy \ PROJECT_ID:DATASET.TABLE_OR_VIEW \ > PATH_TO_FILE
Per verificare le modifiche al controllo dell'accesso, utilizza nuovamente 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 attuale, chiama il metodo
tables.getIamPolicy
. Modifica il criterio per rimuovere membri e/o associazioni. Per il formato richiesto per le norme, consulta l'argomento delle norme Norme.
Chiama il numero
tables.setIamPolicy
per scrivere il criterio aggiornato. Nota: le associazioni vuote senza membri non sono consentite e generano un errore.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery che utilizza librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di BigQuery.