Risolvere i problemi di controllo dell'accesso
Questo documento mostra come risolvere i problemi di sicurezza relativi a autorizzazioni Identity and Access Management (IAM), controllo dell'accesso a livello di colonna e chiavi di crittografia gestite dal cliente (CMEK) in BigQuery.
I problemi di autorizzazione IAM in genere generano 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 passo per risolvere un problema di accesso alle risorse è determinare l'autorizzazione mancante, l'entità IAM a cui è stato negato l'accesso e la risorsa a cui l'entità stava tentando di accedere.
Ottenere 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 Google Cloud console.
Ad esempio, se tenti di eseguire una query con autorizzazioni insufficienti, visualizzi un errore come il 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 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 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'arrayauthorizationInfoe poi espandi ogni nodo dell'arrayauthorizationInfo.L'array
authorizationInfomostra ogni controllo delle autorizzazioni eseguito durante la chiamata API.Per visualizzare la causa dell'errore, cerca la voce
granted: false. La vocegranted: falsemostra le seguenti informazioni:permission: la stringa dell'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 quale accesso a quali 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 attuale o fai clic su Sfoglia per scegliere un'altra risorsa.
Nella sezione Imposta i parametri di query, per Parametro 1, scegli Entità e nel campo Entità inserisci l'email dell'utente, del gruppo o del account di servizio.
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 completo della risorsa. Il nome della risorsa deve includere il prefisso del servizio, come nei seguenti esempi:
- Progetto BigQuery:
//cloudresourcemanager.googleapis.com/projects/PROJECT_ID - Set di dati BigQuery:
//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. Dovrai 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 forma di accesso. Fai clic su Visualizza associazione su ogni risultato per visualizzare i ruoli che forniscono l'accesso alla risorsa di cui l'entità è membro. L'associazione di policy 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 concede 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 delle 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 job 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.getDataper 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.
Risolvere i problemi relativi controllo dell'accesso a livello di colonna
Le sezioni seguenti spiegano come risolvere i problemi relativi al controllo dell'accesso a livello di colonna e ai tag di policy di Data Catalog.
Non riesco a visualizzare i ruoli Data Catalog
Se non riesci a visualizzare ruoli come Data Catalog Fine-Grained Reader, è possibile che tu non abbia abilitato l'API Data Catalog nel tuo progetto. Per scoprire come abilitare l'API Data Catalog, consulta la sezione Prima di iniziare. I ruoli Data Catalog vengono visualizzati alcuni minuti dopo l'abilitazione dell'API Data Catalog.
Non riesco a visualizzare la pagina Tassonomie
Per visualizzare la pagina Tassonomie di tag di policy nella consoleGoogle Cloud , devi disporre di autorizzazioni aggiuntive. Ad esempio, il ruolo Amministratore tag di criteri di Data Catalog ha accesso alla pagina Tassonomie.
Ho applicato i tag di criteri, ma non sembra funzionare
Se continui a ricevere risultati di query per un account che non dovrebbe avere accesso, è possibile che l'account riceva risultati memorizzati nella cache. Nello specifico, se in precedenza hai eseguito la query correttamente e poi hai applicato i tag dei criteri, potresti ottenere risultati dalla cache dei risultati delle query. Per impostazione predefinita, i risultati delle query vengono memorizzati nella cache per 24 ore. La query non riesce immediatamente se disattivi la cache dei risultati. Per maggiori dettagli sulla memorizzazione nella cache, consulta Impatto del controllo dell'accesso a livello di colonna.
In generale, la propagazione degli aggiornamenti IAM richiede circa 30 secondi. La propagazione delle modifiche alla gerarchia dei tag di criteri può richiedere fino a 30 minuti.
Non ho l'autorizzazione per leggere da una tabella con sicurezza a livello di colonna
Devi disporre del ruolo Lettore granulare o del ruolo Lettore mascherato a diversi livelli, ad esempio organizzazione, cartella, progetto e tag di criteri. Il ruolo Lettore granulare concede l'accesso ai dati non elaborati, mentre il ruolo Lettore mascherato concede l'accesso ai dati mascherati. Puoi utilizzare lo Policy Troubleshooter di IAM per controllare questa autorizzazione a livello di progetto.
Ho impostato controllo dell'accesso granulare nella tassonomia dei tag di criteri, ma gli utenti vedono i dati protetti
Per risolvere il problema, verifica i seguenti dettagli:
- Nella pagina Tassonomie dei tag di policy del Security Command Center di BigQuery, verifica che il pulsante di attivazione/disattivazione Applica il controllo dell'accesso sia in posizione On.
Assicurati che le query non utilizzino i risultati delle query memorizzati nella cache. Se utilizzi lo strumento a riga di comando bq per testare le query, utilizza il flag
--nouse_cacheper disattivare la cache delle query. Ad esempio:bq query --nouse_cache --use_legacy_sql=false "SELECT * EXCEPT (customer_pii) FROM my_table;"
Considerazioni sulla migrazione del progetto
I tag e le tassonomie delle norme si trovano all'interno di un' Google Cloud organizzazione specifica e non vengono riassociati automaticamente quando un progetto viene migrato a una nuova organizzazione. Se esegui la migrazione di un progetto che utilizza i tag di policy per controllo dell'accesso a livello di colonna a un'altra organizzazione, si verificano i seguenti problemi:
- I tag dei criteri non sono più gestibili nella console Google Cloud all'interno del progetto migrato.
- Non puoi applicare questi tag di policy alle nuove colonne del progetto di cui è stata eseguita la migrazione.
- I controlli di accesso a livello di colonna esistenti potrebbero sembrare ancora in vigore, ma il link alla tassonomia di origine nell'organizzazione originale è interrotto ai fini della gestione.
La risoluzione di questo problema richiede l'intervento manuale dell'assistenza di Google Cloud per riassociare la tassonomia alla nuova organizzazione. Se hai eseguito la migrazione di un progetto con tag di criteri e riscontri questi problemi, contatta l'assistenza clienti Google Cloud.
Risolvere i problemi relativi alle chiavi di crittografia gestite dal cliente
Il seguente elenco descrive gli errori comuni e le risoluzioni consigliate quando utilizzi le chiavi di crittografia gestite dal cliente (CMEK) con Cloud Key Management Service:
- Errore:
Please grant Cloud KMS CryptoKey Encrypter/Decrypter role - Risoluzione:l'account di servizio BigQuery associato al tuo progetto non dispone dell'autorizzazione IAM sufficiente per operare sulla chiave Cloud KMS specificata. Per concedere l'autorizzazione IAM richiesta, segui le istruzioni riportate nel messaggio di errore o in Concedere l'autorizzazione di crittografia e decrittografia.
- Errore:
Existing table encryption settings don't match encryption settings specified in the request - Risoluzione:questo errore può verificarsi quando la tabella di destinazione ha impostazioni di crittografia
che non corrispondono a quelle della richiesta. Per risolvere
questo problema, utilizza la disposizione di scrittura
TRUNCATEper sostituire la tabella o specifica una tabella di destinazione diversa. - Errore:
This region is not supported - Risoluzione:la regione della chiave Cloud KMS non corrisponde alla regione del set di dati BigQuery per la tabella di destinazione. Per risolvere il problema, seleziona una chiave in una regione che corrisponda al tuo set di dati oppure carica i dati in un set di dati che corrisponda alla regione della chiave.
- Errore:
Your administrator requires that you specify an encryption key for queries in project PROJECT_ID. - Risoluzione: un criterio dell'organizzazione ha impedito la creazione di una risorsa o l'esecuzione di una query. Per scoprire di più su questa policy, consulta Richiedi chiavi CMEK per tutte le risorse.
- Errore:
Your administrator prevents using KMS keys from project KMS_PROJECT_ID to protect resources in project PROJECT_ID. - Risoluzione: un criterio dell'organizzazione ha impedito la creazione di una risorsa o l'esecuzione di una query. Per saperne di più su questa norma, consulta Limitare le chiavi Cloud KMS per un progetto BigQuery.
Passaggi successivi
- Per un elenco di tutti i ruoli e le autorizzazioni IAM di BigQuery, vedi Ruoli e autorizzazioni IAM di BigQuery.
- Per saperne di più sulla sicurezza a livello di colonna, consulta Limitare l'accesso con il controllo dell'accesso a livello di colonna.
- Per saperne di più sulle chiavi di crittografia gestite dal cliente, consulta Proteggi i dati con le chiavi Cloud KMS.
- Per saperne di più sulla risoluzione dei problemi relativi alle policy di autorizzazione e negazione in IAM, consulta Risoluzione dei problemi relativi alle policy.
- Per saperne di più sull'Analizzatore policy di Policy Intelligence, consulta Analizzatore policy per le policy di autorizzazione.
- Per saperne di più sullo strumento Policy Troubleshooter, consulta la sezione Utilizzare Policy Troubleshooter.