資料遮蓋功能簡介

BigQuery 支援在資料欄層級遮蓋資料。您可以使用資料遮蓋功能,有選擇性地隱藏使用者群組的資料欄資料,同時仍允許他們存取資料欄。資料遮罩功能是建立在資料欄層級存取權控管之上,因此請先熟悉這項功能再繼續操作。

當您使用資料遮罩功能搭配資料欄層級存取權控管時,可以根據不同使用者群組的需求,設定資料欄資料的存取權範圍,從完全存取到完全不存取。舉例來說,您可能會想將稅籍資料的完整存取權授予會計部門,將遮罩存取權授予分析師部門,並將無存取權授予業務部門。

優點

資料遮罩有下列優點:

  • 這可簡化資料共用程序。您可以遮蓋敏感資料欄,以便與較大的群組共用資料表。
  • 與資料欄層級存取權控管機制不同,您不需要透過排除使用者無法存取的資料欄來修改現有查詢。設定資料遮罩後,現有查詢會根據使用者獲得的角色自動遮罩資料欄資料。
  • 您可以大規模套用資料存取權政策。您可以編寫資料政策,將其與政策標記建立關聯,然後將政策標記套用至任意數量的資料欄。
  • 啟用屬性型存取權控管。附加至資料欄的政策標記會提供內容資料存取權,這取決於資料政策和與該政策標記相關聯的主體。

資料遮蓋工作流程

圖 1 顯示設定資料遮罩功能的工作流程:

如要啟用資料遮罩功能,您必須建立分類,為分類中的政策標記建立資料政策,然後將政策標記與資料欄建立關聯。 圖 1. 資料遮蓋元件。

您可以按照下列步驟設定資料遮罩:

  1. 設定分類和一或多個政策標記
  2. 為政策標記設定資料政策。資料政策會將資料遮罩規則和一或多個代表使用者或群組的授權對象,對應至政策標記。

    使用 Google Cloud 主控台建立資料政策時,您可以在單一步驟中建立資料遮蔽規則並指定實體。使用 BigQuery Data Policy API 建立資料政策時,您可以在一個步驟中建立資料政策和資料遮蔽規則,並在第二個步驟中指定資料政策的業主。

  3. 將政策標記指派給 BigQuery 資料表中的資料欄,以便套用資料政策。

  4. 將應具備遮蓋資料存取權的使用者指派給 BigQuery 遮蓋讀取者角色。最佳做法是在資料政策層級指派 BigQuery 遮蓋讀取者角色。在專案層級或更高層級指派角色,可讓使用者取得專案下所有資料政策的權限,但這可能會導致權限過多的問題。

    與資料政策相關聯的政策標記也可用於資料欄層級存取權控管。在這種情況下,政策標記也會與一或多個已獲授予 Data Catalog 精細讀取者角色的主體建立關聯。這樣一來,這些擁有者就能存取未遮罩的資料欄原始資料。

圖 2 顯示資料欄層級存取權控管和資料遮罩功能的搭配運作方式:

政策標記會與資料政策相關聯,以便設定資料遮蓋功能,然後與資料表欄相關聯,啟用遮蓋功能。 圖 2. 資料遮蓋元件。

如要進一步瞭解角色互動情形,請參閱「Masked Reader 和 Fine-Grained Reader 角色的互動方式」。如要進一步瞭解政策代碼繼承,請參閱「角色和政策代碼階層」。

資料遮蓋規則

使用資料遮罩功能時,系統會根據執行查詢的使用者角色,在查詢執行期間將資料遮罩規則套用至資料欄。遮罩作業優先於查詢中涉及的任何其他作業。資料遮罩規則會決定套用至資料欄資料的資料遮罩類型。

