Visualizzazione OBJECT_PRIVILEGES
La vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
contiene i metadati relativi alle associazioni di controllo dell'accesso impostate esplicitamente sugli oggetti BigQuery.
Questa vista non contiene metadati sulle associazioni di controllo dell'accesso ereditate.
Autorizzazioni obbligatorie
Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.OBJECT_PRIVILEGES
, devi disporre delle seguenti autorizzazioni IAM (Gestione di identità e accessi):
bigquery.datasets.get
per i set di dati.bigquery.tables.getIamPolicy
per tabelle e visualizzazioni.
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 associazione di controllo dell'accesso per una risorsa.
La vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
ha il seguente schema:
Nome colonna | Tipo di dati | Valore |
---|---|---|
OBJECT_CATALOG |
STRING |
L'ID del progetto contenente la risorsa. |
OBJECT_SCHEMA |
STRING |
Il nome del set di dati che contiene la risorsa. Questo accade
NULL se la risorsa stessa è un set di dati. |
OBJECT_NAME |
STRING |
Il nome della tabella, della vista o del set di dati a cui si applica il criterio. |
OBJECT_TYPE |
STRING |
Il tipo di risorsa, ad esempio SCHEMA (set di dati), TABLE , VIEW e EXTERNAL .
|
PRIVILEGE_TYPE |
STRING |
L'ID del 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 relative a questa vista devono includere un qualificatore 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 illustra l'ambito della regione per questa visualizzazione:
Nome vista | Ambito risorsa | Ambito regione |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES |
Livello progetto | REGION |
- Facoltativo:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. 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 clausolaWHERE
che limiti le query a un singolo set di dati, tabella o vista. - Le query per recuperare i metadati di 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
CHEobject_schema
.
Esempi
L'esempio seguente recupera tutte le colonne dalla visualizzazione INFORMATION_SCHEMA.OBJECT_PRIVILEGES
.
Per eseguire la query in un progetto diverso da quello in cui è in esecuzione, 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 di 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 le associazioni di controllo dell'accesso impostate esplicitamente. 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.