Risolvere i problemi relativi alle autorizzazioni IAM in BigQuery
Questo documento mostra come risolvere i problemi relativi alle autorizzazioni di Identity and Access Management (IAM) in BigQuery. I problemi di autorizzazione IAM
in genere comportano errori Access Denied
come i seguenti:
Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.
Access Denied: Project PROJECT_ID: User does not have bigquery.datasets.get permission on dataset DATASET.
User does not have permission to query table PROJECT_ID:DATASET.TABLE.
Access Denied: Table PROJECT_ID:DATASET.TABLE: User does not have permission to query table PROJECT_ID:DATASET.TABLE, or perhaps it does not exist.
Access Denied: User PRINCIPAL does not have permission to perform bigquery.tables.getData on resource 'projects/PROJECT_ID/datasets/DATASET/tables/TABLE'.
Prima di iniziare
- Per risolvere i problemi di accesso di un principal a una risorsa BigQuery, assicurati di disporre delle autorizzazioni IAM richieste.
Raccogliere informazioni sul problema
Il primo passaggio per risolvere un problema di accesso alle risorse consiste nel determinare l'autorizzazione mancante, l'entità IAM a cui è stato negato l'accesso e la risorsa a cui l'entità stava tentando di accedere.
Recuperare informazioni dall'errore o dalla cronologia dei job
Per ottenere informazioni sul principal, sulla risorsa e sulle autorizzazioni, esamina l'output dello strumento a riga di comando bq, la risposta dell'API o BigQuery nella console Google Cloud .
Ad esempio, se tenti di eseguire una query con autorizzazioni insufficienti, visualizzi un errore simile al seguente nella scheda Informazioni job della sezione Risultati delle query della console Google Cloud .
Esamina l'errore per determinare l'entità, la risorsa e le autorizzazioni.
In alcuni casi, puoi richiedere le autorizzazioni mancanti direttamente dal messaggio di errore. Per saperne di più, consulta la sezione Risolvere i problemi relativi ai messaggi di errore di autorizzazione nella documentazione di IAM.
Recuperare informazioni da Cloud Audit Logs
Se il messaggio di errore è generico, mancano informazioni o l'azione non è riuscita in un processo in background, utilizza Esplora log di Cloud Audit Logs per ottenere informazioni sull'errore.
Nella console Google Cloud , vai alla pagina Esplora log.
In alternativa, dal menu di navigazione, scegli Monitoring > Esplora log.
In Esplora log, scegli Log di progetto per l'ambito dei log.
Nella finestra della query, inserisci la seguente query per ottenere gli errori relativi alle autorizzazioni dai log di accesso ai dati BigQuery:
resource.type="bigquery_resource" AND logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access" AND protoPayload.status.message:"Access Denied" OR protoPayload.status.message:"Permission denied" OR protoPayload.status.code=7
Sostituisci PROJECT_ID con l'ID progetto.
Nei risultati della query, espandi la voce di log corrispondente all'operazione non riuscita.
Nella sezione
protoPayload
, espandi l'arrayauthorizationInfo
, quindi espandi ogni nodo dell'arrayauthorizationInfo
.L'array
authorizationInfo
mostra ogni controllo delle autorizzazioni eseguito durante la chiamata API.Per visualizzare la causa dell'errore, cerca la voce
granted: false
. La vocegranted: false
mostra le seguenti informazioni:permission
: la stringa di autorizzazione IAM che è stata controllata. Ad esempio,bigquery.tables.getData
.resource
: il nome completo della risorsa a cui il principal ha tentato di accedere. Ad esempio,projects/myproject/datasets/mydataset/tables/mytable
.principalEmail
(se disponibile): indicato inprotoPayload.authenticationInfo
, è l'entità che ha tentato l'azione.
Utilizzare Policy Analyzer per le policy di autorizzazione
Policy Analyzer per i criteri di autorizzazione ti consente di scoprire quali entità IAM hanno un determinato accesso a determinate risorse BigQuery in base ai tuoi criteri di autorizzazione IAM.
Dopo aver raccolto informazioni sull'errore di autorizzazione, puoi utilizzare Policy Analyzer per capire perché l'entità non dispone dell'accesso richiesto. Questo strumento analizza tutte le policy pertinenti, le appartenenze ai gruppi Google e l'ereditarietà dalle risorse padre, come un progetto, una cartella e la tua organizzazione.
Per utilizzare Policy Analyzer per le policy di autorizzazione, crea una query di analisi, specifica un ambito per l'analisi ed esegui la query.
Nella console Google Cloud , vai alla pagina Policy Analyzer.
In alternativa, dal menu di navigazione, scegli IAM e amministrazione > Policy Analyzer.
Fai clic su Crea query personalizzata.
Nella pagina Configura la query, inserisci le informazioni che hai raccolto in precedenza:
Nella sezione Seleziona l'ambito, nel campo Seleziona l'ambito della query, verifica che venga visualizzato il progetto corrente o fai clic su Sfoglia per scegliere un'altra risorsa.
Nella sezione Imposta i parametri della query, scegli Entità per Parametro 1 e inserisci l'email dell'utente, del gruppo o del account di servizio nel campo Entità.
Fai clic su
Aggiungi parametro.Per Parametro 2, scegli Autorizzazione e nel campo Autorizzazione, fai clic su Seleziona, scegli l'autorizzazione BigQuery e poi fai clic su Aggiungi. Ad esempio, seleziona
bigquery.tables.getData
.Fai clic su
Aggiungi parametro.Per Parametro 3, scegli Risorsa e nel campo Risorsa, inserisci il nome della risorsa completo. Il nome della risorsa deve includere il prefisso del servizio, come nei seguenti esempi:
- Progetto BigQuery:
//cloudresourcemanager.googleapis.com/projects/PROJECT_ID
- BigQuery dataset:
//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET
- Tabella BigQuery:
//bigquery.googleapis.com/projects/PROJECT/datasets/DATASET/tables/TABLE
- Progetto BigQuery:
Nel riquadro Query personalizzata, fai clic su Analizza > Esegui query.
Esamina i risultati della query. Il risultato può essere uno dei seguenti:
- Un elenco vuoto. Nessun risultato conferma che l'entità non dispone dell'autorizzazione richiesta. Devi concedere all'entità un ruolo che fornisca le autorizzazioni corrette.
- Uno o più risultati. Se lo strumento di analisi trova un criterio di autorizzazione, esiste una qualche forma di accesso. Fai clic su Visualizza associazione in ogni risultato per visualizzare i ruoli che forniscono l'accesso alla risorsa di cui l'entità è membro. Il binding del criterio mostra se l'accesso è concesso tramite l'appartenenza a un gruppo o l'ereditarietà oppure se l'accesso è negato da una condizione IAM o da un criterio di negazione IAM.
Trova il ruolo IAM corretto che concede le autorizzazioni richieste
Dopo aver confermato che l'entità non dispone di un accesso sufficiente, il passaggio successivo consiste nel trovare il ruolo IAM predefinito o personalizzato appropriato che conceda le autorizzazioni richieste. Il ruolo che scegli deve rispettare il principio del privilegio minimo.
Se la tua organizzazione utilizza ruoli personalizzati, puoi trovare il ruolo corretto elencando tutti i ruoli personalizzati creati nel tuo progetto o nella tua organizzazione. Ad esempio, nella console Google Cloud , nella pagina Ruoli, puoi filtrare l'elenco per Tipo:personalizzato per visualizzare solo i ruoli personalizzati.
Per trovare il ruolo IAM predefinito corretto, segui questi passaggi.
Apri la sezione Autorizzazioni BigQuery della pagina Ruoli e autorizzazioni IAM di BigQuery.
Nella barra di ricerca Inserisci un'autorizzazione, inserisci l'autorizzazione recuperata dal messaggio di errore, dalla cronologia dei lavori o dai log di controllo. Ad esempio,
bigquery.tables.getData
.I risultati della ricerca mostrano tutti i ruoli BigQuery predefiniti che concedono l'autorizzazione.
Applica il principio del privilegio minimo: nell'elenco dei ruoli, scegli il ruolo meno permissivo che concede le autorizzazioni richieste. Ad esempio, se hai cercato
bigquery.tables.getData
per concedere la possibilità di eseguire query sui dati delle tabelle, Visualizzatore dati BigQuery è il ruolo meno permissivo che concede questa autorizzazione.Concedi all'entità il ruolo appropriato. Per informazioni su come concedere un ruolo IAM a una risorsa BigQuery, consulta Controllare l'accesso alle risorse con IAM.
Passaggi successivi
- Per un elenco di tutti i ruoli e le autorizzazioni IAM di BigQuery, vedi Ruoli e autorizzazioni IAM di BigQuery.
- Per ulteriori informazioni sulla risoluzione dei problemi relativi ai criteri di autorizzazione e negazione in IAM, vedi Risoluzione dei problemi relativi ai criteri.
- Per ulteriori informazioni sull'Analizzatore policy di Policy Intelligence, consulta Analizzatore policy per le policy di autorizzazione.
- Per ulteriori informazioni sullo strumento per la risoluzione dei problemi relativi ai criteri, vedi Utilizzare lo strumento per la risoluzione dei problemi relativi ai criteri.