您可以使用下列資料遮蓋規則:

  • 自訂遮罩例行程序。在資料欄上套用使用者定義函式 (UDF) 後,傳回資料欄的值。您必須具備常式權限,才能管理遮蓋規則。這個規則的設計目的是支援所有 BigQuery 資料類型,但 STRUCT 資料類型除外。不過,系統僅支援 STRINGBYTES 以外的資料類型。輸出內容取決於定義的函式。

    如要進一步瞭解如何為自訂遮罩例程式建立 UDF,請參閱「建立自訂遮罩例程式」一文。

  • 日期年份遮罩。將值截斷至年份後,傳回資料欄的值,並將值的所有非年份部分設為年初。您只能將這個規則套用至使用 DATEDATETIMETIMESTAMP 資料類型的欄。例如:

    類型 原始 遮罩
    DATE 2030-07-17 2030-01-01
    DATETIME 2030-07-17T01:45:06 2030-01-01T00:00:00
    TIMESTAMP 2030-07-17 01:45:06 2030-01-01 00:00:00
  • 預設遮蓋值。根據資料欄的資料類型,傳回資料欄的預設遮罩值。如要隱藏資料欄的值,但顯示資料類型,請使用這個屬性。當這項資料遮蔽規則套用至資料欄時,對於具備「經過遮蔽的讀取者」存取權的使用者來說,在查詢 JOIN 作業中就沒那麼實用。這是因為預設值不夠獨特,無法在彙整資料表時派上用場。

    下表列出每種資料類型的預設遮罩值:

    資料類型 預設遮蓋值
    STRING ""
    BYTES b''
    INTEGER 0
    FLOAT 0.0
    NUMERIC 0
    BOOLEAN FALSE
    TIMESTAMP 世界標準時間 1970-01-01 00:00:00
    DATE 1970-01-01
    TIME 00:00:00
    DATETIME 1970-01-01T00:00:00
    GEOGRAPHY POINT(0 0)
    BIGNUMERIC 0
    ARRAY []
    STRUCT

    NOT_APPLICABLE

    政策標記無法套用至使用 STRUCT 資料類型的資料欄,但可以與這些資料欄的葉節欄位建立關聯。

    JSON null
  • 電子郵件遮罩。將有效電子郵件地址的使用者名稱替換為 XXXXX 後,傳回資料欄的值。如果資料欄的值不是有效的電子郵件地址,則在經過 SHA-256 雜湊函式處理後,會傳回資料欄的值。您只能將這項規則套用至使用 STRING 資料類型的資料欄。例如:

    原始 遮罩
    abc123@gmail.com XXXXX@gmail.com
    randomtext jQHDyQuj7vJcveEe59ygb3Zcvj0B5FJINBzgM6Bypgw=
    test@gmail@gmail.com Qdje6MO+GLwI0u+KyRyAICDjHbLF1ImxRqaW08tY52k=
  • 前四個字元。傳回資料欄值的前 4 個字元,並將字串的其餘部分替換為 XXXXX。如果資料欄的值長度等於或小於 4 個字元,則會在執行 SHA-256 雜湊函式後傳回資料欄的值。您只能將這項規則套用至使用 STRING 資料類型的資料欄。

  • 雜湊 (SHA-256)。傳回經過 SHA-256 雜湊函式處理後的資料欄值。如要讓使用者在JOIN 作業中使用這個資料欄來查詢,請使用這個選項。您只能將這項規則套用至使用 STRINGBYTES 資料類型的資料欄。

    資料遮罩功能中使用的 SHA-256 函式會保留類型,因此傳回的雜湊值與資料欄值具有相同的資料類型。舉例來說,STRING 資料欄值的雜湊值也具有 STRING 資料類型。

  • 最後四個字元。傳回資料欄值的最後 4 個字元,並將字串的其餘部分替換為 XXXXX。如果資料欄的值長度等於或小於 4 個字元,則會在執行 SHA-256 雜湊函式後傳回資料欄的值。您只能將這項規則套用至使用 STRING 資料類型的資料欄。

  • 失效。傳回 NULL,而非資料欄值。如要隱藏資料欄的值和資料類型,請使用這個選項。當這項資料遮蔽規則套用至資料欄時,對於具備「經過遮蔽的讀取者」存取權的使用者來說,在查詢 JOIN 作業中就沒那麼實用。這是因為 NULL 值不夠獨特,無法在彙整資料表時派上用場。

