遮蓋資料欄資料
本文說明如何實作資料遮蓋,選擇性遮蓋機密資料。只要實作資料遮罩,就能為不同使用者群組提供不同層級的瀏覽權限。如需一般資訊,請參閱「資料遮蓋簡介」。
如要實作資料遮蓋,請在資料欄中新增資料政策。如要為資料欄新增資料遮蓋政策,請完成下列步驟:
- 建立分類,並加入至少一個政策標記。
- 選用:針對您建立的一或多個政策標記,將 Data Catalog 精細讀取者角色授予一或多個主體。
- 為政策標記建立最多三項資料政策,將遮蓋規則和主體 (代表使用者或群組) 對應至該標記。
- 在資料欄上設定政策標記。這會將與政策標記相關聯的資料政策對應至所選資料欄。
- 將 BigQuery Masked Reader 角色指派給應有遮蓋資料存取權的使用者。最佳做法是在資料政策層級指派 BigQuery 遮蓋讀取者角色。在專案層級或更高層級指派角色,會授予使用者專案下所有資料政策的權限,這可能會導致權限過多而引發問題。
您可以使用 Google Cloud 控制台或 BigQuery Data Policy API 處理資料政策。
完成這些步驟後,使用者對資料欄執行查詢時,會根據所屬群組和獲派角色,取得未遮蓋資料、遮蓋資料,或收到存取遭拒錯誤。詳情請參閱「遮蓋讀取者和精細讀取者角色的互動方式」。
或者,您也可以直接對資料欄套用資料政策。詳情請參閱「直接在資料欄上使用資料政策遮蓋資料」。
使用政策標記遮蓋資料
使用政策標記,選擇性遮蓋機密資料。
事前準備
- 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
-
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 Data Catalog and BigQuery Data Policy APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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 Data Catalog and BigQuery Data Policy APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.- 新專案會自動啟用 BigQuery,但您可能需要在現有專案中啟用。
啟用 BigQuery API (如果尚未啟用)。
啟用 API 所需的角色
您必須具備
serviceusage.services.enable權限,才能啟用 API。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「Service Usage 管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。 - 如果您建立的資料政策參照自訂遮蓋常式,請建立相關聯的遮蓋 UDF,以便在後續步驟中使用。
可建立分類
建立分類的使用者或服務帳戶,必須具備 Data Catalog 政策標記管理員角色。
控制台
- 前往 Google Cloud 控制台的「Policy tag taxonomies」(政策標記分類) 頁面。
- 按一下「Create taxonomy」(建立分類)。
在「New taxonomy」(新增分類) 頁面中:
- 在「Taxonomy name」(分類名稱) 中,輸入要建立的分類名稱。
- 在「Description」(說明) 部分輸入說明。
- 如有需要,請變更「Project」(專案) 下方列出的專案。
- 如有需要,請變更「位置」下方列出的位置。
- 在「政策標記」下方,輸入政策標記名稱和說明。
- 如要為政策標記新增子政策標記,請按一下「Add subtag」(新增子標記)。
- 如要新增與其他政策標記同層級的新政策標記,請按一下「+ Add policy tag」(+ 新增政策標記)。
- 視分類需要,繼續新增政策標記和子政策標記。
- 為階層建立政策標記後,按一下「Create」(建立)。
API
如要使用現有的分類,請呼叫 taxonomies.import,取代下列程序的前兩個步驟。
- 呼叫
taxonomies.create建立分類。 - 呼叫
taxonomies.policyTags.create建立政策標記。
使用政策標記
如要進一步瞭解如何使用政策標記,例如如何查看或更新政策標記,請參閱「使用政策標記」。如需最佳做法,請參閱「在 BigQuery 中使用政策標記的最佳做法」。
建立資料政策
建立資料政策的使用者或服務帳戶必須具備 bigquery.dataPolicies.create、bigquery.dataPolicies.setIamPolicy 和 datacatalog.taxonomies.get 權限。
bigquery.dataPolicies.create 和 bigquery.dataPolicies.setIamPolicy 權限包含在 BigQuery 資料政策管理員、BigQuery 管理員和 BigQuery 資料擁有者角色中。Data Catalog 管理員和 Data Catalog 檢視者角色具備 datacatalog.taxonomies.get 權限。
如要自訂遮蓋,請授予使用者 BigQuery 管理員或 BigQuery 資料擁有者角色,確保他們具備常式和資料政策的必要權限。
一項政策標記最多可建立九項資料政策。其中一項政策會保留給資料欄層級存取控管設定。
控制台
- 前往 Google Cloud 控制台的「Policy tag taxonomies」(政策標記分類) 頁面。
- 按一下要開啟的分類名稱。
- 選取政策標記。
- 點按「管理資料政策」。
- 在「Data Policy Name」(資料政策名稱) 中,輸入資料政策的名稱。資料政策名稱在資料政策所在的專案中不得重複。
- 在「Masking Rule」(遮蓋規則),選擇預先定義的遮蓋規則或自訂遮蓋常式。如要選取自訂遮蓋常式,請確認您在專案層級具備
bigquery.routines.get和bigquery.routines.list權限。 - 在「Principal」(主體) 部分,輸入一或多個使用者或群組的名稱,您要授予這些使用者或群組對資料欄的遮蓋存取權。請注意,您在此輸入的所有使用者和群組都會獲得 BigQuery 遮蓋讀取者角色。
- 按一下「提交」。
API
呼叫
create方法。傳入符合下列規定的DataPolicy資源:dataPolicyType欄位設為DATA_MASKING_POLICY。dataMaskingPolicy欄位會識別要使用的資料遮蓋規則或常式。dataPolicyId欄位會提供資料政策的名稱,該名稱在資料政策所在的專案中不得重複。
呼叫
setIamPolicy方法,並傳入Policy。Policy必須識別有權存取遮蓋資料的主體,並為role欄位指定roles/bigquerydatapolicy.maskedReader。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
在資料欄上設定政策標記
如要為資料欄設定資料政策,請將與資料政策相關聯的政策標記附加至資料欄。
設定政策標記的使用者或服務帳戶必須具備 datacatalog.taxonomies.get 和 bigquery.tables.setCategory 權限。Data Catalog 政策標記管理員和專案檢視者角色具備 datacatalog.taxonomies.get。BigQuery 管理員 (roles/bigquery.admin) 和 BigQuery 資料擁有者 (roles/bigquery.dataOwner) 角色包含 bigquery.tables.setCategory。
如要在Google Cloud 控制台中查看組織內所有專案的分類和政策標記,使用者必須具備 resourcemanager.organizations.get 權限,該權限包含在組織檢視者角色中。使用 API 或 bq 指令列工具時,則「不」需要這項權限。
控制台
使用Google Cloud 控制台修改結構定義,設定政策標記。
在 Google Cloud 控制台開啟「BigQuery」頁面。
在 BigQuery Explorer 中,找出並選取要更新的資料表。系統會開啟該資料表的結構定義。
點選「編輯結構定義」。
在「Current schema」(目前結構定義) 畫面中,選取目標資料欄,然後按一下「Add policy tag」(新增政策標記)。
在「Add a policy tag」(新增政策標記) 畫面中,找出並選取要套用至資料欄的政策標記。
按一下「選取」。畫面應會出現如下所示的內容:
按一下 [儲存]。
bq
將結構定義寫入本機檔案。
bq show --schema --format=prettyjson \ project-id:dataset.table > schema.json
其中:
- project-id 是您的專案 ID。
- dataset 是資料集的名稱,其中包含您要更新的資料表。
- table 是您要更新之資料表的名稱。
修改 schema.json,在資料欄上設定政策標記。針對
policyTags的names欄位值,請使用政策標記資源名稱。[ ... { "name": "ssn", "type": "STRING", "mode": "REQUIRED", "policyTags": { "names": ["projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id"] } }, ... ]
更新結構定義。
bq update \ project-id:dataset.table schema.json
API
如果是現有資料表,請呼叫 tables.patch;如果是新資料表,請呼叫 tables.insert。使用傳入的 Table 物件 schema 屬性,在結構定義定義中設定政策標記。請參閱指令列範例結構定義,瞭解如何設定政策標記。
使用現有資料表時,建議使用 tables.patch 方法,因為 tables.update 方法會取代整個資料表資源。
強制執行存取控管
為政策標記建立資料政策時,系統會自動強制執行存取控管。如果使用者具備「遮蓋讀取者」角色,則套用該政策標記的所有資料欄都會傳回遮蓋資料,以回應使用者的查詢。
如要停止強制執行存取控管,您必須先刪除與分類中政策標記相關聯的所有資料政策。詳情請參閱「強制執行存取控管」。
取得資料政策
如要取得資料政策的相關資訊,請按照下列步驟操作:
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
檢查資料政策的身分與存取權管理權限
如要取得資料政策的 IAM 政策,請按照下列步驟操作:
API
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
列出資料政策
請按照下列步驟列出資料政策:
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
更新資料政策
更新資料政策的使用者或服務帳戶必須具備 bigquery.dataPolicies.update 權限。如要更新與資料政策相關聯的政策標記,您也需要 datacatalog.taxonomies.get 權限。
如要更新與資料政策相關聯的主體,您必須具備 bigquery.dataPolicies.setIamPolicy 權限。
bigquery.dataPolicies.update 和 bigquery.dataPolicies.setIamPolicy 權限包含在 BigQuery 資料政策管理員、BigQuery 管理員和 BigQuery 資料擁有者角色中。Data Catalog 管理員和 Data Catalog 檢視者角色具備 datacatalog.taxonomies.get 權限。
控制台
- 前往 Google Cloud 控制台的「Policy tag taxonomies」(政策標記分類) 頁面。
- 按一下分類名稱即可開啟。
- 選取政策標記。
- 點按「管理資料政策」。
- 視需要變更遮蓋規則。
- 選用:新增或移除主體。
- 按一下「提交」。
API
如要變更資料遮蓋規則,請呼叫 patch 方法,並傳入 DataPolicy 資源,其中 dataMaskingPolicy 欄位已更新。
如要變更與資料政策相關聯的主體,請呼叫 setIamPolicy 方法,並傳入 Policy,更新有權存取遮蓋資料的主體。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
刪除資料政策
建立資料政策的使用者或服務帳戶必須具備 bigquery.dataPolicies.delete 權限。BigQuery 資料政策管理員、BigQuery 管理員和 BigQuery 資料擁有者角色都具備這項權限。
控制台
- 前往 Google Cloud 控制台的「Policy tag taxonomies」(政策標記分類) 頁面。
- 按一下要開啟的分類名稱。
- 選取政策標記。
- 按一下「管理資料政策」。
- 按一下要刪除的資料政策旁的 。
- 按一下「提交」。
- 按一下「確認」。
API
如要刪除資料政策,請呼叫 delete 方法。
Node.js
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Node.js 設定操作說明進行操作。詳情請參閱 BigQuery Node.js API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Python 設定操作說明進行操作。詳情請參閱 BigQuery Python API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
在試用這個範例之前,請先按照「使用用戶端程式庫的 BigQuery 快速入門導覽課程」中的 Java 設定操作說明進行操作。詳情請參閱 BigQuery Java API 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
對資料欄套用資料政策,遮蓋資料
除了建立政策標記,您也可以建立資料政策,並直接套用至資料欄。
您也可以透過資料治理標記實作資料遮罩。詳情請參閱「使用資料治理標記控管存取權」。
使用資料政策
您可以使用 BigQuery Data Policy API 建立、更新及刪除資料政策。如要直接對資料欄套用資料政策,您無法使用 Google Cloud 控制台中的「Policy tag taxonomies」(政策標記分類) 頁面。
如要使用資料政策,請使用 v2.projects.locations.datapolicies 資源。
建立資料政策
建立資料政策的使用者或服務帳戶必須具備 bigquery.dataPolicies.create 權限。
bigquery.dataPolicies.create 權限包含在 BigQuery 資料政策管理員、BigQuery 管理員和 BigQuery 資料擁有者角色中。Data Catalog 管理員和 Data Catalog 檢視者角色具備 datacatalog.taxonomies.get 權限。
如果您使用自訂遮蓋功能,請授予使用者 BigQuery 資料擁有者角色,確保他們具備常式和資料政策的必要權限。
API
如要建立資料政策,請呼叫 create 方法。傳入符合下列規定的 DataPolicy 資源:
dataPolicyType欄位設為DATA_MASKING_POLICY或RAW_DATA_ACCESS_POLICY。dataMaskingPolicy欄位會識別要使用的資料遮蓋規則或常式。dataPolicyId欄位會提供資料政策的名稱,該名稱在資料政策所在的專案中是唯一的。
SQL
如要建立遮蓋存取權的資料政策,請使用 CREATE DATA_POLICY 陳述式,並將 data_policy_type 的值設為 DATA_MASKING_POLICY:
CREATE[ OR REPLACE] DATA_POLICY [IF NOT EXISTS] `myproject.region-us.data_policy_name` OPTIONS ( data_policy_type="DATA_MASKING_POLICY", masking_expression="ALWAYS_NULL" );
如要建立具有原始存取權的資料政策,請使用 CREATE DATA_POLICY 陳述式,並將 data_policy_type 的值設為 RAW_DATA_ACCESS_POLICY:
CREATE[ OR REPLACE] DATA_POLICY [IF NOT EXISTS] `myproject.region-us.data_policy_name` OPTIONS (data_policy_type="RAW_DATA_ACCESS_POLICY");
如未指定 data_policy_type 的值,預設值為 RAW_DATA_ACCESS_POLICY。
CREATE[ OR REPLACE] DATA_POLICY [IF NOT EXISTS] myproject.region-us.data_policy_name;data_policy_type欄位設為DATA_MASKING_POLICY或RAW_DATA_ACCESS_POLICY。資料政策建立後,即無法更新這個欄位。masking_expression欄位會識別要使用的資料遮蓋規則或常式。
更新資料政策
更新資料政策的使用者或服務帳戶必須具備 bigquery.dataPolicies.update 權限。
bigquery.dataPolicies.update 權限包含在 BigQuery 資料政策管理員、BigQuery 管理員和 BigQuery 資料擁有者角色中。
API
如要變更資料遮蓋規則,請呼叫 patch 方法,並傳入 dataMaskingPolicy 欄位已更新的 DataPolicy 資源。
SQL
使用 ALTER DATA_POLICY 陳述式更新資料遮蓋規則。例如:
ALTER DATA_POLICY `myproject.region-us.data_policy_name` SET OPTIONS ( data_policy_type="DATA_MASKING_POLICY", masking_expression="SHA256" );
您也可以授予資料政策的精細存取控管權限。
授予資料政策精細存取控管權限,以及管理資料政策的權限不同。如要控管精細的存取控管權限,您必須更新資料政策的 grantees 欄位。如要控管資料政策的存取權,請使用 setIamPolicy 方法設定 IAM 角色。
如要設定資料政策的被授權者,請使用 v2 patch
方法。如要管理資料政策權限,請使用 v1 setIamPolicy 方法。
API
如要授予資料政策的精細存取控管權限,請呼叫 patch 方法,並傳入 grantees 欄位已更新的 DataPolicy 資源。
SQL
如要授予資料政策的精細存取控管權限,請使用 GRANT FINE_GRAINED_READ 陳述式新增 grantees。例如:
GRANT FINE_GRAINED_READ ON DATA_POLICY `myproject.region-us.data_policy_name` TO "principal://goog/subject/user1@example.com","principal://goog/subject/user2@example.com"
如要撤銷資料政策的精細存取控管權限,請使用 REVOKE FINE_GRAINED_READ 陳述式移除 grantees。例如:
REVOKE FINE_GRAINED_READ ON DATA_POLICY `myproject.region-us.data_policy_name` FROM "principal://goog/subject/user1@example.com","principal://goog/subject/user2@example.com"
刪除資料政策
建立資料政策的使用者或服務帳戶必須具備 bigquery.dataPolicies.delete 權限。BigQuery 資料政策管理員、BigQuery 管理員和 BigQuery 資料擁有者角色都具備這項權限。
API
如要刪除資料政策,請呼叫 delete 方法。
SQL
使用 DROP DATA_POLICY 陳述式刪除資料政策:
DROP DATA_POLICY `myproject.region-us.data_policy_name`;
直接為資料欄指派資料政策
您可以直接在資料欄指派資料政策,不需使用政策標記。
事前準備
如要取得直接為資料欄指派資料政策所需的權限,請要求管理員授予您資料表的 BigQuery 資料政策管理員 (roles/bigquerydatapolicy.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備直接為資料欄指派資料政策所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
必須具備下列權限,才能直接為資料欄指派資料政策:
-
bigquery.tables.update -
bigquery.tables.setColumnDataPolicy -
bigquery.dataPolicies.attach
指派資料政策
如要直接為資料欄指派資料政策,請執行下列任一操作:
SQL
如要將資料政策附加至資料欄,請使用 CREATE
TABLE、ALTER TABLE ADD
COLUMN 或 ALTER COLUMN SET
OPTIONS DDL 陳述式。
以下範例使用 CREATE TABLE 陳述式,並設定資料欄的資料政策:
CREATE TABLE myproject.table1 ( name INT64 OPTIONS (data_policies=["{'name':'myproject.region-us.data_policy_name1'}", "{'name':'myproject.region-us.data_policy_name2'}"]) );
下列範例使用 ALTER COLUMN SET OPTIONS,將資料政策新增至資料表的現有資料欄:
ALTER TABLE myproject.table1 ALTER COLUMN column_name SET OPTIONS ( data_policies += ["{'name':'myproject.region-us.data_policy_name1'}", "{'name':'myproject.region-us.data_policy_name2'}"]);
API
如要將資料政策指派給資料欄,請在資料表上呼叫 patch 方法,並使用適用的資料政策更新資料表結構定義。
取消指派資料政策
如要直接取消指派資料欄的資料政策,請採取下列任一做法:
SQL
如要將資料政策與資料欄解除連結,請使用 ALTER COLUMN SET
OPTIONS DDL 陳述式。
下列範例使用 ALTER COLUMN SET OPTIONS,從資料表的現有資料欄中移除所有資料政策:
ALTER TABLE myproject.table1 ALTER COLUMN column_name SET OPTIONS ( data_policies = []);
下列範例使用 ALTER COLUMN SET OPTIONS 取代資料表現有資料欄的資料政策:
ALTER TABLE myproject.table1 ALTER COLUMN column_name SET OPTIONS ( data_policies = ["{'name':'myproject.region-us.new_data_policy_name'}"]);
API
如要取消指派資料欄的資料政策,請在資料表上呼叫 patch 方法,並將資料表結構定義更新為空白或更新後的資料政策。
限制
直接在資料欄指派資料政策時,須遵守下列限制:
- 您必須使用
v2.projects.locations.datapolicies資源。 - 您無法將政策標記和資料政策套用至同一個資料欄。
- 一個資料欄最多可以附加八項資料政策。
- 資料表最多可透過資料欄參照 1,000 項不重複的資料政策。
- 一項查詢最多可參照 2,000 項資料政策。
- 只有在沒有資料表資料欄參照資料政策時,才能刪除資料政策。
- 如果使用者只有
maskedAccess角色,tabledata.listAPI 呼叫就會失敗。 - 如果使用者不具備原始資料存取權,則在受資料欄資料政策保護的資料表上,資料表複製作業會失敗。
- 跨區域資料表複製作業不支援受資料欄資料政策保護的資料表。
- BigQuery Omni 區域不支援資料欄資料政策。
- 如果目標資料表有資料欄資料政策,則舊版 SQL 會失敗。
- 載入工作不支援使用者指定的結構定義,且含有資料欄資料政策。
- 如果覆寫目的地資料表,系統會從資料表中移除所有現有政策標記,除非您使用
--destination_schema旗標指定含有資料欄資料政策的結構定義。 - 根據預設,資料遮罩不支援分區或分群資料欄。這是資料遮蓋功能的一般限制,並非資料欄資料政策專屬。對分區或分群資料欄進行資料遮蓋,可能會大幅增加查詢費用。
- 您無法直接在物件資料表、非 BigLake 外部資料表、Apache Iceberg 外部資料表和 Delta Lake 的資料欄上指派資料政策。
- 精細存取權只能在資料政策層級授予。詳情請參閱「更新資料政策」。
- 您無法使用 BigQuery Data Policy API 取消指派資料欄上最後一項資料政策。您可以使用
ALTER COLUMN SET OPTIONSDDL 陳述式,取消指派資料欄上最後一個資料政策。