Vista OBJECT_PRIVILEGES
A visualização INFORMATION_SCHEMA.OBJECT_PRIVILEGES
contém metadados sobre associações de controlo de acesso que são definidas explicitamente em objetos do BigQuery.
Esta vista não contém metadados sobre as associações de controlo de acesso herdadas.
Autorizações necessárias
Para consultar a vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
, precisa das seguintes autorizações de gestão de identidade e de acesso (IAM):
bigquery.datasets.get
para conjuntos de dados.bigquery.tables.getIamPolicy
para tabelas e vistas.
Para mais informações sobre as autorizações do BigQuery, consulte o artigo Controlo de acesso com a IAM.
Esquema
Quando consulta a vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
, os resultados da consulta contêm uma linha para cada associação de controlo de acesso de um recurso.
A vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
tem o seguinte esquema:
Nome da coluna | Tipo de dados | Valor |
---|---|---|
object_catalog |
STRING |
O ID do projeto que contém o recurso. |
object_schema |
STRING |
O nome do conjunto de dados que contém o recurso. Este é
NULL se o recurso em si for um conjunto de dados. |
object_name |
STRING |
O nome da tabela, da vista ou do conjunto de dados ao qual a política se aplica. |
object_type |
STRING |
O tipo de recurso, como SCHEMA (conjunto de dados), TABLE , VIEW e EXTERNAL .
|
privilege_type |
STRING |
O ID da função, como roles/bigquery.dataEditor . |
grantee |
STRING |
O tipo de utilizador e o utilizador ao qual a função é concedida. |
Âmbito e sintaxe
As consultas nesta vista têm de incluir um qualificador de região. Um ID do projeto é opcional. Se não for especificado um ID do projeto, é usado o projeto no qual a consulta é executada. A tabela seguinte explica o âmbito da região para esta vista:
Nome da visualização de propriedade | Âmbito do recurso | Âmbito da região |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES |
Nível do projeto | REGION |
-
Opcional:
PROJECT_ID
: o ID do seu projeto do Trusted Cloud Google Cloud. Se não for especificado, é usado o projeto predefinido. -
REGION
: qualquer nome da região do conjunto de dados. Por exemplo,`region-us`
.
Exemplo
-- Returns metadata for the access control bindings for mydataset.
SELECT * FROM myproject.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset";
Limitações
- As consultas
OBJECT_PRIVILEGES
têm de conter uma cláusulaWHERE
que limite as consultas a um único conjunto de dados, tabela ou vista. - As consultas para obter metadados de controlo de acesso para um conjunto de dados têm de especificar o
object_name
. - As consultas para obter metadados de controlo de acesso para uma tabela ou uma vista têm de especificar
object_name
eobject_schema
.
Exemplos
O exemplo seguinte obtém todas as colunas da vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
.
Para executar a consulta num projeto diferente do projeto no qual a consulta está a ser executada, adicione o ID do projeto à região no seguinte formato: `project_id`.`region_id`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
.
O exemplo seguinte obtém todos os metadados de controlo de acesso para o conjunto de dados mydataset
no projeto mycompany
:
SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_name = "mydataset"
Os resultados devem ter o seguinte aspeto:
+----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+ | 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 | +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
O exemplo seguinte obtém todas as informações de controlo de acesso para a tabela testdata
no conjunto de dados mydataset
:
SELECT *
FROM mycompany.`region-us`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
WHERE object_schema = "mydataset" AND object_name = "testdata"
Os resultados devem ter o seguinte aspeto:
+----------------+---------------+--------------+-------------+----------------------+------------------------------------+ | object_catalog | object_schema | object_name | object_type | privilege_type | grantee | +----------------+---------------+--------------+-------------+----------------------+------------------------------------+ | mycompany | mydataset | testdata | TABLE | roles/bigquery.admin | user:baklavainthebalkans@gmail.com | +----------------+---------------+--------------+-------------+----------------------+------------------------------------+
A vista INFORMATION_SCHEMA.OBJECT_PRIVILEGES
mostra apenas as associações de controlo de acesso
que estão definidas explicitamente. O primeiro exemplo mostra que o utilizador
cloudysanfrancisco@gmail.com
tem a função bigquery.dataOwner
no conjunto de dados mydataset
. O utilizador
cloudysanfrancisco@gmail.com
herda autorizações para criar, atualizar e
eliminar tabelas em mydataset
, incluindo a tabela testdata
. No entanto, uma vez que essas autorizações não foram concedidas explicitamente na tabela testdata
, não aparecem nos resultados do segundo exemplo.