資料遮蓋規則階層

您最多可為政策標記設定九項資料政策,每項政策都會與不同的資料遮蓋規則相關聯。其中一個政策是用於資料欄層級存取權控管設定。這樣一來,系統就能根據使用者所屬的群組,將多個資料政策套用至使用者查詢中的資料欄。在這種情況下,BigQuery 會根據以下層級選擇要套用的資料遮蔽規則:

  1. 自訂遮蓋處理常式
  2. 雜湊 (SHA-256)
  3. 電子郵件遮罩
  4. 末四碼
  5. 前四個字元
  6. 日期年份遮罩
  7. 預設遮蓋值
  8. 失效

舉例來說,使用者 A 是員工和會計群組的成員。使用者 A 執行的查詢包含 sales_total 欄位,且已套用 confidential 政策標記。confidential 政策標記有兩個相關聯的資料政策:一個是將員工角色設為主體並套用「取消資料遮蓋」規則,另一個是將會計角色設為主體並套用雜湊 (SHA-256) 資料遮蓋規則。在這種情況下,雜湊 (SHA-256) 資料遮蓋規則的優先順序高於無效資料遮蓋規則,因此雜湊 (SHA-256) 規則會套用至使用者 A 查詢中的 sales_total 欄位值。

圖 3 顯示了這個情況:

如果因使用者所屬的群組而導致套用「取消」和雜湊 (SHA-256) 資料遮蓋規則發生衝突,系統會優先套用雜湊 (SHA-256) 資料遮蓋規則。

圖 3:資料遮蓋規則優先順序。

角色和權限

管理分類和政策標記的角色

您必須具備資料目錄政策標記管理員角色,才能建立及管理分類和政策標記。

角色/ID 權限 說明
Data Catalog 政策標記管理員/datacatalog.categoryAdmin datacatalog.categories.getIamPolicy
datacatalog.categories.setIamPolicy
datacatalog.taxonomies.create
datacatalog.taxonomies.delete
datacatalog.taxonomies.get
datacatalog.taxonomies.getIamPolicy
datacatalog.taxonomies.list
datacatalog.taxonomies.setIamPolicy
datacatalog.taxonomies.update
resourcemanager.projects.get
resourcemanager.projects.list

套用於專案層級。

這個角色可授予下列權限:

  • 建立、讀取、更新及刪除分類和政策標記。
  • 取得並設定政策標記的 IAM 政策。

建立及管理資料政策的角色

您必須具備下列任一 BigQuery 角色,才能建立及管理資料政策:

角色/ID 權限 說明
BigQuery 資料政策管理員/bigquerydatapolicy.admin

BigQuery 管理員/bigquery.admin

BigQuery 資料擁有者/bigquery.dataOwner
bigquery.dataPolicies.create
bigquery.dataPolicies.delete
bigquery.dataPolicies.get
bigquery.dataPolicies.getIamPolicy
bigquery.dataPolicies.list
bigquery.dataPolicies.setIamPolicy
bigquery.dataPolicies.update

bigquery.dataPolicies.createbigquery.dataPolicies.list 權限適用於專案層級。其他權限則會套用至資料政策層級。

這個角色可授予下列權限:

  • 建立、讀取、更新及刪除資料政策。
  • 取得及設定資料政策的 IAM 政策。
您也需要 datacatalog.taxonomies.get 權限,可透過多個 Data Catalog 預先定義角色取得。

為資料欄附加政策標記的角色

您必須具備 datacatalog.taxonomies.getbigquery.tables.setCategory 權限,才能將政策標記附加至資料欄。datacatalog.taxonomies.get 包含在 Data Catalog 政策標記管理員和檢視者角色中。bigquery.tables.setCategory 包含在 BigQuery 管理員 (roles/bigquery.admin) 和 BigQuery 資料擁有者 (roles/bigquery.dataOwner) 角色中。

查詢遮罩資料的角色

