OBJECT_PRIVILEGES 檢視畫面

INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視畫面包含 BigQuery 物件上明確設定的存取權控管繫結相關中繼資料。這個檢視畫面不含繼承的存取權控管繫結相關中繼資料。

所需權限

如要查詢 INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視畫面,您必須具備下列身分與存取權管理 (IAM) 權限:

  • bigquery.datasets.get 資料集。
  • bigquery.tables.getIamPolicy:資料表和檢視表。

如要進一步瞭解 BigQuery 權限,請參閱「使用身分與存取權管理功能控管存取權」。

結構定義

查詢 INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視表時,查詢結果會針對資源的每個存取控制綁定,列出一個資料列。

INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視表具有下列結構定義:

資料欄名稱 資料類型
OBJECT_CATALOG STRING 包含資源的專案 ID。
OBJECT_SCHEMA STRING 包含資源的資料集名稱。如果資源本身是資料集,則為 NULL
OBJECT_NAME STRING 政策套用的資料表、檢視表或資料集名稱。
OBJECT_TYPE STRING 資源類型,例如 SCHEMA (資料集)、TABLEVIEWEXTERNAL
PRIVILEGE_TYPE STRING 角色 ID,例如 roles/bigquery.dataEditor
GRANTEE STRING 授予角色的使用者類型和使用者。

範圍和語法

對這個檢視表執行的查詢必須包含區域限定詞。專案 ID 為選填欄位。如果未指定專案 ID,系統會使用查詢執行的專案。下表說明此檢視區域的範圍:

檢視表名稱 資源範圍 區域範圍
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES 專案層級 REGION
替換下列內容:
  • 選用:PROJECT_ID: Google Cloud 專案的 ID。如果未指定,系統會使用預設專案。
  • REGION:任一資料集區域名稱。例如:`region-us`

示例

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

限制

  • OBJECT_PRIVILEGES 查詢必須包含 WHERE 子句,將查詢限制在單一資料集、資料表或檢視表。
  • 用於擷取資料集存取權控管中繼資料的查詢必須指定 object_name
  • 用於擷取資料表或檢視表存取權控管中繼資料的查詢,必須同時指定 object_nameobject_schema

範例

以下範例會擷取 INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視表的所有資料欄。

如要對查詢執行所在專案以外的專案執行查詢,請使用下列格式將專案 ID 新增至區域:`project_id`.`region_id`.INFORMATION_SCHEMA.OBJECT_PRIVILEGES

以下範例會取得 mycompany 專案中 mydataset 資料集的所有存取權控管中繼資料:

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

結果應如下所示:

  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  | 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           |
  +----------------+---------------+-------------+-------------+---------------------------+-----------------------------------+
  

以下範例會取得 mydataset 資料集中 testdata 資料表的所有存取權控管資訊:

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

結果應如下所示:

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

INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視畫面只會顯示明確設定的存取控制繫結。第一個範例顯示使用者 cloudysanfrancisco@gmail.commydataset 資料集上具有 bigquery.dataOwner 角色。使用者 cloudysanfrancisco@gmail.com 會繼承在 mydataset 中建立、更新及刪除資料表的權限,包括 testdata 資料表。不過,由於這些權限並未在 testdata 資料表中明確授予,因此不會出現在第二個範例的結果中。