Controlla l'accesso alle singole tabelle con IAM

Questo documento mostra come concedere e revocare i ruoli di BigQuery Identity and Access Management (IAM) per singole tabelle e viste Dataform.

Dataform e BigQuery utilizzano IAM per controllo dell'accesso. Per ulteriori informazioni sui ruoli e sulle autorizzazioni Dataform in IAM, consulta Controllare l'accesso con IAM.

Quando Dataform esegue una tabella o una visualizzazione, crea la risorsa in BigQuery. Durante lo sviluppo in Dataform, puoi concedere ruoli BigQuery a singole tabelle e viste per controllarne l'accesso a BigQuery dopo l'esecuzione.

Per ulteriori informazioni sulla concessione e la revoca dell'accesso alle risorse, vedi Concedere l'accesso a una risorsa.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API BigQuery and Dataform.

    Abilita le API

  5. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Abilita le API BigQuery and Dataform.

    Abilita le API

Concedi ruoli BigQuery a una tabella o una vista

Puoi concedere ruoli BigQuery a una tabella o una visualizzazione in Dataform aggiungendo un blocco post_operations con l'istruzione DCL GRANT al file di definizione .sqlx della tabella o vista selezionata.

Per concedere i ruoli BigQuery a una tabella o una vista selezionata, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Dataform.

    Vai alla pagina Dataform

  2. Seleziona un repository e poi un'area di lavoro.

  3. Nel riquadro File, espandi la directory definitions/.

  4. Seleziona il file di definizione .sqlx della tabella o della vista per cui vuoi concedere l'accesso.

  5. Nel file, inserisci il seguente snippet di codice:

    post_operations {
        GRANT "ROLE_LIST"
        ON ${self()}
        TO "USER_LIST"
    }
    

    Sostituisci quanto segue:

    • ROLE_LIST: il ruolo BigQuery o l'elenco di ruoli BigQuery separati da virgole che vuoi concedere
    • USER_LIST: l'elenco separato da virgole degli utenti a cui è concesso il ruolo

      Per un elenco dei formati validi, consulta user_list.

  6. (Facoltativo) Fai clic su Formato.

  7. Esegui la tabella o la visualizzazione.

  8. Se hai concesso l'accesso a una tabella incrementale, rimuovi l'istruzione GRANT dal file di definizione della tabella dopo la prima esecuzione.

Il seguente esempio di codice mostra il ruolo Visualizzatore BigQuery concesso in una tabella a un utente:

config { type: "table" }

SELECT ...

post_operations {
  GRANT `roles/bigquery.dataViewer` ON ${self()} TO "user:222larabrown@gmail.com"
}

Revocare i ruoli BigQuery da una tabella o una vista

Puoi revocare i ruoli BigQuery da una tabella o una vista aggiungendo un blocco post_operations con l'istruzione DCL REVOKE al file di definizione .sqlx della tabella o vista selezionata.

Per revocare i ruoli BigQuery da una tabella o vista selezionata, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Dataform.

    Vai alla pagina Dataform

  2. Seleziona un repository e poi un'area di lavoro.

  3. Nel riquadro File, espandi la directory definitions/.

  4. Seleziona il file di definizione .sqlx della tabella o della vista per cui vuoi revocare l'accesso.

  5. Nel blocco post_operations, inserisci la seguente istruzione REVOKE:

        REVOKE "ROLE_LIST"
        ON ${self()}
        TO "USER_LIST"
    

    Sostituisci quanto segue:

    • ROLE_LIST: il ruolo BigQuery o l'elenco di ruoli BigQuery separati da virgole che vuoi revocare.
    • USER_LIST: l'elenco separato da virgole di utenti da cui è stato revocato il ruolo. Per un elenco dei formati validi, consulta user_list.
  6. Per revocare l'accesso concesso in un'istruzione GRANT del file, sostituisci l'istruzione GRANT con un'istruzione REVOKE.

    Removing the `GRANT` statement without adding the `REVOKE` statement
    does not revoke access.
    
  7. (Facoltativo) Fai clic su Formato.

  8. Esegui la tabella o la visualizzazione.

  9. Se hai revocato l'accesso a una tabella incrementale, rimuovi l'istruzione REVOKE dal file di definizione della tabella dopo la prima esecuzione.

Il seguente esempio di codice mostra il ruolo di Visualizzatore BigQuery revocato a un utente in una tabella:

config { type: "table" }

SELECT ...

post_operations {
  REVOKE `roles/bigquery.dataViewer` ON ${self()} FROM "user:222larabrown@gmail.com"
}

Gestisci collettivamente i ruoli BigQuery per tabelle e viste

Per controllare l'accesso a BigQuery a singole tabelle e viste in un'unica posizione, puoi creare un file type: "operations" dedicato con istruzioni DCL GRANT e REVOKE.

Per gestire l'accesso alle tabelle BigQuery in un singolo file type: "operations", segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Dataform.

    Vai alla pagina Dataform

  2. Seleziona un repository e poi un'area di lavoro.

  3. Nel riquadro File, accanto a definitions/, fai clic sul menu Altro .

  4. Fai clic su Crea file.

  5. Nel campo Aggiungi un percorso file, inserisci il nome del file seguito da .sqlx dopo definitions/. Ad esempio: definitions/table-access.sqlx.

    I nomi file possono includere solo numeri, lettere, trattini e trattini bassi.

  6. Fai clic su Crea file.

  7. Nel riquadro File, espandi la directory definitions/ e seleziona il file appena creato.

  8. Nel file, inserisci il seguente snippet di codice:

      config { type: "operations" }
    
      GRANT "ROLE_LIST" ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
    
      REVOKE "ROLE_LIST" ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
    

    Sostituisci quanto segue:

    • ROLE_LIST: il ruolo o l'elenco di ruoli BigQuery separati da virgole che vuoi concedere o revocare.
    • RESOURCE_TYPE: il tipo di risorsa, TABLE o VIEW.
    • RESOURCE_NAME: nome della tabella o della visualizzazione.
    • USER_LIST: l'elenco separato da virgole degli utenti ai quali è stato concesso o revocato il ruolo. Per un elenco dei formati validi, consulta user_list.
  9. Aggiungi le istruzioni GRANT e REVOKE in base alle esigenze.

    1. Per revocare l'accesso concesso in un'istruzione GRANT del file, sostituisci l'istruzione GRANT con un'istruzione REVOKE.

      La rimozione dell'istruzione GRANT senza aggiungere l'istruzione REVOKE non revoca l'accesso.

  10. (Facoltativo) Fai clic su Formato.

  11. Esegui il file dopo ogni aggiornamento.

    1. Se hai concesso o revocato l'accesso a una tabella incrementale, rimuovi l'istruzione GRANT o REVOKE dal file dopo la prima esecuzione dell'istruzione.

Passaggi successivi