您必須具備 BigQuery 遮罩讀取者角色,才能查詢已套用資料遮罩的資料欄。

角色/ID 權限 說明
經過遮蓋的讀取器/bigquerydatapolicy.maskedReader bigquery.dataPolicies.maskedGet

適用於資料政策層級。

這個角色可讓使用者查看與資料政策相關聯的資料欄所含經過遮蓋的資料。

此外,使用者必須具備適當的權限,才能查詢資料表。 詳情請參閱「必要權限」。

遮蓋資料讀取者和精細遮蓋資料讀取者角色的互動方式

資料遮罩功能會在資料欄層級存取權控管機制之上運作。針對特定資料欄,部分使用者可能具備 BigQuery 經過遮蓋的讀取者角色,可讀取經過遮蓋的資料;部分使用者可能具備 Data Catalog 精細讀取者角色,可讀取未經遮蓋的資料;部分使用者可能同時具備這兩種角色,而部分使用者則不具備這兩種角色。這些角色的互動方式如下:

  • 同時具備「精細讀取者」和「經過遮蓋的讀取者」角色的使用者:使用者看到的內容取決於政策標記階層中授予每個角色的權限。詳情請參閱「政策代碼階層中的授權繼承」。
  • 具備精細讀取者角色的使用者:可查看未遮罩 (未遮蓋) 的資料欄資料。
  • 具備「Masked Reader」角色的使用者:可查看已遮蓋的資料欄。
  • 使用者不具備任何角色:權限遭拒。

如果資料表包含已加密或已加密且遮罩的資料欄,為了在該資料表上執行 SELECT * FROM 陳述式,使用者必須是適當群組的成員,才能在所有這些欄上獲得「Masked Reader」或「精細讀取者」角色。

未獲授予這些角色的使用者,必須在 SELECT 陳述式中指定自己有權存取的資料欄,或是使用 SELECT * EXCEPT (restricted_columns) FROM 排除受保護或遮罩的資料欄。

政策標記階層中的授權繼承

系統會從與資料欄相關聯的政策標記開始評估角色,然後逐一檢查分類階層中的每個層級,直到判斷使用者是否具有適當權限,或到達政策標記階層頂端為止。

舉例來說,請參考圖 4 所示的政策標記和資料政策設定:

在分類法較高層級授予「經過遮蓋的讀取者」角色,而在較低層級授予「精細讀取者」角色時,評估使用者存取權。

圖 4:政策標記和資料政策設定。

您有一個使用 Financial 政策標記做為註解的資料表欄,以及同時是 ftes@example.com 和 analysts@example.com 群組成員的使用者。當這位使用者執行含有註解欄的查詢時,系統會根據政策標記分類中定義的階層決定其存取權。由於使用者已獲得 Financial 政策標記授予的資料目錄精細讀取者角色,因此查詢會傳回未遮罩的資料欄資料。

如果另一名僅是 ftes@example.com 角色成員的使用者執行含有註解資料欄的查詢,查詢會傳回已使用 SHA-256 演算法雜湊處理的資料欄資料,因為該使用者已獲得 Confidential 政策標記 (Financial 政策標記的父項) 授予的 BigQuery 遮罩讀取者角色。

如果使用者不是上述任一角色的成員,嘗試查詢已註解的資料欄時,就會收到存取權遭拒的錯誤訊息。

與前述情境相反,請採用圖 5 所示的政策代碼和資料政策設定:

在分類法較高層級授予精細讀取者角色,而在較低層級授予經過遮蓋的讀取者角色時,評估使用者存取權。

圖 5. 政策標記和資料政策設定。

您遇到的情況與圖 4 相同,但使用者在政策標記階層的較高層級中獲得「精細讀取者」角色,而在政策標記階層的較低層級中獲得「經過遮蓋的讀取者」角色。因此,查詢會傳回這位使用者的資料欄遮罩資料。即使使用者已獲得更高層級標記階層的精細讀取者角色,仍會發生這種情況,因為服務會在向上查看政策標記階層時,使用遇到的第一個已指派角色來檢查使用者存取權。

如果您想建立單一資料政策,並套用至政策標記階層的多個層級,可以在代表應套用的最上層階層的政策標記上設定資料政策。舉例來說,請考慮採用下列結構的分類法:

  • 政策標記 1
    • 政策標記 1a
      • 政策標記 1ai
    • 政策標記 1b
      • 政策標記 1bi
      • 政策標記 1bii

如果您想將資料政策套用至所有這些政策標記,請在政策標記 1 上設定資料政策。如果您想將資料政策套用至政策標記 1b 及其子項,請在政策標記 1b 上設定資料政策。

使用不相容功能遮蓋資料

當您使用與資料遮罩功能不相容的 BigQuery 功能時,服務會將遮罩資料欄視為安全資料欄,並只授予具備資料目錄精細讀取者角色的使用者存取權。

舉例來說,請參考圖 6 所示的政策標記和資料政策設定:

系統會評估與資料欄相關聯的政策標記,判斷使用者是否有權存取未遮罩的資料。

圖 6:政策標記和資料政策設定。

您有一個使用 Financial 政策標記的資料表欄,以及一個屬於 analysts@example.com 群組的使用者。當這位使用者嘗試透過不相容的功能存取註解資料欄時,會收到存取權遭拒的錯誤訊息。這是因為 Financial 政策標記會授予他們 BigQuery 經過遮蓋的讀取者角色,但在這種情況下,他們必須具備 Data Catalog 精細讀取者角色。由於服務已為使用者判斷適用的角色,因此不會繼續檢查政策代碼階層中的其他權限。

含有輸出的資料遮蓋範例

如要瞭解代碼、主體和角色如何搭配運作,請參考以下範例。

在 example.com 中,基本存取權會透過 data-users@example.com 群組授予。所有需要定期存取 BigQuery 資料的員工都是這個群組的成員,這個群組會指派所有必要的權限,以便從資料表讀取資料,以及 BigQuery 遮罩讀取者角色。

員工會指派至其他群組,以便在工作上需要時,存取安全或遮罩的資料欄。這些額外群組的所有成員也都是 data-users@example.com 的成員。您可以在圖 7 中查看這些群組如何與適當的角色建立關聯:

example.com 的政策標記和資料政策。

圖 7. example.com 的政策標記和資料政策。

然後將政策標記與表格欄相關聯,如圖 8 所示:

與表格欄相關聯的 Example.com 政策標記。

圖 8. 與表格欄相關聯的 Example.com 政策標記。

針對與資料欄相關聯的標記,執行 SELECT * FROM Accounts; 會產生下列不同群組的結果:

  • data-users@example.com:這個群組已獲得 PIIConfidential 政策標記的 BigQuery 經過遮蓋的讀取者角色。系統會傳回以下結果:

    SSN 優先順序 生命週期價值 建立日期 電子郵件
    空值 "" 0 1983 年 3 月 8 日 空值
    空值 "" 0 2009 年 12 月 29 日 空值
    空值 "" 0 2021 年 7 月 14 日 空值
    空值 "" 0 1997 年 5 月 5 日 空值
  • accounting@example.com:這個群組已獲授予 SSN 政策標記的 Data Catalog 精細讀取者角色。系統會傳回以下結果:

    SSN 優先順序 生命週期價值 建立日期 NULL
    123-45-6789 "" 0 1983 年 3 月 8 日 空值
    234-56-7891 "" 0 2009 年 12 月 29 日 空值
    345-67-8912 "" 0 2021 年 7 月 14 日 空值
    456-78-9123 "" 0 1997 年 5 月 5 日 空值
  • sales-exec@example.com:這個群組已獲得 Confidential 政策標記的 Data Catalog 精細讀取者角色。系統會傳回以下結果:

    SSN 優先順序 生命週期價值 建立日期 電子郵件
    空值 90,000 1983 年 3 月 8 日 空值
    空值 84,875 2009 年 12 月 29 日 空值
    空值 38,000 2021 年 7 月 14 日 空值
    空值 245 1997 年 5 月 5 日 空值
  • fin-dev@example.com:這個群組已獲得 Financial 政策標記的 BigQuery 遮蓋讀取者角色。系統會傳回以下結果:

    SSN 優先順序 生命週期價值 建立日期 電子郵件
    空值 "" Zmy9vydG5q= 1983 年 3 月 8 日 空值
    空值 "" GhwTwq6Ynm= 2009 年 12 月 29 日 空值
    空值 "" B6y7dsgaT9= 2021 年 7 月 14 日 空值
    空值 "" Uh02hnR1sg= 1997 年 5 月 5 日 空值
  • 所有其他使用者:凡是未屬於上述任一群組的使用者,都會收到存取權遭拒的錯誤訊息,因為他們未獲得 Data Catalog 精細讀取者或 BigQuery 經過遮蓋的讀取者角色。如要查詢 Accounts 資料表,他們必須在 SELECT * EXCEPT (restricted_columns) FROM Accounts 中指定自己有權存取的資料欄,以便排除已加密或遮罩的資料欄。

費用考量

資料遮罩可能會間接影響處理的位元組數量,進而影響查詢費用。如果使用者查詢的資料欄已使用「Nullify」或「Default Masking Value」規則進行遮蔽,則系統不會掃描該資料欄,因此處理的位元組數會減少。

規定與限制

以下各節說明資料遮蓋功能的限制類別。

資料政策管理

  • 使用特定 BigQuery 版本建立的預留項目,可能無法使用這項功能。如要進一步瞭解各個版本啟用的功能,請參閱「BigQuery 版本簡介」。
  • 您最多可以為每個政策標記建立九項資料政策。其中一個政策是用於資料欄層級存取權控管設定
  • 資料政策、相關聯的政策標記,以及使用這些項目的任何例行程序,都必須位於同一個專案中。

政策標記

  • 包含政策標記分類的專案必須屬於某個機構。
  • 政策標記階層從根節點到最低層次的子標記,最多可有五個層級,如以下螢幕截圖所示:

    政策標記深度。

設定存取權控管

分類法至少與一個政策標記相關聯的資料政策後,系統會自動強制執行存取控管。如要關閉存取控制,您必須先刪除與分類相關聯的所有資料政策。

具體化檢視表和重複記錄遮罩查詢

如果您已有已實體化的檢視畫面,則系統會在關聯基礎資料表上重複記錄遮蔽查詢,並失敗。如要解決這個問題,請刪除物件化檢視畫面。如果您基於其他原因需要建立物化檢視表,可以使用其他資料集建立。

查詢分區資料表中的遮罩資料欄

系統不支援在分區或叢集資料欄上進行資料遮罩的查詢。

SQL 方言

不支援舊版 SQL。

自訂遮罩常式

自訂遮罩例行程序有下列限制:

  • 自訂資料遮罩功能支援所有 BigQuery 資料類型 (STRUCT 除外),因為資料遮罩功能只能套用至 STRUCT 資料類型的葉節欄位。
  • 刪除自訂遮蓋例行程序不會刪除所有使用該例行程序的資料政策。不過,使用已刪除的遮蓋處理常式的資料政策,會留下空白的遮蓋規則。在其他標記相同的資料政策中,具有「遮蓋讀取者」角色的使用者可以查看遮蓋資料。其他人會看到訊息 Permission denied. 七天後,系統可能會透過自動化程序清除空白遮罩規則的懸空參照。

與其他 BigQuery 功能的相容性

BigQuery API

tabledata.list 方法不相容。如要呼叫 tabledata.list,您必須對此方法傳回的所有資料欄擁有完整存取權。資料目錄精細讀取者角色會授予適當的存取權。

BigLake 資料表

相容。資料遮蓋政策會套用至 BigLake 資料表

BigQuery Storage Read API

相容。資料遮罩政策會在 BigQuery Storage Read API 中強制執行。

BigQuery BI Engine

