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