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

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 .

Un errore di accesso negato nella scheda Informazioni job della sezione Risultati delle query.

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.

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

    In alternativa, dal menu di navigazione, scegli Monitoring > Esplora log.

  2. In Esplora log, scegli Log di progetto per l'ambito dei log.

  3. 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.

  4. Nei risultati della query, espandi la voce di log corrispondente all'operazione non riuscita.

  5. Nella sezione protoPayload, espandi l'array authorizationInfo e poi espandi ogni nodo dell'array authorizationInfo.

    L'array authorizationInfo mostra ogni controllo delle autorizzazioni eseguito durante la chiamata API.

  6. Per visualizzare la causa dell'errore, cerca la voce granted: false. La voce granted: false mostra 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 in protoPayload.authenticationInfo, è l'entità che ha tentato l'azione.

    La sezione authorizationInfo di protoPayload che mostra l'autorizzazione, la risorsa e principalEmail.

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.

  1. Nella console Google Cloud , vai alla pagina Policy Analyzer.

    Vai a Policy Analyzer

    In alternativa, dal menu di navigazione, scegli IAM e amministrazione > Policy Analyzer.

  2. Fai clic su Crea query personalizzata.

  3. Nella pagina Configura la query, inserisci le informazioni che hai raccolto in precedenza:

    1. 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.

    2. 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.

    3. Fai clic su Aggiungi parametro.

    4. 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.

    5. Fai clic su Aggiungi parametro.

    6. 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
  4. Nel riquadro Query personalizzata, fai clic su Analizza > Esegui query.

  5. 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.

  1. Apri la sezione delle autorizzazioni BigQuery della pagina Ruoli e autorizzazioni IAM di BigQuery.

  2. 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.

  3. 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.

  4. 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_cache per 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 TRUNCATE per 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