相容。資料遮蓋政策會在 BI Engine 中強制執行。BI Engine 不會加速執行已啟用資料遮罩功能的查詢。在 Looker Studio 中使用這類查詢可能會導致相關報表或資訊主頁的速度變慢,且成本增加。

BigQuery Omni

相容。系統會在 BigQuery Omni 資料表上強制執行資料遮蓋政策。

定序

部分相容。您可以將 DDM 套用至彙整的資料欄,但遮蓋會在彙整前套用。由於彙整作業可能不會影響遮罩值,因此這個運算順序可能會導致意料之外的結果 (例如,在遮罩後,大小寫不敏感比對可能無法運作)。您可以使用其他方法,例如使用自訂遮蓋例行程序,在套用遮蓋函式前將資料標準化。

複製工作

不相容。如要將資料表從來源複製到目的地,您必須擁有來源資料表中所有欄位的完整存取權。Data Catalog 精細讀取者角色會授予適當的存取權。

資料匯出

相容。如果您具備 BigQuery 遮蓋讀取者角色,匯出的資料就會遭到遮蓋。如果您具備 Data Catalog 精細讀取者角色,系統就不會遮蓋匯出的資料。

資料列層級安全性

相容。資料遮罩會套用在資料列層級安全性之上。舉例來說,如果在 location = "US" 上套用資料列存取權政策,而 location 已遮罩,則使用者可以看到 location = "US" 所在的資料列,但位置欄位已遮罩。

在 BigQuery 中搜尋

部分相容。您可以在已套用資料遮罩的已編製索引或未編製索引的資料欄上呼叫 SEARCH 函式。

在已套用資料遮罩的資料欄上呼叫 SEARCH 函式時,您必須使用與存取權級別相容的搜尋條件。舉例來說,如果您有使用雜湊 (SHA-256) 資料遮罩規則的遮罩讀取器存取權,就會在 SEARCH 子句中使用雜湊值,類似於以下內容:

SELECT * FROM myDataset.Customers WHERE SEARCH(Email, "sg172y34shw94fujaweu");

如果您擁有精細讀取權限,請在 SEARCH 子句中使用實際的欄值,類似於以下範例:

SELECT * FROM myDataset.Customers WHERE SEARCH(Email, "jane.doe@example.com");

如果您讓經過遮蓋的讀取者存取資料欄,而資料遮罩規則為「廢除」或「預設遮蓋值」,搜尋功能就可能不太實用。這是因為您用來做為搜尋條件的遮罩結果 (例如 NULL"") 不夠獨特,無法提供實用資訊。

在已套用資料遮罩的索引欄上搜尋時,只有在您對該欄擁有精細讀取權限時,系統才會使用搜尋索引。

快照

不相容。如要建立資料表的快照,您必須擁有來源資料表中所有資料欄的完整存取權。Data Catalog 精細讀取者角色會授予適當的存取權。

重新命名資料表

相容。資料表重新命名不會受到資料遮罩的影響。

時光旅行

時間修飾符SELECT 陳述式中的 FOR SYSTEM_TIME AS OF 選項相容。目前資料集結構定義的政策標記會套用至擷取的資料。

查詢快取

部分相容。BigQuery 會快取查詢結果約 24 小時,但如果在那之前變更資料表資料或結構定義,快取就會失效。在下列情況下,即使使用者沒有在資料欄上獲得 Data Catalog 精細讀取者角色,仍可在執行查詢時查看資料欄資料:

  1. 使用者已獲得資料欄的 Data Catalog 精細讀取者角色。
  2. 使用者執行包含受限制欄位的查詢,資料會快取。
  3. 在步驟 2 的 24 小時內,系統會授予使用者 BigQuery Masked Reader 角色,並撤銷 Data Catalog 精細讀取者角色。
  4. 在步驟 2 的 24 小時內,使用者執行相同的查詢,系統會傳回快取資料。

萬用字元表格查詢

不相容。您必須具備符合萬用字元查詢的所有資料表中參照的所有資料欄的完整存取權。Data Catalog 精細讀取者角色會授予適當的存取權。

後續步驟