授權檢視表
本文說明如何在 BigQuery 中建立授權檢視表和授權具體化檢視表。
總覽
資料管理員可以建立授權檢視區塊,與特定使用者和群組 (主體) 分享資料集中的部分資料。主體可以查看您分享的資料並對其執行查詢,但無法直接存取來源資料集。
查看類型
邏輯檢視表是 BigQuery 的預設檢視表類型,而具體化檢視表是預先運算的檢視表,會定期快取查詢結果,以提高效能和效率。
邏輯檢視表的授權檢視表稱為授權檢視表,但具體化檢視表的授權檢視表稱為授權具體化檢視表。
如果邏輯檢視區塊依賴大型或運算成本高昂的查詢,則可以改為建立具體化檢視區塊。不過,您通常可以只查詢部分資料或使用其他技術來提升效能,不必建立具體化檢視區塊。
詳情請參閱下列資源:
建立授權檢視表的高階步驟
如要建立及共用檢視區塊,請參閱下列高階步驟,這些步驟適用於授權邏輯檢視區塊和授權具體化檢視區塊。
- 建立資料集來存放來源資料。
- 執行查詢,將資料載入來源資料集中的目的地資料表。
- 建立資料集來存放授權檢視表。
- 透過 SQL 查詢建立授權檢視表,限制資料分析師可在查詢結果中查看的資料欄。
- 授予資料分析師執行查詢工作的權限。
- 授予資料分析師對內含授權檢視表的資料集存取權。
- 授予授權檢視表來源資料集的存取權。
替代方案
雖然授權檢視畫面具有彈性且可擴充,但下列其中一種方法可能更適合您的用途:
- 在表格中設定資料列層級政策。
- 在表格中設定資料欄層級政策。
- 將資料儲存在不同的資料表中。
- 分享資料集中的所有檢視表 (已授權資料集)。
使用資料列層級或資料欄層級安全性,或使用不同的資料表
資料管理員可以在資料表上設定資料列層級的存取權政策,或建立個別資料表來存放機密資料,藉此限制使用者查看該資料的權限。將資料儲存在獨立的資料表中會隔離資料,並移除查看資料表中有多少資料列的功能。
此外,資料管理員可以建立及套用政策代碼,限制使用者查看資料表中的資料欄。
將資料儲存在獨立資料表中是最安全的方法,但彈性最低。設定資料列層級政策既彈性又安全,而共用授權檢視畫面則彈性十足,且效能最佳。
如要詳細比較這些方法,請參閱下列資源:
共用資料集中的所有檢視畫面
如要授予檢視表集合資料集的存取權,不必逐一授權每個檢視表,可以將檢視表歸入同一個資料集,然後授予包含檢視表的資料集,存取包含資料的資料集。
然後視需要授予主體權限,存取含有檢視群組的資料集,或資料集中的個別檢視畫面。可存取其他資料集的資料集稱為「授權資料集」。授權其他資料集存取資料的資料集稱為「共用資料集」。
限制
- 在其他資料集中建立授權檢視表或授權具體化檢視表時,來源資料集和授權檢視表資料集必須位於相同的區域位置。
- 刪除授權檢視表後,系統最多可能需要 24 小時,才會從檢視表清單中移除該授權檢視表。這段期間您無法存取已授權的檢視表,但已刪除的已授權檢視表可能會出現在檢視表清單中,並計入已授權檢視表上限。如果新的授權檢視區塊會超出這項限制,系統就會禁止建立。
事前準備
授予身分與存取權管理 (IAM) 角色,讓使用者具備必要權限,可查詢您共用的授權檢視區塊或授權具體化檢視區塊。
必要的角色
如要建立或更新授權的檢視表,您必須具備該檢視表所屬資料集的權限,以及提供該檢視表存取權的資料集的權限。
此外,您還需要授予使用者或群組檢視表所屬專案和資料集的存取權。
包含檢視表的資料集管理員權限
BigQuery 會將檢視表視為資料表資源,因此建立檢視表需要的權限和建立資料表相同。您還需擁有檢視表 SQL 查詢所參照的資料表查詢權限。
如要建立資料檢視,您需要 bigquery.tables.create
IAM 權限。roles/bigquery.dataEditor
這個預先定義的 IAM 角色具備建立檢視區塊所需的權限。
此外,如果您具備 bigquery.datasets.create
權限,可以在您建立的資料集中建立檢視區塊。如要為不屬於您的資料建立檢視區塊,您必須具備該資料表的 bigquery.tables.getData
權限。
如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱預先定義的角色和權限。
提供檢視表存取權的第二個資料集管理員權限
如要更新資料集屬性,您需要下列 IAM 權限:
bigquery.datasets.update
bigquery.datasets.setIamPolicy
(僅在 Google Cloud 控制台中更新資料集存取權控管設定時需要)
roles/bigquery.dataOwner
預先定義的 IAM 角色包含更新資料集屬性所需的權限。
此外,如果您具備 bigquery.datasets.create
權限,可以更新所建立資料集的屬性。
如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱預先定義的角色與權限一文。
檢視專案和資料集的使用者權限
如要與使用者或群組共用授權檢視畫面,您必須授予使用者或群組下列 IAM 權限:
- 專案的
roles/bigquery.user
IAM 角色,其中包含授權檢視畫面。 - 授權檢視表所屬資料集的
roles/bigquery.dataViewer
IAM 角色。
使用授權檢視表
以下各節說明如何使用授權檢視區塊和授權具體化檢視區塊。
建立授權檢視表
如要建立授權檢視區塊,請選擇下列其中一個選項。如需授權、共用及刪除授權檢視表的完整步驟,請參閱「建立授權檢視表」教學課程。
主控台
前往「BigQuery」頁面
在查詢編輯器中,輸入要用來建立授權檢視區塊的查詢。
依序點按「儲存」>「儲存檢視畫面」。
在「Save view」(儲存檢視表) 對話方塊中,執行下列操作:
在「Project」(專案) 部分,輸入要儲存檢視表的專案。
在「Dataset」(資料集) 部分,輸入要儲存檢視表的資料集。這個資料集必須與來源查詢中使用的資料集不同。
在「Table」(資料表) 部分,輸入檢視表的名稱。
按一下 [儲存]。
將必要權限授予可使用授權檢視畫面的使用者。
在「Explorer」窗格中,選取來源查詢中使用的資料集。
在「詳細資料」窗格中,依序點選「共用」>「授權檢視」。
在「Authorized views」(已授權檢視表) 窗格中,為「Authorized 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」窗格中展開專案並選取資料集。
依序按一下「共用」>「授權檢視」。
按一下
即可移除授權。按一下 [關閉]。
bq
如要移除檢視區塊的授權,請使用 bq rm
指令。輸入要移除授權的檢視表 table_id
。
bq rm \ project_id:dataset:table_id
API
呼叫 tables.delete
方法,並使用 projectID
、datasetID
和 tableID
屬性移除資料集的授權檢視區塊。詳情請參閱「資料表」。
配額與限制
- 授權檢視表會受到資料集限制。詳情請參閱「資料集限制」一節。
- 移除授權檢視後,系統最多可能需要 24 小時,才會移除所有檢視參照。為避免發生錯誤,請等待 24 小時再重新使用已移除檢視區塊的名稱,或是為檢視區塊建立專屬名稱。
進階主題
以下各節說明授權檢視區塊的進階使用方法。
結合資料列層級安全防護機制與授權檢視畫面
系統會根據基礎來源資料表的資料列層級存取政策,篩選邏輯檢視或具體化檢視中顯示的資料。
如要瞭解資料列層級安全防護機制與具體化檢視表的互動方式,請參閱將資料列層級的安全性與其他 BigQuery 功能搭配使用。
結合資料欄層級安全防護機制與授權檢視畫面
資料欄層級安全性對檢視區的影響,與檢視區是否為授權檢視區無關。
如要詳細瞭解權限的套用方式,請參閱「查詢檢視區塊」一文,瞭解資料欄層級的安全性。
使用 BigQuery 共用功能和授權檢視表
BigQuery sharing (舊稱 Analytics Hub) 是資料交換平台,提供下列功能:
- 讓您跨機構疆界大規模分享資料和洞察資訊。
- 採用完善的安全性和隱私權架構。
- 支援將 BigQuery 資料集 (稱為共用資料集) 及其相關聯的授權檢視表和授權資料集發布給一組訂閱者。
連結的資料集是唯讀 BigQuery 資料集,做為共用資料集的指標或參照。訂閱「共用」清單會在專案中建立連結的資料集,但不會複製資料集,因此訂閱者可以讀取資料,但無法在其中新增或更新物件。
系統不支援參照連結資料集中資料表的具體化檢視表。
詳情請參閱「共用簡介」。
後續步驟
- 如需建立授權檢視表的教學課程,請參閱建立授權檢視表。
- 如要建立邏輯檢視區塊,請參閱「建立邏輯檢視區塊」。
- 如要建立支援其他類型存取權控管的具體化檢視表,請參閱「建立具體化檢視表」。
- 如要取得檢視表中繼資料,請參閱取得檢視表相關資訊。
- 如要管理檢視畫面,請參閱「管理檢視畫面」。