GCP 資安防護新亮點―以 BigQuery 保護敏感資料

GCP 資安防護新亮點―以 BigQuery 保護敏感資料

大量的用戶資料雖能讓企業從中洞見商機,但龐大個人資料的管理卻也是一大難題。Google Cloud Platform(GCP)的 BigQuery 不僅是強大的數據分析工具,近期更新增了2項能有效保護敏感資料的資安防護功能。一起跟著 Cloud Ace 的專業架構師了解這2項功能的內容和使用情境吧。

為何要維持數據安全?

一般企業為了提供更優質的服務給客戶或使用者,會選擇在其運行的應用程式或平台儲存或使用敏感資料(Sensitive data),例如個人身份訊息(Personally Identifiable Information,PII)、遺傳和生物特徵訊息(Genetic and Biometric Information)、或信用卡號碼等。因此,許多使用敏感資料進行分析的企業就會面臨數據洩露和相關的持續性風險,以及日益增長的數據存取控管需求。

圖片來源:freepik

對正在建立海量數據生態系統的大企業而言,數據存取的權限控制和敏感資料的遮蔽就更加複雜了,因為有時企業可能會選擇透過增加 dataset 的副本來執行權限管理,並將副本做遮罩(Data Obfuscation),但如此一來可能發生數據管理或保護不一致的情況,進而提高管理成本。因此,為有效解決上述問題,企業需在原始數據表(Base table)上使用正確的防禦機制來保護這些敏感資料,使數據在整個生命週期中能備受保護且安全。

而 GCP 所提供的服務,如 Cloud Data Loss Prevention(Cloud DLP)、Data Governance、BigQuery 的 Authorized view 或 Row-level security 等,皆可管理敏感資料,以確保這些數據在其生命週期中是安全、不公開且具備高可用性。

GCP 資安防護新亮點:BigQuery 於 Access controls 上的第二層防禦

除了上述那些 GCP 既有的數據保護服務,BigQuery 基於既有存取控制之上的第二層防禦還有兩項新功能,可協助企業保護及管理敏感資料,下面讓我們一起來了解。

使用 Cloud KMS Key 進行 SQL Column-level 加密

首先,BigQuery Column 層級的加密 SQL 函數(Column-level encryption SQL functions)能夠在 BigQuery 中的 Column 層級加密和解密數據,以實現 BigQuery 的第二層加密(第一層加密為 Google encrypted at rest 的安全防護)。換句話說,使用者可將欲寫入 BigQuery 的數據,透過加密 SQL 函數執行加密,而要存取數據時,同樣使用該函數解密即可。此外,使用者也能使用這些加密 SQL 函數,來解密透過外部加密金鑰加密後,才存放於 BigQuery 的數據。此外,這些加密 SQL 函數支援業界標準加密算法 AES-GCM(Non-deterministic)和 AES-SIV(Deterministic),使用者可透過 AES-SIV 函數對加密數據欄位進行分組(Grouping)、聚合(Aggregation)與連接(Joins),並利用 AES-GCM 函數 Grouping 和 Joins 加密欄位。

圖片來源:freepik

為了能應用上述的加密方式, Column 層級的加密 SQL 函數與 Cloud Key Management Service(Cloud KMS)整合,提供更多額外的控制,且能透過 Cloud KMS 監控詳細的金鑰存取紀錄。此種第二層加密方式,可使經過封裝的加密金鑰解密數據,且只允許具存取 Cloud KMS 中封裝金鑰權限的使用者,解開密鑰集(Keyset)並解密密文(Ciphertext)。

以下為使用 Non-deterministic SQL 加密函數解密密文的範例語法:

SELECT
  AEAD.DECRYPT_STRING(KEYS.KEYSET_CHAIN(
    @kms_resource_name,
    @wrapped_keyset),
    ciphertext,
    additional_data)
FROM
  ciphertext_table
WHERE
  ...

舉例來說,假如我們將郵遞區號(Zipcode)視為敏感資料,透過 AEAD.ENCRYPT 函數搭配封裝的密鑰集管理函數(KEYS.KEYSET_CHAIN)一起使用,就可將 Zipcode 欄位加密。而當使用者要解密時,可在 SQL 語法中使用上述的 AEAD.DECRYPT_STRING 函數,解密選取的加密欄位。

Non-deterministic SQL 加密範例圖
截圖自:Google Cloud document
©2022 Google

以下為使用 Deterministic SQL 加密函數來解密密文的範例語法:

SELECT
  DETERMINISTIC_DECRYPT_STRING(KEYS.KEYSET_CHAIN(
    @kms_resource_name,
    @wrapped_keyset),
    ciphertext,
    additional_data)
 FROM
  ciphertext_table
WHERE
  ...

如下圖所示,我們可將 Customer_detail 內的帳號資訊欄位(Acct Number)透過 DETERMINISTIC_ENCRYPT 函數加密後,再透過上述的 AEAD 函數解密。但要再次提醒,使用者需具備權限(cryptoKeyDecrypterViaDelegation)才能用 SQL 加密函數解密。此外,先前有提到 Deterministic SQL 加密函數支援 Grouping、Aggregation 和 Joins,使用者也能透過這些 SQL 語法查詢特定欄位,即使該使用者無解密數據的權限。

Deterministic SQL 加密/解密範例圖
截圖自:Google Cloud document
©2022 Google

BigQuery 動態數據遮蔽(Dynamic data masking)

另一個新功能是 BigQuery 的動態數據遮蔽,不過它目前仍在 Preview 階段。BigQuery 動態數據遮蔽為 Column 層級安全性之上的新功能,它允許我們遮蔽敏感資料並控制使用者對數據的存取,降低數據被洩露的風險,且會根據自定義的遮蔽規則(Masking rules)、使用者角色及權限,在使用者查詢時遮蔽數據。此新功能可解決需產生 Dataset 副本的問題,也能在不同副本上定義各自的遮蔽規則,簡化使用者對敏感資料的存取,並防止遵循性、隱私法規或機密問題產生。

圖片來源:freepik

BigQuery 的動態數據遮蔽會對原始資料的敏感資料進行不同的轉換,以利查詢時能遮蔽數據。而我們能在 Dataplex 的 Policy tags 上定義遮蔽規則,主要可依據使用者的角色及敏感資料類型來賦予不同級別的存取權限,並加諸於現有的存取控制上,達到 BigQuery 的第二層安全防禦。而存取權限的分類請參照下圖,管理者可依據數據共享的例子來賦予使用者完整存取權無存取權,或具有特定遮蔽的部分存取權

BigQuery 存取權限分類圖
截圖自:Google Cloud document
©2022 Google

此外,目前這個功能支援三種不同的數據遮蔽規則,包含:

  1. NULLIFY:無論欄位的數據類型(Data type)為何,都將內容顯示為 Null
  2. HASH(SHA256):將 SHA256 應用於 STRING 或 BYTES 的數據類型
  3. Default_MASKING_VALUE:根據數據類型返回預設值

這邊補充一下,使用者需擁有可查詢 BigQuery Tables 的權限才能進行查詢。此外,若需查看受遮蔽的數據,需額外擁有 MaskReader 的權限。接著下面為大家介紹數據遮蔽的工作流程(Workflow)。

數據遮蔽的工作流程:
1. 於 Dataplex 設置分類(Taxonomy)和一個或多個 Policy tags
2. 為這些 Policy tags 設置 BigQuery Data policy,而我們可在 Data policy 中設置數據遮蔽規則,並選擇適用此規則之帳號,帳號可設置一或多個
3. 將這些 Policy tags 分配給 BigQuery Tables 中的欄位以套用剛剛所設置的 Data policy

BigQuery 數據遮蔽工作流程圖

要特別注意的是,一個 Policy tag 僅能定義一個 Data policy,此外,若想查看未經遮蔽的數據,可授予使用者 Data Catalog Fine-Grained Reader 角色,詳細內容如下圖所示。

截圖自:Google Cloud document
©2022 Google

GCP 資安防護新功能使用時機

一般來說,會使用到上述兩項功能的情境大致有以下幾種:

  1. 防止未經授權的數據遭洩露
  2. 管理數據存取權限
  3. 順應針對 PII、PHI、PCI 數據的資料隱私法
  4. 為創建安全的測試數據集

基本上,動態數據遮蔽可用於 Real-time transactions,而加密函數可針對非 Real-time 的靜態或動態數據提供額外的安全防護。套用於原始數據表的任何 Masking policy 或加密函數,都可進一步應用於 BigQuery 的 Authorized views 和 Materialized views,且此兩種功能也能與其他 BigQuery 的安全性功能(如 Row-level security)搭配使用。

結論

BigQuery 動態數據遮蔽、 SQL 加密函數及既有的自動 DLP 可掃描整個 Organization 的數據,藉此了解敏感資料的儲存位置,且能管理所有使用者在不同使用情境的數據存取與可用性,進而替我們儲存於 BigQuery 中的數據增添更進一步的保護。

GCP 雲端資安防護方案_Cloud Ace
點擊了解 Cloud Ace 的雲端資安解決方案

以上就是 BigQuery 中可用來強化敏感數據保護及管理的兩項新功能,大家如針對文中內容有任何問題,或想看其他實作教學都可在下方留言。最後,想更了解 Google Cloud,或有技術服務相關需求也都歡迎填寫表單聯繫我們

延伸閱讀:

【GCP 資安攻略】GCP 資訊安全各項功能簡介
BigQuery 是什麼?大數據時代一定要認識的最強資料分析工具
BigQuery 教學―操作界面與分析、視覺化步驟完整圖解/
什麼是 Cloud IAM?GCP 權限管理服務介紹

資料來源:Google Cloud Blog

Cloud Ace 研討會主頁

發佈留言