在本教學課程中,您會在 BigQuery 中建立授權檢視表,供資料分析師使用。授權檢視表可讓您與特定使用者和群組分享查詢結果,無須授予他們基礎來源資料的存取權。檢視畫面會取得來源資料的存取權,而非使用者或群組。您也可以使用檢視表的 SQL 查詢,從查詢結果中排除資料欄和欄位。
除了使用已授權檢視表,您也可以在來源資料中設定資料欄層級的存取權控管,然後讓使用者存取查詢受控資料的檢視表。如要進一步瞭解資料欄層級存取權控管,請參閱「資料欄層級存取控管機制簡介」。
如果您有多個已授權檢視表存取同一個來源資料集,可以授權內含檢視表的資料集,不必授權個別檢視表。
目標
- 建立資料集來存放來源資料。
- 執行查詢,將資料載入來源資料集中的目的地資料表。
- 建立資料集來存放授權檢視表。
- 從 SQL 查詢建立授權檢視表,限制資料分析師可在查詢結果中查看的資料欄。
- 授予資料分析師執行查詢工作的權限。
- 授予資料分析師對內含授權檢視表的資料集存取權。
- 授予已授權檢視表來源資料集的存取權。
費用
在本文件中,您會使用下列 Google Cloud的計費元件:
您可以使用 Pricing Calculator,根據預測用量估算費用。
完成本文所述工作後,您可以刪除建立的資源,避免繼續計費,詳情請參閱「清除所用資源」。
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - 請確認您具備必要權限,可執行本文件中的工作。
前往「BigQuery」頁面
點選左側窗格中的 「Explorer」:

如果沒有看到左側窗格,請按一下「展開左側窗格」圖示 開啟窗格。
在「Explorer」窗格中,找到要建立資料集的專案,然後依序點選旁邊的 「View actions」(查看動作)>「Create dataset」(建立資料集)。
在「建立資料集」頁面中,執行下列操作:
在「Dataset ID」(資料集 ID) 中輸入
github_source_data。確認「位置類型」已選取「多區域」。
如果是「多區域」,請選擇「美國」或「歐盟」。在本教學課程中建立的所有資源都應位於同一個多區域位置。
點選「建立資料集」。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE SCHEMA github_source_data;
按一下「執行」。
前往「BigQuery」頁面
在查詢編輯器中輸入下列查詢:
SELECT commit, author, committer, repo_name FROM `bigquery-public-data.github_repos.commits` LIMIT 1000;按一下 [More] (更多) 並選取 [Query settings] (查詢設定)。
在「Destination」(目的地) 部分,選取「Set a destination table for query results」(為查詢結果設定目標資料表)。
在「Dataset」(資料集) 中輸入
PROJECT_ID.github_source_data。將
PROJECT_ID替換為專案 ID。在「Table Id」中輸入
github_contributors。按一下 [儲存]。
按一下「執行」。
查詢完成後,在「Explorer」窗格中,依序點選「Datasets」和
github_source_data資料集。依序點選「總覽」>「資料表」,然後點選
github_contributors資料表。如要確認資料已寫入資料表,請按一下「預覽」分頁標籤。
前往「BigQuery」頁面
點選左側窗格中的 「Explorer」:

在「Explorer」窗格中,選取要建立資料集的專案。
展開「View actions」(查看動作) 選項,然後點選「Create dataset」(建立資料集)。
在「建立資料集」頁面中,執行下列操作:
在「Dataset ID」(資料集 ID) 中輸入
shared_views。確認「位置類型」已選取「多區域」。
如果是「多區域」,請選擇「美國」或「歐盟」。在本教學課程中建立的所有資源都應位於同一個多區域位置。
點選「建立資料集」。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE SCHEMA shared_views;
按一下「執行」。
前往「BigQuery」頁面
在查詢編輯器中輸入下列查詢。
SELECT commit, author.name AS author, committer.name AS committer, repo_name FROM `PROJECT_ID.github_source_data.github_contributors`;
將
PROJECT_ID替換為專案 ID。依序點按「儲存」>「儲存檢視畫面」。
在「Save view」(儲存檢視表) 對話方塊中,執行下列操作:
在「Project」(專案) 部分,確認已選取專案。
在「Dataset」(資料集) 中輸入
shared_views。在「Table」(資料表) 中輸入
github_analyst_view。按一下 [儲存]。
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE VIEW shared_views.github_analyst_view AS ( SELECT commit, author.name AS author, committer.name AS committer, repo_name FROM `PROJECT_ID.github_source_data.github_contributors` );
將
PROJECT_ID替換為您的專案 ID。按一下「執行」。
前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。
確認已在專案選取器中選取專案。
按一下「 Grant access」(授予存取權)。
在「授予存取權」對話方塊中,執行下列操作:
在「New principals」(新增主體) 欄位中,輸入包含資料分析師的群組。例如:
data_analysts@example.com。在「Select a role」(請選擇角色) 欄位中,搜尋並選取「BigQuery User」(BigQuery 使用者)角色。
按一下 [儲存]。
前往「BigQuery」頁面
點選左側窗格中的 「Explorer」:

在「Explorer」窗格中,按一下「Datasets」,然後選取
shared_views資料集,開啟「Details」分頁。依序點選「共用」「權限」。
在「分享權限」窗格中,按一下「新增主體」。
在「New principals」(新增主體) 部分,輸入包含資料分析師的群組,例如
data_analysts@example.com。按一下「選取角色」,然後依序選取「BigQuery」>「BigQuery 資料檢視者」。
按一下 [儲存]。
按一下 [關閉]。
前往「BigQuery」頁面
點選左側窗格中的 「Explorer」:

在「Explorer」窗格中,按一下「Datasets」,然後選取
github_source_data資料集,開啟「Details」分頁。依序按一下「共用」>「授權檢視」。
在「Authorized views」(授權檢視表) 窗格中,為「Authorized view」(授權檢視表) 輸入
PROJECT_ID.shared_views.github_analyst_view。將 PROJECT_ID 替換為專案 ID。
按一下「新增授權」。
前往「BigQuery」頁面
在查詢編輯器中輸入下列陳述式:
SELECT * FROM `
PROJECT_ID.shared_views.github_analyst_view`;將
PROJECT_ID替換為專案 ID。按一下「執行」。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- 如要瞭解 BigQuery 中的存取權控管,請參閱 BigQuery 身分與存取權管理角色和權限。
- 如要瞭解 BigQuery 檢視表,請參閱「邏輯檢視表簡介」。
- 如要進一步瞭解授權檢視表,請參閱授權檢視表。
- 如要瞭解存取權控管的基本概念,請參閱「IAM 總覽」。
- 如要瞭解如何管理存取權控管,請參閱「管理政策」。
建立資料集來儲存來源資料
您一開始可以建立儲存來源資料的資料集。
如要建立來源資料集,請選擇下列其中一個選項:
控制台
SQL
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
建立資料表並載入來源資料
建立來源資料集後,請將 SQL 查詢結果儲存至目的地資料表,藉此填入資料表。查詢會從 GitHub 公開資料集擷取資料。
控制台
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
建立資料集來儲存授權檢視表
建立來源資料集之後,您會建立新資料集來儲存已授權檢視表,並與資料分析師分享。在後續步驟中,您會授權檢視表存取來源資料集中的資料。資料分析師可以存取授權檢視表,但無法直接存取來源資料。
授權檢視區塊應在與來源資料不同的資料集中建立。 這樣一來,資料擁有者就能授權使用者存取授權 view,不必同時授予基礎資料的存取權。來源資料集和授權檢視區塊資料集必須位於相同的單一地區位置。
如要建立儲存檢視表的資料集,請選擇下列其中一個選項:
控制台
SQL
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
在新資料集中建立授權檢視表
您可在新資料集中建立您想要授權的視圖。這是您與資料分析師分享的視圖。這個檢視區塊是使用 SQL 查詢建立,可排除您不希望資料分析師看到的資料欄。
github_contributors 來源資料表包含兩個 RECORD 類型的欄位:author 和 committer。在本教學課程中,授權檢視畫面會排除所有作者資料 (作者姓名除外),以及所有提交者資料 (提交者姓名除外)。
如要在新資料集中建立檢視表,請選擇下列任一選項:
控制台
SQL
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
授予資料分析師執行查詢工作的權限
資料分析師需要 bigquery.jobs.create 權限才能執行查詢工作,且必須獲得檢視表的存取權,才能查詢檢視表。在本節中,您將 bigquery.user 角色授予資料分析師。bigquery.user 角色具備 bigquery.jobs.create 權限。在後續步驟中,您會授予資料分析師存取檢視表的權限。
如要將資料分析師群組指派給專案層級的 bigquery.user 角色,請按照下列步驟操作:
授予資料分析師查詢已授權檢視表的權限
如要讓資料分析師查詢檢視表,您必須在資料集層級或檢視表層級授予 bigquery.dataViewer 角色。在資料集層級授予這個角色,分析師就能存取資料集中的所有資料表和檢視表。由於本教學課程中建立的資料集只包含一個已授權檢視表,因此您會在資料集層級授予存取權。如果您需要授予存取權給一系列已授權的檢視表,建議改用已授權的資料集。
您先前授予資料分析師的 bigquery.user 角色,可提供建立查詢工作所需的權限。不過,他們必須同時具備已授權檢視表或內有該檢視表資料集的 bigquery.dataViewer 存取權,才能成功查詢檢視表。
如要授予資料分析師對內含授權檢視表的資料集 bigquery.dataViewer 存取權,請按照下列步驟操作:
控制台
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
授權視圖存取來源資料集
為內含授權檢視表的資料集建立存取權控制後,您可授予授權檢視表來源資料集的存取權。這項授權會授予該檢視表對來源資料的存取權,而非授予資料分析師群組存取權。
如要授權檢視表存取來源資料,請選擇下列其中一個選項:
控制台
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
驗證設定
設定完成時,資料分析師群組的成員 (例如 data_analysts) 可以透過查詢檢視表來驗證設定。
如要驗證設定,資料分析師應執行下列查詢:
查詢結果類似下方。結果中只會顯示作者名稱和提交者名稱。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
完整原始碼
以下是供您參考的完整教學課程原始碼。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
清除所用資源
為避免因為本教學課程所用資源,導致系統向 Google Cloud 收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。
刪除專案
控制台
gcloud
刪除個別資源
或者,如要移除本教學課程中使用的個別資源,請執行下列操作:
您建立的資源用於本教學課程,因此刪除這些資源不需要額外權限。