本文說明如何在 Dataform 中執行下列操作:
事前準備
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
個別工作流程設定。
- Dataform 需要讀取和寫入權限的專案,請授予 BigQuery 資料編輯者角色。這些專案通常包括代管 Dataform 存放區的專案。
- 在 Dataform 需要唯讀存取權的專案中,授予 BigQuery 資料檢視者角色。
- Dataform 存放區代管專案的 BigQuery 工作使用者。
- BigQuery 資料擁有者 (如要查詢 BigQuery 資料集)。
- 資料欄層級存取權控管的 BigQuery 角色:如果您想使用 BigQuery 政策標記。
無論 VPC Service Controls 為何,只要服務帳戶獲得必要角色,就可能存取服務帳戶所屬專案中的 BigQuery 或 Secret Manager。
詳情請參閱「設定 VPC Service Controls」。
只要具備
dataform.repositories.create
IAM 權限,任何使用者都能使用預設的 Dataform 服務帳戶和該服務帳戶的所有權限執行程式碼。詳情請參閱「Dataform 權限的安全考量」。
- 如要使用附加其他 Google 帳戶使用者憑證的工作流程設定進行修改,您必須將自己的 Google 帳戶使用者憑證附加至工作流程設定,或是將工作流程設定變更為透過服務帳戶進行驗證。
- 如果工作流程設定參照的發行設定已附加其他 Google 帳戶使用者的憑證,您就無法修改該發行設定的彙整結果。
您無法將工作流程設定為透過 Google 帳戶使用者憑證進行驗證,並參照排定時間的發布設定。這項限制會造成下列影響:
- 如果工作流程設定參照的發布設定設為使用 Google 帳戶使用者憑證進行驗證,您就無法更新發布設定,改為使用時間表。
- 您無法建立工作流程設定,透過 Google 帳戶使用者憑證進行驗證,並指向具有時間表的發布設定。
- 您無法建立或更新工作流程設定,以使用 Google 帳戶使用者憑證,並指向排定時間的發布設定。
前往 Google Cloud 控制台的「Dataform」頁面。
選取或建立存放區。
前往 Google Cloud 控制台的「IAM」頁面。
點選「授予存取權」。
在「新主體」欄位,輸入服務帳戶 ID 或使用者的 Google 帳戶電子郵件地址 (預覽版)。
在「Select a role」(選取角色) 清單中,選取「BigQuery Job User」(BigQuery 工作使用者) 角色。
點選「新增其他角色」,然後在「請選擇角色」清單中,選取「BigQuery 資料編輯者」角色。
點選「新增其他角色」,然後在「請選擇角色」清單中,選取「BigQuery 資料檢視者」角色。
按一下 [儲存]。
在 Google Cloud 控制台中,依序前往「IAM」>「服務帳戶」。
選取專案。
在「專案『PROJECT_NAME』的服務帳戶」頁面,選取自訂 Dataform 服務帳戶。
前往「權限」,然後點按「授予存取權」。
在「新增主體」欄位中,輸入預設 Dataform 服務帳戶 ID。
預設 Dataform 服務帳戶 ID 的格式如下:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
在「Select a role」(選取角色) 清單中,選取「Service Account Token Creator」(服務帳戶憑證建立者) 角色。
按一下 [儲存]。
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.config.get
dataform.config.update
dataform.locations.get
dataform.locations.list
dataform.releaseConfigs.create
dataform.releaseConfigs.delete
dataform.releaseConfigs.get
dataform.releaseConfigs.list
dataform.releaseConfigs.update
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.
workflowConfigs. create dataform.
workflowConfigs. delete dataform.workflowConfigs.get
dataform.workflowConfigs.list
dataform.
workflowConfigs. update dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.locations.get
dataform.locations.list
- BigQuery 管理員 (
roles/bigquery.admin
) - BigQuery 作業使用者 (
roles/bigquery.jobUser
) - BigQuery Studio 使用者 (
roles/bigquery.studioUser
) - BigQuery 使用者 (
roles/bigquery.user
) - 程式碼建立工具 (
roles/dataform.codeCreator
) - 程式碼編輯器 (
roles/dataform.codeEditor
) - 程式碼擁有者 (
roles/dataform.codeOwner
) - Colab Enterprise 使用者 (
roles/aiplatform.colabEnterpriseUser
) - Dataform 管理員 (
roles/dataform.admin
) 前往「IAM & Admin」(IAM 與管理) >「Roles」(角色) 頁面。
在「Filter」(篩選器) 欄位中,選取「Used in」(使用於),輸入
Dataform
,然後按 Enter 鍵。按一下列出的任一角色,即可在右側窗格中查看該角色的權限。
舉例來說,Dataform 管理員角色具備所有 Dataform 資源的完整存取權。
在終端機中,傳遞 Dataform API
repositories.setIamPolicy
要求和存取政策。在政策中,以以下格式將使用者、群組、網域或服務帳戶繫結至所選角色:
{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "TYPE:IDENTIFIER", ] }, ], } }
更改下列內容:
ROLE
:您要在存放區授予的 Dataform IAM 角色。TYPE
:user
、group
、domain
或serviceAccount
。IDENTIFIER
:要授予角色的使用者、群組、網域或服務帳戶。
在 IAM 頁面中,請確保所有使用者都能透過具有
dataform.repositories.list
權限的 Dataform 角色,查看完整的 Dataform 存放區清單。在 IAM 中,請確保只有需要完整存取所有 Dataform 存放區的使用者,才能在所有存放區中獲得 Dataform 管理員角色。
在終端機中,傳遞 Dataform API
repositories.setIamPolicy
要求和存取政策。在政策中,以以下格式將
allAuthenticatedUsers
主體繫結至所選角色:{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }
將
ROLE
替換為您要授予所有已驗證使用者的 Dataform IAM 角色。前往 Google Cloud 控制台的「Dataform」頁面。
選取存放區,然後選取工作區。
在「檔案」窗格中,展開
definitions/
目錄。選取要授予存取權的資料表或檢視區塊的
.sqlx
定義檔案。在檔案中輸入下列程式碼片段:
post_operations { GRANT "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST" }
更改下列內容:
ROLE_LIST:要授予的 BigQuery 角色或以半形逗號分隔的 BigQuery 角色清單。
RESOURCE_TYPE:
TABLE
或VIEW
。USER_LIST:以逗號分隔的清單,當中列有獲派角色的使用者。
如需有效格式清單,請參閱「user_list」。
選用:按一下「格式」。
執行資料表或檢視畫面。
如果您在累加資料表上授予存取權,請在第一次執行後,從資料表定義檔案中移除
GRANT
陳述式。前往 Google Cloud 控制台的「Dataform」頁面。
選取存放區,然後選取工作區。
在「檔案」窗格中,展開
definitions/
目錄。選取要撤銷存取權的資料表或檢視區塊的
.sqlx
定義檔案。在
post_operations
區塊中,輸入下列REVOKE
陳述式:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} FROM "USER_LIST"
更改下列內容:
- ROLE_LIST:要撤銷的 BigQuery 角色或以半形逗號分隔的 BigQuery 角色清單。
- RESOURCE_TYPE:
TABLE
或VIEW
。 - USER_LIST:以逗號分隔的使用者清單,這些使用者的角色已遭撤銷。如需有效格式清單,請參閱「user_list」。
如要撤銷檔案中
GRANT
陳述式授予的存取權,請將GRANT
陳述式替換為REVOKE
陳述式。選用:按一下「格式」。
執行資料表或檢視畫面。
如果撤銷增量資料表的存取權,請在第一次執行後,從資料表定義檔案中移除
REVOKE
陳述式。前往 Google Cloud 控制台的「Dataform」頁面。
選取存放區,然後選取工作區。
在「Files」(檔案) 窗格中,點按
definitions/
旁的「更多」選單。
點選「建立檔案」。
在「Add a file path」(新增檔案路徑) 欄位中,輸入檔案名稱,然後在
definitions/
後方加上.sqlx
。例如:definitions/table-access.sqlx
。檔名只能包含數字、字母、連字號和底線。
點選「建立檔案」。
在「檔案」窗格中,展開
definitions/
目錄,然後選取新建立的檔案。在檔案中輸入下列程式碼片段:
config { type: "operations" } GRANT "ROLE_LIST" ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST" REVOKE "ROLE_LIST" ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"
更改下列內容:
- ROLE_LIST:要授予或撤銷的 BigQuery 角色或以半形逗號分隔的 BigQuery 角色清單。
- RESOURCE_TYPE:
TABLE
或VIEW
。 - RESOURCE_NAME:資料表或檢視區塊的名稱。
- USER_LIST:以逗號分隔的使用者清單,角色會授予或撤銷這些使用者的權限。如需有效格式清單,請參閱「user_list」。
視需要加入
GRANT
和REVOKE
陳述式。如要撤銷檔案中
GRANT
陳述式授予的存取權,請將GRANT
陳述式替換為REVOKE
陳述式。移除
GRANT
陳述式而不新增REVOKE
陳述式,不會撤銷存取權。
選用:按一下「格式」。
每次更新後都執行檔案。
- 如果您在增量資料表上授予或撤銷存取權,請在第一次執行陳述式後,從檔案中移除
GRANT
或REVOKE
陳述式。
- 如果您在增量資料表上授予或撤銷存取權,請在第一次執行陳述式後,從檔案中移除
- 如要進一步瞭解 IAM,請參閱 IAM 總覽。
- 如要進一步瞭解如何管理資源存取權,請參閱「管理專案、資料夾和機構的存取權」一文。
- 如要進一步瞭解員工身分聯盟的重要概念,請參閱「員工身分聯盟」。
- 如要進一步瞭解 BigQuery IAM 角色和權限,請參閱「使用 IAM 控管存取權」。
- 如要進一步瞭解如何授予 BigQuery 資料集精細權限,請參閱「控管資料集存取權」。
授予 Dataform 必要存取權
本節說明如何授予 Dataform 服務帳戶身分與存取權管理 (IAM) 角色,以便在 BigQuery 中執行工作流程。
關於 Dataform 中的服務帳戶
建立第一個 Dataform 存放區時,Dataform 會自動產生預設服務帳戶。Dataform 會使用預設服務帳戶代表您與 BigQuery 互動。根據預設,系統不會授予任何 BigQuery 角色或權限給預設的 Dataform 服務帳戶。您必須授予預設 Dataform 服務帳戶必要存取權。
預設 Dataform 服務帳戶 ID 的格式如下:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
將 PROJECT_NUMBER 替換為專案的數字 ID。Google Cloud 您可以在 Google Cloud 控制台資訊主頁中找到專案 IDGoogle Cloud 。詳情請參閱「識別專案」。
除了預設的 Dataform 服務帳戶,您也可以使用其他服務帳戶代表您執行工作流程。您可以透過下列方式設定自訂服務帳戶:
建立 Dataform 存放區或工作流程設定時,您可以選取與您有權存取的 Google Cloud 專案相關聯的任何服務帳戶。您必須為與 Dataform 資源相關聯的所有服務帳戶設定必要權限。
與 Dataform 存放區相關聯的自訂服務帳戶,只會用於從該存放區執行工作流程。所有其他存放區作業仍由預設的 Dataform 服務帳戶執行。
Dataform 服務帳戶和 Google 帳戶的必要角色
用於在 Dataform 中驗證的預設和自訂服務帳戶,以及 Google 帳戶使用者憑證 (搶先版),必須具備下列 BigQuery IAM 角色,才能在 BigQuery 中執行工作流程:
此外,您還需要將服務帳戶憑證建立者角色 (roles/iam.serviceAccountTokenCreator
) 授予預設 Dataform 服務帳戶,以便存取要在 Dataform 中使用的任何自訂服務帳戶。
如果您已啟用嚴格的「以服務帳戶身分執行」模式 (搶先版),並為工作流程設定設定「頻率」,請在工作流程設定的有效服務帳戶中,將服務帳戶使用者角色 (roles/iam.serviceAccountUser
) 授予預設的 Dataform 服務帳戶。
Dataform 服務帳戶和 Google 帳戶的安全性考量
將 Dataform 服務帳戶或使用者 Google 帳戶 (搶先版) 授予所需角色時,請注意下列安全性考量事項:
如要限制使用者或服務帳戶在 BigQuery 中讀取或寫入的資料,您可以對選取的 BigQuery 資料集或資料表授予精細的 BigQuery IAM 權限。詳情請參閱「控管資料集存取權」和「控管資料表和檢視區塊的存取權」。
為防止使用者在登入其他使用者的 Google 帳戶後執行操作,系統會強制執行下列限制:
將必要的 BigQuery 角色授予 Dataform 中使用的服務帳戶或 Google 帳戶
如要將必要的 BigQuery IAM 角色授予預設的 Dataform 服務帳戶、要在 Dataform 中使用的自訂服務帳戶,或要用於在 Dataform 中驗證的使用者 Google 帳戶 (搶先版),請按照下列步驟操作:
授予自訂服務帳戶權限,允許建立權杖
如要在 Dataform 中使用自訂服務帳戶,預設的 Dataform 服務帳戶必須能夠存取自訂服務帳戶。如要授予這項存取權,請將預設 Dataform 服務帳戶新增為自訂服務帳戶的主體,並授予服務帳戶符記建立者角色。
如要授予預設 Dataform 服務帳戶自訂服務帳戶的存取權,請按照下列步驟操作:
使用 IAM 控管 Dataform 的存取權
本節說明 Dataform 的存取權控制選項,並介紹如何查看及授予 Dataform 角色。Dataform 使用 Identity and Access Management (IAM) 控管存取權。如要進一步瞭解 IAM 中的角色和權限,請參閱「瞭解角色和權限」。
預先定義的 Dataform 角色
下表列出可存取 Dataform 資源的預先定義角色:
Role | Permissions |
---|---|
Dataform Admin( Full access to all Dataform resources. |
|
Code Commenter Beta( Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources. |
|
Code Creator( Access only to private and shared code resources. The permissions in the Code Creator let you create and list code in Dataform, and access only the code that you created and code that was explicitly shared with you. |
|
Code Editor( Edit access code resources. |
|
Code Owner( Full access to code resources. |
|
Code Viewer( Read-only access to all code resources. |
|
Dataform Editor( Edit access to Workspaces and Read-only access to Repositories. |
|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
自訂 Dataform 角色
自訂角色可包含您指定的任何權限。您可以建立自訂角色,並授予執行特定管理作業的權限,例如建立開發工作區,或在開發工作區中建立檔案和目錄。如要建立自訂角色,請參閱「建立及管理自訂角色」。
Dataform 權限的安全考量
只要使用者擁有 dataform.repositories.create
權限,就能使用預設的 Dataform 服務帳戶,以及該服務帳戶的所有權限,在 BigQuery 中執行程式碼。包括執行 Dataform 工作流程。
下列 IAM 角色具備 dataform.repositories.create
權限:
如要限制使用者或服務帳戶在 BigQuery 中讀取或寫入的資料,您可以對選取的 BigQuery 資料集或資料表授予精細的 BigQuery IAM 權限。詳情請參閱「控管資料集存取權」和「控管資料表和檢視區塊的存取權」。
如要進一步瞭解預設 Dataform 服務帳戶,以及該帳戶所需角色和權限,請參閱授予 Dataform 必要存取權。
查看 Dataform 角色
在 Google Cloud 控制台中,執行下列步驟:
如要進一步瞭解如何授予專案角色,請參閱授予角色。 您可以透過這種方式授予預先定義或自訂角色。
控管個別存放區的存取權
如要使用精細權限控管 Dataform 的存取權,可以透過 Dataform API repositories.setIamPolicy
要求,在個別存放區設定 Dataform IAM 角色。
如要為個別 Dataform 存放區設定 Dataform IAM 角色,請按照下列步驟操作:
下列指令會傳遞 repositories.setIamPolicy
Dataform API 要求,將 sales
存放區的 Dataform 編輯者角色授予單一使用者:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.editor", "members": ["user:sasha@examplepetstore.com"]}] }}' "https://dataform.googleapis.com/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
授予存放區公開存取權
如要授予 Dataform 存放區的公開存取權,請將存放區的 IAM 角色授予 allAuthenticatedUsers
主體。
將 IAM 角色指派給 allAuthenticatedUsers
主體後,透過 Google 帳戶完成驗證的服務帳戶和所有使用者都會獲得該角色。這包括未連結至 Google Workspace 帳戶或 Cloud Identity 網域的帳戶,例如個人 Gmail 帳戶。未通過驗證的使用者 (如匿名訪客) 不會具有這個識別碼。詳情請參閱「所有已驗證的使用者」。
舉例來說,如果您在 sales
存放區將 Dataform 檢視者角色授予 allAuthenticatedUsers
,那麼所有透過 Google 帳戶完成驗證的服務帳戶和使用者,都能以唯讀模式存取所有 sales
程式碼資源。
如要授予 Dataform 存放區的公開存取權,請按照下列步驟操作:
下列指令會傳遞 repositories.setIamPolicy
Dataform API 要求,將 sales
存放區的 Dataform 檢視者角色授予 allAuthenticatedUsers
:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.viewer", "members": ["allAuthenticatedUsers"]}] }}' "https://dataform.googleapis.com/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
禁止公開存取存放區
如要確保任何 Dataform 存放區都不會授予公眾存取權,您可以限制專案中的 allAuthenticatedUsers
主體。
如要在專案中限制 allAuthenticatedUsers
,您可以設定 iam.allowedPolicyMemberDomains
政策,並從 allowed_values
清單中移除 allAuthenticatedUsers
。
在政策中限制 allAuthenticatedUsers
時,專案中的任何 IAM 政策都無法使用 allAuthenticatedUsers
主體,因此無法授予所有資源 (包括 Dataform 存放區) 的公開存取權。iam.allowedPolicyMemberDomains
如要進一步瞭解 iam.allowedPolicyMemberDomains
政策,以及如何設定這項政策,請參閱「依照網域設定身分限制」。
Dataform 中的員工身分聯盟
員工身分聯盟可讓您使用外部識別資訊提供者 (IdP) 驗證使用者身分並授權,讓他們透過 IAM 存取 Google Cloud 服務。
Dataform 支援員工身分聯盟,且沒有已知限制。
使用 IAM 控管個別資料表的存取權
本節說明如何為個別 Dataform 資料表和檢視區塊授予及撤銷 BigQuery IAM 角色。
Dataform 執行資料表或檢視區塊時,會在 BigQuery 中建立資源。在 Dataform 中開發時,您可以將 BigQuery 角色授予個別資料表和檢視區塊,以便在執行後控管 BigQuery 中的存取權。
如要進一步瞭解如何授予及撤銷資源存取權,請參閱「授予資源存取權」。
授予資料表或檢視表的 BigQuery 角色
如要將 BigQuery 角色授予資料表或檢視區塊,請在所選資料表或檢視區塊的 .sqlx
定義檔中,新增含有 GRANT
DCL 陳述式的 post_operations
區塊。
如要將 BigQuery 角色授予所選資料表或檢視畫面,請按照下列步驟操作:
下列程式碼範例顯示授予使用者資料表的 BigQuery 檢視者角色:
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
從資料表或檢視區塊撤銷 BigQuery 角色
如要從資料表或檢視區塊撤銷 BigQuery 角色,請在所選資料表或檢視區塊的 .sqlx
定義檔中,新增含有 REVOKE
DCL 陳述式的 post_operations
區塊。
如要從所選資料表或檢視區塊撤銷 BigQuery 角色,請按照下列步驟操作:
下列程式碼範例顯示從資料表撤銷使用者 BigQuery 檢視者角色:
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
集中管理資料表和檢視的 BigQuery 角色
如要從單一位置控管 BigQuery 對個別資料表和檢視區塊的存取權,您可以建立專屬的 type: "operations"
檔案,並使用 GRANT
和 REVOKE
DCL 陳述式。
如要透過單一type: "operations"
檔案管理 BigQuery 資料表存取權,請按照下列步驟操作: