Controlla l'accesso a singole tabelle con IAM

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

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

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

Per saperne di più sulla concessione e sulla revoca dell'accesso alle risorse, consulta Concedere l'accesso a una risorsa.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the APIs

Concedi ruoli BigQuery a una tabella o una vista

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

Per concedere i ruoli BigQuery a una tabella o una vista selezionata:

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

    Vai alla pagina Dataform

  2. Seleziona un repository, quindi seleziona un'area di lavoro.

  3. Nel riquadro File, espandi Directory definitions/.

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

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

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

    Sostituisci quanto segue:

    • ROLE_LIST: il ruolo BigQuery o l'elenco di voci separate da virgole Ruoli BigQuery che vuoi concedere.

    • RESOURCE_TYPE: TABLE o VIEW.

    • USER_LIST: l'elenco separato da virgole di utenti che a cui viene assegnato il ruolo.

      Per un elenco di formati validi, consulta: user_list.

  6. (Facoltativo) Fai clic su Formato.

  7. Esegui la tabella o la vista.

  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 visualizzatore BigQuery per una tabella a un utente:

config { type: "table" }

SELECT ...

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

Revocare i ruoli BigQuery da una tabella o una vista

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

Per revocare i ruoli BigQuery da una tabella o una vista selezionata:

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

    Vai alla pagina Dataform

  2. Seleziona un repository, quindi seleziona un'area di lavoro.

  3. Nel riquadro File, espandi Directory definitions/.

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

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

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

    Sostituisci quanto segue:

    • ROLE_LIST: il ruolo BigQuery o l'elenco di voci separate da virgole Ruoli BigQuery che vuoi revocare.
    • RESOURCE_TYPE: TABLE o VIEW.
    • USER_LIST: l'elenco separato da virgole di utenti che di cui è stato revocato il ruolo. Per un elenco di formati validi, consulta: user_list.
  6. Per revocare l'accesso concesso in un'istruzione GRANT nel file, sostituisci il valore 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 vista.

  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 visualizzatore BigQuery ruolo revocato a un utente in una tabella:

config { type: "table" }

SELECT ...

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

Gestire collettivamente i ruoli BigQuery per tabelle e viste

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

Per gestire l'accesso alla tabella 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, quindi seleziona un'area di lavoro.

  3. Nel riquadro File, accanto a definitions/, fai clic sull'icona Menu Altro.

  4. Fai clic su Crea file.

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

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

  6. Fai clic su Crea file.

  7. Nel riquadro File, espandi la directory definitions/ e seleziona 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 BigQuery o l'elenco di voci separate da virgole Ruoli BigQuery che vuoi concedere o revocare.
    • RESOURCE_TYPE: TABLE o VIEW.
    • RESOURCE_NAME: il nome della tabella o della visualizzazione.
    • USER_LIST: l'elenco separato da virgole di utenti che a cui è stato concesso o revocato il ruolo. Per un elenco di formati validi, consulta: user_list.
  9. Aggiungi istruzioni GRANT e REVOKE in base alle esigenze.

    1. Per revocare l'accesso concesso in un'istruzione GRANT nel file, sostituisci il valore Istruzione GRANT con un'istruzione REVOKE.

      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 GRANT o REVOKE del file dopo la prima esecuzione dell'istruzione.

Passaggi successivi