OBJECT_PRIVILEGES 檢視畫面
INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視畫面包含 BigQuery 物件上明確設定的存取權控管繫結中繼資料。這個檢視區塊不包含有關繼承存取權控管繫結的中繼資料。
所需權限
如要查詢 INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視畫面,您必須具備下列 Identity and Access Management (IAM) 權限:
bigquery.datasets.get資料集。bigquery.tables.getIamPolicy,用於資料表和檢視表。
如要進一步瞭解 BigQuery 權限,請參閱「使用 IAM 控管存取權」。
結構定義
查詢 INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視表時,查詢結果會為資源的每個存取權控管繫結包含一個資料列。
INFORMATION_SCHEMA.OBJECT_PRIVILEGES 檢視表具有下列結構定義:
| 資料欄名稱 | 資料類型 | 值 |
|---|---|---|
object_catalog |
STRING |
資源所屬專案的專案 ID。 |
object_schema |
STRING |
包含資源的資料集名稱。如果資源本身是資料集,則為 NULL。 |
object_name |
STRING |
政策套用的資料表、檢視區塊或資料集名稱。 |
object_type |
STRING |
資源類型,例如 SCHEMA (資料集)、TABLE、VIEW 和 EXTERNAL。
|
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_name和object_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 資料表中明確授予,因此不會顯示在第二個範例的結果中。