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