授權檢視表
本文說明如何在 BigQuery 中建立授權檢視表和授權具體化檢視表。資料管理員可以建立授權 view,與特定使用者和群組 (主體) 分享資料集中的部分資料。主體可以查看您分享的資料並對其執行查詢,但無法直接存取來源資料集。
查看類型
邏輯檢視表是 BigQuery 的預設檢視表類型,而具體化檢視表是預先運算的檢視表,會定期快取查詢結果,以提高效能和效率。
邏輯檢視表的授權檢視表稱為授權檢視表,但具體化檢視表的授權檢視表稱為授權具體化檢視表。
如果邏輯檢視區塊依賴大型或運算成本高昂的查詢,則可以改為建立具體化檢視區塊。如要瞭解邏輯檢視表和具體化檢視表的用途,請參閱「邏輯檢視表和具體化檢視表總覽」。
建立授權檢視表的高階步驟
如要建立及共用檢視區塊,請參閱下列高階步驟,這些步驟適用於授權邏輯檢視區塊和授權具體化檢視區塊。
- 建立資料集,以便加入來源資料。
- 執行查詢,將資料載入來源資料集中的目的地資料表。
- 建立資料集,以便加入授權 view。
- 從 SQL 查詢建立授權 view,限制資料分析師可在查詢結果中查看的資料欄。
- 授予資料分析師執行查詢工作的權限。
- 授予資料分析師對內含授權檢視表的資料集存取權。
- 將來源資料集的存取權授予已授權檢視表。
替代方案
雖然授權檢視畫面具有彈性且可擴充,但下列其中一種方法可能更適合您的用途:
- 在資料表上設定資料列層級政策。
- 在表格中設定資料欄層級政策。
- 將資料儲存在不同的資料表中。
- 分享資料集中的所有檢視表 (授權資料集)。
使用資料列層級或資料欄層級安全性,或使用不同的資料表
資料管理員可以在資料表上設定資料列層級的存取權政策,或建立個別資料表來存放機密資料,藉此限制使用者查看該資料的權限。將資料儲存在另一個資料表中會隔離資料,並移除查看資料表中有多少資料列的功能。
此外,資料管理員可以建立及套用政策標記,限制使用者查看資料表中的資料欄。
將資料儲存在獨立資料表中是最安全的方法,但彈性最低。設定資料列層級政策既彈性又安全,而共用授權檢視畫面既彈性又可提供最佳效能。
如要詳細比較這些方法,請參閱下列資源:
共用資料集中的所有檢視畫面
如要授予檢視表集合資料集的存取權,不必逐一授權每個檢視表,可以將檢視表歸入資料集,然後授予包含檢視表的資料集,存取包含資料的資料集。
然後視需要授予主體權限,存取包含檢視群組的資料集,或資料集中的個別檢視區塊。可存取其他資料集的資料集稱為「授權資料集」。授權其他資料集存取資料的資料集稱為「共用資料集」。
資料集的存取控制清單最多可有 2,500 個授權資源,包括授權檢視表、授權資料集和授權函式。 如果授權檢視區塊數量過多而超出上限,建議將檢視區塊分組到授權資料集中。設計新的 BigQuery 架構 (尤其是多租戶架構) 時,建議將相關檢視區塊分組到授權資料集中。
限制
- 在其他資料集中建立授權檢視表或授權具體化檢視表時,來源資料集和授權檢視表資料集必須位於相同的區域位置。
- 刪除授權 view 後,系統最多可能需要 24 小時,才會從檢視表清單中移除該授權 view。這段期間您無法存取已授權的檢視表,但已刪除的已授權檢視表可能會出現在檢視表清單中,並計入已授權檢視表限制。如果新的授權 view 會超出這項限制,系統就會禁止建立額外的授權 view。
- 您無法在次要副本中建立授權檢視區塊。 詳情請參閱「資料集複製作業中的資源行為」。
事前準備
授予身分與存取權管理 (IAM) 角色,讓使用者具備必要權限,可查詢您分享的授權檢視區塊或授權具體化檢視區塊。
授權檢視區塊和 VPC Service Controls
在 VPC Service Controls 範圍內使用授權檢視表時,輸入和輸出規則必須允許主體存取內含檢視表的專案,以及內含檢視表存取資料的來源資料的任何其他專案。
舉例來說,在下圖中,專案 R 中的呼叫端會存取專案 A 中的授權檢視區塊,而專案 A 的來源資料表位於專案 B。在這種情況下,VPC Service Controls 輸入和輸出規則必須允許專案 R 中的呼叫者,使用 BigQuery 服務存取專案 A 和專案 B。
VPC Service Controls 存取權的必要權限
主體不需要來源資料專案的 Identity and Access Management 權限,但除了允許存取包含檢視區塊的專案之外,輸入規則也必須允許存取包含來源資料表的來源專案中的 BigQuery 服務。
如要瞭解必要角色和權限,請參閱「專案和資料集的使用者權限」。
輸入和輸出規則
下列 VPC Service Controls 輸入和輸出規則範例,可讓 BigQuery API 存取來源和檢視專案。
- 如要瞭解如何設定輸入和輸出規則,請參閱「設定輸入和輸出政策」。
- 如要瞭解 BigQuery 的輸入和輸出規則設定限制,請參閱「VPC Service Controls 支援的產品:BigQuery」。
舉例來說,如果您在 PROJECT_A (檢視畫面) 中建立檢視畫面,存取 PROJECT_B (來源) 中的資料,則需要為 PROJECT_B 設定一組連入規則,並為 PROJECT_A 設定另一組連入規則:
- ingressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
title: Ingress rules for the source project
下列 YAML 檔案顯示 PROJECT_B (來源) 的輸出規則集。您還需要一組 PROJECT_A (檢視畫面) 的輸出規則:
- egressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- method: *
resources:
- projects/project_b
egressFrom:
identityType: caller_r
sources:
- resource:
- projects/project_r
title: Egress rules for the source project
必要的角色
如要建立或更新授權的檢視表,您必須具備該檢視表所屬資料集的權限,以及提供該檢視表存取權的資料集的權限。
此外,您還需要授予使用者或群組專案和資料集的存取權,才能存取檢視區塊。
包含檢視表的資料集權限
BigQuery 會將檢視表視為資料表資源,因此建立檢視表需要的權限和建立資料表相同。您還需擁有檢視表 SQL 查詢所參照的資料表查詢權限。
- 如要建立資料集,您需要專案的
bigquery.datasets.createIAM 權限。 - 如要建立檢視區塊,您必須具備資料集的
bigquery.tables.createIAM 權限。roles/bigquery.dataEditor預先定義的 IAM 角色包含建立檢視區塊所需的權限。 - 如要建立可查詢您無權存取資料表的檢視區塊,您必須具備該檢視區塊所查詢資料表的
bigquery.tables.getData權限。
如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱預先定義的角色和權限。
含有來源資料的資料集權限
如要授權檢視表,請授予檢視表來源資料所屬資料集的讀取權限。
如要執行這項授權,您必須具備來源資料所屬資料集的下列權限:
bigquery.datasets.updatedatasets.getIamPolicydatasets.setIamPolicy
如要瞭解更新資料集所需的額外權限,請參閱「必要權限」。
專案和資料集的檢視權限
如要與使用者或群組共用授權檢視區塊,您必須授予使用者或群組下列 IAM 權限:
查詢工作執行的專案 (帳單或執行專案) 的
roles/bigquery.jobUser(或roles/bigquery.user) IAM 角色。這個角色會授予bigquery.jobs.create權限,這是對檢視區執行查詢工作時的必要權限。無論檢視畫面代管於何處,您只需要在要執行工作的專案中,具備
roles/bigquery.jobUserIAM 角色。包含授權 view 的資料集的
roles/bigquery.dataViewerIAM 角色。這個角色會授予bigquery.tables.getData權限,這是查詢檢視區塊的必要權限。如果使用者從其他專案查詢授權檢視區塊,則不需要在代管檢視區塊的專案中具備
roles/bigquery.jobUser角色。他們需要具備內含檢視表的資料集roles/bigquery.dataViewer角色,以及查詢執行的專案roles/bigquery.jobUser角色。
使用授權 view
以下各節說明如何使用授權檢視區塊和授權具體化檢視區塊。
建立授權檢視表
如要建立授權 view,請選擇下列任一選項。如要瞭解授權、共用及刪除授權檢視表的完整步驟,請參閱「建立授權檢視表」教學課程。
控制台
前往「BigQuery」頁面。
在查詢編輯器中,輸入要用來建立授權檢視畫面的查詢。
依序點選「檔案」>「儲存」>「儲存檢視畫面」。
在「Save view」(儲存檢視表) 對話方塊中,執行下列操作:
在「Project」(專案) 部分,輸入要儲存檢視表的專案。
在「Dataset」(資料集) 部分,輸入要儲存檢視表的資料集。這個資料集必須與來源查詢中使用的資料集不同。
在「Table」(資料表) 部分,輸入檢視表的名稱。
按一下 [儲存]。
授予可使用授權檢視畫面的使用者必要權限。
在「Explorer」窗格中,選取來源查詢中使用的資料集。
在「詳細資料」窗格中,依序點選「共用」>「授權檢視」。
在「Authorized views」(授權 view) 窗格中,為「Authorized view」(授權 view) 輸入檢視表的完整名稱,格式為 PROJECT_ID.DATASET_ID.VIEW_NAME。
按一下「新增授權」。
Terraform
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
每項專案只需要執行一次這個指令,且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是
.tf,例如main.tf。在本教學課程中,這個檔案稱為main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在學習教學課程,可以複製每個章節或步驟中的程式碼範例。
將範例程式碼複製到新建立的
main.tf中。視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您使用這種做法。
- 查看並修改範例參數,套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請加入
-upgrade選項:terraform init -upgrade
套用變更
-
查看設定,確認 Terraform 即將建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令並在提示中輸入
yes,套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
管理授權檢視區塊的使用者或群組
授權檢視區塊後,您可以對資料集、資料表或檢視區塊完成下列工作,維持存取權:
- 查看存取權政策。
- 授予存取權。
- 撤銷存取權。
- 拒絕存取。
詳情請參閱「使用 IAM 控管資源存取權」。
移除資料檢視的授權
如要移除檢視區塊的授權,請選取下列其中一個選項:
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
在「Explorer」窗格中展開專案,按一下「Datasets」(資料集),然後選取資料集。
依序按一下「總覽」>「表格」,然後選取表格。
依序點選「共用」>「授權檢視」。
按一下 即可移除授權。
按一下 [關閉]。
bq
如要移除檢視區塊的授權,請使用 bq rm 指令。輸入要移除授權的檢視表 table_id。
bq rm \ project_id:dataset:table_id
API
呼叫 tables.delete 方法,並使用 projectID、datasetID 和 tableID 屬性移除資料集的授權 view。詳情請參閱「資料表」。
授權遭撤銷和 VPC Service Controls
當授權 view 存取 VPC Service Controls perimeter 內的來源資料集資料時,查詢 view 會略過對基礎資料表執行的標準 VPC Service Controls 檢查。
如果從來源資料集撤銷或移除檢視授權,BigQuery 會改用標準授權檢查,並直接查詢來源專案中的基本資料表。如果這些基礎資料表跨越 VPC Service Controls 範圍界線,且沒有允許直接存取資料表的明確輸出規則,VPC Service Controls 就會封鎖查詢,並傳回輸入或輸出違規錯誤。
還原來源資料集的檢視授權後,BigQuery 會再次略過直接基礎資料表檢查,VPC Service Controls 錯誤也會隨之解決。
配額與限制
- 授權檢視表會受到資料集限制。詳情請參閱「資料集限制」。
- 移除授權檢視後,系統最多可能需要 24 小時,才會移除所有對該檢視的參照。為避免發生錯誤,請等待 24 小時再重新使用已移除的資料檢視名稱,或為資料檢視建立專屬名稱。
進階主題
以下各節說明授權檢視區塊的進階使用方法。
結合資料列層級安全防護機制與授權檢視畫面
系統會根據基礎來源資料表的資料列層級存取權政策,篩選邏輯檢視或具體化檢視中顯示的資料。
如要瞭解資料列層級安全防護機制與具體化檢視表的互動方式,請參閱「將資料列層級的安全性與其他 BigQuery 功能搭配使用」。
結合資料欄層級安全防護機制與授權檢視畫面
資料欄層級安全性對檢視區塊的影響,與檢視區塊是否為授權檢視區塊無關。
如要詳細瞭解權限的套用方式,請參閱「查詢檢視區塊」一文,瞭解資料欄層級的安全性。
使用 BigQuery sharing 搭配授權檢視表
BigQuery sharing (舊稱 Analytics Hub) 是資料交換平台,具備下列功能:
- 讓您跨機構界線大規模分享資料和洞察資訊。
- 採用完善的安全和隱私權架構。
- 支援將 BigQuery 資料集 (稱為「共用資料集」) 及其相關聯的授權檢視表和授權資料集發布給一組訂閱者。
連結的資料集是唯讀 BigQuery 資料集,做為共用資料集的指標或參照。訂閱共用項目會在專案中建立連結的資料集,但不會複製資料集,因此訂閱者可以讀取資料,但無法在其中新增或更新物件。
不支援參照連結資料集中資料表的具體化檢視表。
詳情請參閱「共用簡介」。
後續步驟
- 如需建立授權檢視表的教學課程,請參閱建立授權檢視表。
- 如要建立邏輯檢視區塊,請參閱「建立邏輯檢視區塊」。
- 如要建立支援其他類型存取權控管的具體化檢視表,請參閱「建立具體化檢視表」。
- 如要取得檢視表中繼資料,請參閱取得檢視表相關資訊一文。
- 如要管理檢視畫面,請參閱「管理檢視畫面」。