遮蓋資料欄資料
本文說明如何實作資料遮蓋,有選擇性地遮蓋敏感資料。實作資料遮蓋功能後,您就能為不同使用者群組提供不同層級的資料檢視權限。如需一般資訊,請參閱「資料遮蓋簡介」。
如要實作資料遮蓋,請在資料欄中新增資料政策。如要為資料欄新增資料遮蓋政策,請完成下列步驟:
- 建立分類,並至少包含一個政策標記。
- 選用:在您建立的一或多個政策標記上,將 Data Catalog 精細讀取者角色授予一或多個主體。
- 為政策標記建立最多三項資料政策,將遮蓋規則和主體 (代表使用者或群組) 對應至該標記。
- 在資料欄上設定政策標記。將與政策標記相關聯的資料政策對應至所選資料欄。
- 將 BigQuery「經過遮蓋的讀取者」角色指派給應有權存取遮蓋資料的使用者。最佳做法是在資料政策層級指派 BigQuery 遮蓋讀取者角色。在專案層級以上指派角色,會授予使用者專案下所有資料政策的權限,可能導致權限過多而引發問題。
您可以使用 Google Cloud 控制台或 BigQuery Data Policy API 來處理資料政策。
完成這些步驟後,使用者對資料欄執行查詢時,會根據所屬群組和獲派的角色,取得未遮蓋的資料、遮蓋的資料或存取遭拒的錯誤訊息。詳情請參閱「Masked Reader 和 Fine-Grained Reader 角色如何互動」。
事前準備
- 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 Data Catalog and BigQuery Data Policy 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 Data Catalog and BigQuery Data Policy APIs.
- 新專案會自動啟用 BigQuery,但您可能需要在現有專案中啟用這項服務。
Enable the BigQuery API.
- 如果您要建立的資料政策參照自訂遮蓋常式,請建立相關聯的遮蓋 UDF,以便在後續步驟中使用。
- 在Google Cloud 控制台中開啟「Policy tag taxonomies」(政策標記分類) 頁面。
- 按一下「建立分類」。
在「New taxonomy」(新增分類) 頁面中:
- 在「分類名稱」部分,輸入要建立的分類名稱。
- 在「說明」中輸入說明。
- 如有需要,請變更「Project」下方列出的專案。
- 如有需要,請變更「位置」下方列出的位置。
- 在「政策標記」下方,輸入政策標記名稱和說明。
- 如要為政策標記新增子項政策標記,請按一下「新增子項標記」。
- 如要在與其他政策標記相同的層級新增政策標記,請點選「+ 新增政策標記」。
- 視需要繼續為分類新增政策標記和子項政策標記。
- 為階層建立完政策標記後,請按一下「建立」。
- 呼叫
taxonomies.create
建立分類。 - 呼叫
taxonomies.policytag.create
建立政策標記。 - 在Google Cloud 控制台中開啟「Policy tag taxonomies」(政策標記分類) 頁面。
- 按一下分類名稱即可開啟。
- 選取政策標記。
- 按一下「管理資料政策」。
- 在「資料政策名稱」中,輸入資料政策的名稱。資料政策名稱在資料政策所屬專案中不得重複。
- 在「遮蓋規則」部分,選擇預先定義的遮蓋規則或自訂遮蓋常式。如果您選取自訂遮蓋常式,請確認您在專案層級同時擁有
bigquery.routines.get
和bigquery.routines.list
權限。 - 在「主體」中,輸入一或多個使用者或群組的名稱,授予這些對象資料欄的遮蓋存取權。請注意,您在此輸入的所有使用者和群組都會獲得 BigQuery 經過遮蓋的讀取者角色。
- 按一下「提交」。
呼叫
create
方法。傳遞符合下列條件的DataPolicy
資源:dataPolicyType
欄位已設為DATA_MASKING_POLICY
。dataMaskingPolicy
欄位會識別要使用的資料遮蓋規則或常式。dataPolicyId
欄位會提供資料政策的名稱,該名稱在資料政策所屬專案中不得重複。
呼叫
setIamPolicy
方法,並傳入Policy
。Policy
必須識別獲准存取遮蓋資料的主體,並為role
欄位指定roles/bigquerydatapolicy.maskedReader
。在 Google Cloud 控制台中開啟 BigQuery 頁面。
在 BigQuery 探索器中,找出並選取要更新的資料表。系統會開啟該資料表的結構定義。
點選「編輯結構定義」。
在「目前的結構定義」畫面上,選取目標資料欄,然後按一下「新增政策標記」。
在「新增政策標記」畫面中,找出並選取要套用至資料欄的政策標記。
按一下「選取」。畫面應會出現如下所示的內容:
按一下 [儲存]。
將結構定義寫入本機檔案。
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
- 在Google Cloud 控制台中開啟「Policy tag taxonomies」(政策標記分類) 頁面。
- 按一下分類名稱即可開啟。
- 選取政策標記。
- 按一下「管理資料政策」。
- 視需要變更遮蓋規則。
- 選用:新增或移除主體。
- 按一下「提交」。
- 在Google Cloud 控制台中開啟「Policy tag taxonomies」(政策標記分類) 頁面。
- 按一下分類名稱即可開啟。
- 選取政策標記。
- 按一下「管理資料政策」。
- 按一下要刪除的資料政策旁的 。
- 按一下「提交」。
- 按一下「確認」。
可建立分類
建立分類架構的使用者或服務帳戶必須獲派 Data Catalog 政策代碼管理員角色。
主控台
API
如要使用現有分類,請呼叫
taxonomies.import
,取代下列程序的前兩個步驟。
使用政策標記
如要進一步瞭解如何使用政策標記 (例如查看或更新政策標記),請參閱「使用政策標記」。如需最佳做法,請參閱「在 BigQuery 中使用政策標記的最佳做法」。
建立資料政策
建立資料政策的使用者或服務帳戶必須具備 bigquery.dataPolicies.create
、bigquery.dataPolicies.setIamPolicy
和 datacatalog.taxonomies.get
權限。
「BigQuery 資料政策管理員」、「BigQuery 管理員」和「BigQuery 資料擁有者」角色都包含 bigquery.dataPolicies.create
和 bigquery.dataPolicies.setIamPolicy
權限。「datacatalog.taxonomies.get
」權限包含在 Data Catalog 管理員和 Data Catalog 檢視者角色中。
如果是自訂遮蓋,請授予使用者 BigQuery 管理員或 BigQuery 資料擁有者角色,確保他們擁有常式和資料政策的必要權限。
每個政策標記最多可建立九項資料政策。其中一項政策會保留給資料欄層級存取權控管設定。
主控台
API
在資料欄上設定政策標記
將與資料政策相關聯的政策標記附加至資料欄,即可在資料欄上設定資料政策。
設定政策標記的使用者或服務帳戶必須具備 datacatalog.taxonomies.get
和 bigquery.tables.setCategory
權限。datacatalog.taxonomies.get
包含在 Data Catalog 政策標記管理員和專案檢視者角色中。bigquery.tables.setCategory
包含在 BigQuery 管理員 (roles/bigquery.admin
) 和 BigQuery 資料擁有者 (roles/bigquery.dataOwner
) 角色中。
如要在Google Cloud console 中查看機構內所有專案的分類和政策標記,使用者必須具備 resourcemanager.organizations.get
權限,而這項權限包含在機構檢視者角色中。
主控台
使用Google Cloud 控制台修改結構定義,設定政策標記。
bq
API
如為現有資料表,請呼叫 tables.patch
;如為新資料表,請呼叫 tables.insert
。使用您傳入的 Table
物件的 schema
屬性,在結構定義中設定政策標記。請參閱指令列範例結構定義,瞭解如何設定政策標記。
處理現有資料表時,建議使用 tables.patch
方法,因為 tables.update
方法會取代整個資料表資源。
強制執行存取控管
為政策代碼建立資料政策時,系統會自動強制執行存取權控管。如果使用者具備「經過遮蓋的讀取者」角色,系統會在回應查詢時,針對套用該政策標記的所有資料欄傳回遮蓋資料。
如要停止強制執行存取權控管,您必須先刪除分類中與政策標記相關聯的所有資料政策。詳情請參閱強制執行存取權控管。
檢查資料政策的身分與存取權管理權限
如要查看資料政策的權限,請呼叫 testIamPermissions
方法。
更新資料政策
更新資料政策的使用者或服務帳戶必須具備 bigquery.dataPolicies.update
權限。如要更新與資料政策相關聯的政策標記,您也需要 datacatalog.taxonomies.get
權限。
如要更新與資料政策相關聯的主體,您必須具備 bigquery.dataPolicies.setIamPolicy
權限。
「BigQuery 資料政策管理員」、「BigQuery 管理員」和「BigQuery 資料擁有者」角色都包含 bigquery.dataPolicies.update
和 bigquery.dataPolicies.setIamPolicy
權限。「datacatalog.taxonomies.get
」權限包含在 Data Catalog 管理員和 Data Catalog 檢視者角色中。
主控台
API
如要變更資料遮蓋規則,請呼叫 patch
方法,並傳遞具有更新 dataMaskingPolicy
欄位的 DataPolicy
資源。
如要變更與資料政策相關聯的主體,請呼叫 setIamPolicy
方法,並傳遞 Policy
,更新獲准存取遮蓋資料的主體。
刪除資料政策
建立資料政策的使用者或服務帳戶必須具備 bigquery.dataPolicies.delete
權限。BigQuery 資料政策管理員、BigQuery 管理員和 BigQuery 資料擁有者角色都具備此權限。
主控台
API
如要刪除資料政策,請呼叫 delete
方法。