Visualizzazione OBJECT_PRIVILEGES

La visualizzazione INFORMATION_SCHEMA.OBJECT_PRIVILEGES contiene metadati sui binding di controllo dell'accesso impostati in modo esplicito sugli oggetti BigQuery. Questa visualizzazione non contiene metadati sui binding di controllo dell'accesso ereditati.

Autorizzazioni obbligatorie

Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.OBJECT_PRIVILEGES, devi disporre delle seguenti autorizzazioni IAM (Identity and Access Management):

  • bigquery.datasets.get per i set di dati.
  • bigquery.tables.getIamPolicy per tabelle e viste.

Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.

Schema

Quando esegui una query sulla visualizzazione INFORMATION_SCHEMA.OBJECT_PRIVILEGES, i risultati della query contengono una riga per ogni binding di controllo dell'accesso dell'accesso per una risorsa.

La vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES ha lo schema seguente:

Nome colonna Tipo di dati Valore
OBJECT_CATALOG STRING L'ID progetto del progetto che contiene la risorsa.
OBJECT_SCHEMA STRING Il nome del set di dati che contiene la risorsa. Questo è NULL se la risorsa stessa è un set di dati.
OBJECT_NAME STRING Il nome della tabella, della visualizzazione o del set di dati a cui si applica la norma.
OBJECT_TYPE STRING Il tipo di risorsa, ad esempio SCHEMA (set di dati), TABLE, VIEW e EXTERNAL.
PRIVILEGE_TYPE STRING L'ID ruolo, ad esempio roles/bigquery.dataEditor.
GRANTEE STRING Il tipo di utente e l'utente a cui viene concesso il ruolo.

Ambito e sintassi

Le query su questa visualizzazione devono includere un qualificatore di regione. L'ID progetto è facoltativo. Se non viene specificato alcun ID progetto, viene utilizzato il progetto in cui viene eseguita la query. La tabella seguente spiega l'ambito della regione per questa visualizzazione:

Nome vista Ambito risorsa Ambito regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES Livello progetto REGION
Sostituisci quanto segue:
  • (Facoltativo) PROJECT_ID: l'ID del tuo Trusted Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito.
  • REGION: qualsiasi nome della regione del set di dati. Ad esempio: `region-us`.

Esempio

-- Returns metadata for the access control bindings for mydataset.
SELECT * FROM myproject.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset";

Limitazioni

  • Le query OBJECT_PRIVILEGES devono contenere una clausola WHERE che limiti le query a un singolo set di dati, tabella o vista.
  • Le query per recuperare i metadati controllo dell'accesso per un set di dati devono specificare object_name.
  • Le query per recuperare i metadati di controllo dell'accesso per una tabella o una vista devono specificare sia object_name che object_schema.

Esempi

L'esempio seguente recupera tutte le colonne dalla vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES.

Per eseguire la query su un progetto diverso da quello in cui viene eseguita, aggiungi l'ID progetto alla regione nel seguente formato: `project_id`.`region_id`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES.

L'esempio seguente recupera tutti i metadati di controllo dell'accesso per il set di dati mydataset nel progetto mycompany:

SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset"

I risultati dovrebbero essere simili ai seguenti:

  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | object_catalog | object_schema | object_name | object_type |  privilege_type           | grantee                           |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataEditor | projectEditor:mycompany           |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataOwner  | projectOwner:mycompany            |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataOwner  | user:cloudysanfrancisco@gmail.com |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | mycompany      | NULL          | mydataset   | SCHEMA      | roles/bigquery.dataViwer  | projectViewer:mycompany           |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  

L'esempio seguente recupera tutte le informazioni controllo dell'accesso per la tabella testdata nel set di dati mydataset:

SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_schema = "mydataset" AND object_name = "testdata"

I risultati dovrebbero essere simili ai seguenti:

  +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
  | object_catalog | object_schema |  object_name | object_type |  privilege_type      | grantee                            |
  +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
  | mycompany      | mydataset     | testdata     | TABLE       | roles/bigquery.admin | user:baklavainthebalkans@gmail.com |
  +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
  

La visualizzazione INFORMATION_SCHEMA.OBJECT_PRIVILEGES mostra solo i binding controllo dell'accesso impostati in modo esplicito. Il primo esempio mostra che l'utente cloudysanfrancisco@gmail.com ha il ruolo bigquery.dataOwner nel set di dati mydataset. L'utente cloudysanfrancisco@gmail.com eredita le autorizzazioni per creare, aggiornare ed eliminare le tabelle in mydataset, inclusa la tabella testdata. Tuttavia, poiché queste autorizzazioni non sono state concesse esplicitamente nella tabella testdata, non vengono visualizzate nei risultati del secondo esempio.