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