將資料匯入安全的 BigQuery 資料倉儲

許多機構會部署資料倉儲來儲存機密資料,以便分析資料並用於各種業務目的。本文適用於資料工程師和安全管理員,他們會使用 BigQuery 部署及保護資料倉儲。這是藍圖的一部分,藍圖包含下列項目:

本文將說明下列事項:

  • 您可使用的架構和 Google Cloud 服務,有助於保護實際工作環境中的資料倉儲。
  • 從外部網路 (例如內部部署環境) 將資料匯入 BigQuery 的最佳做法。
  • 在Google Cloud中建立、部署及運作資料倉儲時,資料控管的最佳做法包括:

    • 資料 去識別化

    • 機密資料的差異處理方式

    • 資料欄層級加密

    • 資料欄層級存取權控管

本文假設您已按照企業基礎藍圖所述,設定一組基礎安全控制項。您可以在現有的安全控管機制上疊加額外的控管機制,進一步保護資料倉儲中的機密資料。

資料倉儲用途

藍圖支援下列用途:

總覽

BigQuery 等資料倉儲可讓企業分析業務資料,從中取得洞察資訊。分析師會存取儲存在資料倉儲中的業務資料,以產生洞察資訊。如果資料倉儲包含機密資料,您必須採取措施,確保業務資料在儲存、傳輸或分析期間,都能維持安全性、機密性、完整性和可用性。在本藍圖中,您將執行下列操作:

  • 從外部資料來源匯入資料時,請加密位於 Google Cloud 外部的資料(例如在內部部署環境中),然後匯入 Google Cloud。
  • 設定控管機制,確保機密資料的存取安全。
  • 設定有助於保護資料管道的控制項。
  • 為不同角色設定適當的職責分離。
  • 從 Google Cloud 中的其他來源匯入資料時(也稱為內部資料來源),請設定範本來尋找及去識別化機密資料。
  • 設定適當的安全控管和記錄,保護機密資料。
  • 使用資料分類、政策標記、動態資料遮蓋和資料欄層級加密,限制資料倉儲中特定資料欄的存取權。

架構

如要建立機密資料倉儲,您需要安全地匯入資料,然後將資料儲存在 VPC Service Controls 範圍內。

從 Google Cloud匯入資料時的架構

下圖說明從 Google Cloud 匯入來源資料時,系統如何分類、去識別化及儲存擷取的資料。terraform-google-secured-data-warehouse同時也會說明如何視需要重新識別機密資料以供分析。

內部來源的機密資料倉儲架構。

從外部來源匯入資料時的架構

下圖說明使用 terraform-google-secured-data-warehouse-onprem-ingest 存放區將地端環境或其他雲端的資料匯入 BigQuery 倉庫時,資料的擷取和儲存方式。

外部網路的機密資料倉儲架構。

Google Cloud 服務和功能

這些架構會結合使用下列 Google Cloud 服務 和功能:

服務或功能 說明

BigQuery

適用於內部和外部資料來源。不過,您也可以選擇其他儲存空間,如下所示:

  • 從 Google Cloud匯入資料時,BigQuery 會將機密資料儲存在機密資料周邊。
  • 從外部來源匯入資料時,BigQuery 會將加密資料和包裝加密金鑰儲存在不同的資料表中。

BigQuery 採用多種安全控管措施,協助保護內容,包括存取控管、機密資料的資料欄層級安全防護機制,以及資料加密

搭配 Cloud HSM 使用 Cloud Key Management Service (Cloud KMS)

適用於內部和外部來源。不過,外部資料來源還有其他用途。

Cloud HSM 是雲端硬體安全模組 (HSM) 服務,可託管金鑰加密金鑰 (KEK)。從外部來源匯入資料時,您可以使用 Cloud HSM 生成加密金鑰,在將資料傳送至 Google Cloud之前,先使用該金鑰加密網路中的資料。

Cloud Logging

適用於內部和外部來源。

Cloud Logging 會收集 Google Cloud 服務的所有記錄,供分析和調查工具儲存及擷取。

Cloud Monitoring

適用於內部和外部來源。

Cloud Monitoring 會收集及儲存服務的效能資訊和指標。 Google Cloud

Cloud Run functions

僅適用於外部資料來源。

Cloud Run 函式會由 Cloud Storage 觸發,並將 Cloud Storage 上傳至擷取 bucket 的資料寫入 BigQuery。

Cloud StoragePub/Sub

適用於內部和外部來源。

Cloud Storage 和 Pub/Sub 接收資料的方式如下:

  • Cloud Storage:接收及儲存批次資料。根據預設,Cloud Storage 會使用 TLS 加密傳輸中的資料,並使用 AES-256 加密儲存空間中的資料。加密金鑰為客戶自行管理的加密金鑰 (CMEK)。如要進一步瞭解加密,請參閱「資料加密選項」。

    您可以運用身分與存取權管理、存取控制清單 (ACL) 和政策文件等安全控管措施,確保 Cloud Storage 值區的存取安全。如要進一步瞭解支援的存取權控管,請參閱「存取權控管總覽」一文。

BigQuery 適用的資料剖析器

適用於內部和外部來源。

BigQuery 資料剖析器會自動掃描整個機構中所有 BigQuery 資料表和資料欄的機密資料,包括所有資料夾和專案。

Dataflow 管道

適用於內部和外部來源,但管道不同。

Dataflow 管道會匯入資料,如下所示:

  • 從 Google Cloud匯入資料時,系統會透過兩個 Dataflow 管道,對機密資料進行去識別化和重新識別化。第一個管道會使用假名化技術,對機密資料進行去識別化。第二個管道會在授權使用者要求存取時,重新識別機密資料。
  • 從外部來源匯入資料時,一個 Dataflow 管道會將串流資料寫入 BigQuery。

Dataplex Universal Catalog

適用於內部和外部來源。

Dataplex Universal Catalog 會在擷取期間,自動使用中繼資料 (也稱為政策標記) 分類機密資料。Dataplex Universal Catalog 也會使用中繼資料管理機密資料的存取權。如要控管資料倉儲中資料的存取權,請將政策標記套用至包含機密資料的資料欄。

專屬互連網路

僅適用於外部資料來源。

專屬互連網路可讓您在網路與 Google Cloud之間移動資料。您可以改用其他連線選項,詳情請參閱「選擇網路連線產品」。

IAMResource Manager

適用於內部和外部來源。

Identity and Access Management (IAM) 和 Resource Manager 會限制存取權,並區隔資源。存取權控管和資源階層結構遵循最小權限原則。

Security Command Center

適用於內部和外部來源。

Security Command Center 會集中監控及審查您環境中的安全性發現項目。 Google Cloud

Sensitive Data Protection

適用於內部和外部來源,但掃描方式不同。

Sensitive Data Protection 掃描資料的方式如下:

  • 從 Google Cloud匯入資料時,Sensitive Data Protection 會在擷取期間將機密資料去識別化。Sensitive Data Protection 會根據偵測到的資訊類型或記錄,將結構化和非結構化資料去識別化。
  • 從外部來源匯入資料時,Sensitive Data Protection 會掃描儲存在 BigQuery 中的資料,找出任何未受保護的私密資料。詳情請參閱「使用 Sensitive Data Protection 掃描 BigQuery 資料」。

VPC Service Controls

適用於內部和外部來源,但有不同的邊界。

VPC Service Controls 會設定授權、存取控制項和安全資料交換,建立可隔離服務和資源的安全範圍。這些是周邊裝置:

  • 資料擷取邊界會接受傳入的資料 (批次或串流),並去識別化。獨立的登陸區有助於保護其餘工作負載,避免受到傳入資料影響。
  • 從 Google Cloud匯入資料時,機密資料範圍可以重新識別機密資料,並將其儲存在受限區域。
  • 匯入外部資料時,資料周邊會將加密資料與其他工作負載隔離。
  • 管理範圍會儲存加密金鑰,並定義哪些資料屬於機密資料。

這些邊界旨在保護傳入內容、設定額外的存取權控管和監控措施,隔離機密資料,並將管理作業與資料倉儲中的實際資料分開。控管包括金鑰管理、資料目錄管理和記錄。

機構架構

您可以將機構的資源分組,以便管理資源,並將測試環境與實際工作環境分開。Resource Manager 可讓您依專案、資料夾和機構,以邏輯方式將資源分組。

下圖顯示資源階層,其中包含代表不同環境的資料夾,例如啟動程序、通用、實際工作、非實際工作 (或預先發布) 和開發環境。您會將架構中的大部分專案部署到生產環境資料夾,並將資料管理專案部署到用於管理的通用資料夾。

從 Google Cloud匯入資料時的機構結構

下圖顯示從Google Cloud 匯入資料時的機構結構,使用 terraform-google-secured-data-warehouse 存放區。

內部來源機密資料倉儲的資源階層。

從外部來源匯入資料時的機構結構

下圖顯示使用 terraform-google-secured-data-warehouse-onprem-ingest 存放區從外部來源匯入資料時的機構結構。

外部來源機密資料倉儲的資源階層。

資料夾

您可以使用資料夾,將實際工作環境和控管服務與非實際工作環境和測試環境隔離。下表說明這個架構使用的企業基礎藍圖資料夾。

資料夾 說明

啟動

包含部署企業基礎藍圖所需的資源。

常用符號或字元

包含機構的集中式服務,例如資料治理專案。

正式環境

內含已測試且可供使用的雲端資源專案。在這個架構中,「Production」資料夾包含資料擷取專案和資料相關專案。

非正式環境

包含雲端資源,這些資源正在測試及準備發布。在這個架構中,「Non-production」資料夾包含資料擷取專案和資料相關專案。

開發

內含正在開發雲端資源的專案。在這個架構中,「Development」資料夾包含資料擷取專案和資料相關專案。

您可以變更這些資料夾的名稱,與貴機構的資料夾結構保持一致,但我們建議您維持類似的結構。詳情請參閱企業基礎藍圖

專案

您可以使用專案隔離環境的某些部分。下表說明機構內所需的專案。執行 Terraform 程式碼時,您會建立這些專案。您可以變更這些專案的名稱,但建議維持類似的專案結構。

專案 說明

資料擷取

內部和外部來源的通用專案。

包含接收資料和去識別化機密資料所需的服務。

資料管理

內部和外部來源的通用專案。

包含提供金鑰管理、記錄和資料編目功能的服務。

非機密資料

專案僅供內部來源使用。

包含儲存去識別化資料所需的服務。

機密資料

專案僅供內部來源使用。

內含儲存及重新識別機密資料所需的服務。

資料

專案僅適用於外部來源。

包含儲存資料所需的服務。

除了這些專案之外,環境也必須包含代管 Dataflow Flex Template 工作的專案。串流資料管道必須使用 Flex 範本工作。

將角色和群組對應至專案

您必須授予貴機構中不同使用者群組存取權,讓他們存取構成機密資料倉儲的專案。以下各節說明您在建立專案時,使用者群組和角色指派的架構建議。您可以自訂群組,配合貴機構現有的結構,但建議維持類似的職責劃分和角色指派方式。

資料分析師群組

資料分析師會分析倉儲中的資料。在 terraform-google-secured-data-warehouse-onprem-ingest 存放區中,這個群組可以查看載入資料倉儲的資料,並執行與「加密資料檢視者」群組相同的作業。

下表說明 terraform-google-secured-data-warehouse 存放區中不同專案的群組角色 (僅限內部資料來源)。

專案對應 角色

資料擷取

如要讓資料分析師存取機密資料,請指派下列額外角色:

機密資料

非機密資料

下表說明 terraform-google-secured-data-warehouse-onprem-ingest 存放區中,群組在不同專案中的角色 (僅限外部資料來源)。

指派範圍 角色

資料擷取專案

資料專案

資料政策層級

遮蓋式讀取器 (roles/bigquerydatapolicy.maskedReader)

加密資料檢視者群組 (僅限外部來源)

terraform-google-secured-data-warehouse-onprem-ingest 存放區中的「加密資料檢視者」群組,可透過 Looker Studio 和其他報表工具 (例如 SAP Business Objects),查看 BigQuery 報表資料表中的加密資料。加密資料檢視者群組無法查看加密資料欄中的明文資料。

這個群組需要資料專案中的 BigQuery 使用者 (roles/bigquery.jobUser) 角色。這個群組也需要資料政策層級的「經過遮蓋的讀取者」(roles/bigquerydatapolicy.maskedReader) 角色。

純文字讀取者群組 (僅限外部來源)

terraform-google-secured-data-warehouse-onprem-ingest 存放區中的「Plaintext reader」群組具有呼叫解密使用者定義函式 (UDF) 的必要權限,可檢視純文字資料,以及讀取未遮蓋資料的額外權限。

這個群組必須在資料專案中具備下列角色:

此外,這個群組在 Dataplex Universal Catalog 層級需要「Fine-Grained Reader」(roles/datacatalog.categoryFineGrainedReader) 角色。

資料工程師群組

資料工程師負責設定及維護資料管道和資料倉儲。

下表說明 terraform-google-secured-data-warehouse 存放區中,群組在不同專案中的角色。

作業分數 角色

資料擷取專案

機密資料專案

非機密資料專案

下表說明 terraform-google-secured-data-warehouse-onprem-ingest 存放區中,群組在不同專案中的角色。

指派範圍 角色

資料擷取專案

資料專案

網路管理員群組

網路管理員負責設定網路。通常是網路團隊成員。

網路管理員需要機構層級的下列角色:

安全管理員群組

安全管理員負責管理安全控管機制,例如存取權、金鑰、防火牆規則、VPC Service Controls 和 Security Command Center。

資安管理員必須具備下列機構層級角色:

安全性分析師群組

安全分析師會監控及回應安全事件和機密資料保護發現項目。

安全分析師需要具備下列機構層級角色:

外部來源的群組存取流程範例

以下章節說明使用 terraform-google-secured-data-warehouse-onprem-ingest 存放區從外部來源匯入資料時,兩組的存取流程。

「加密資料檢視者」群組的存取流程

下圖顯示加密資料檢視者群組的使用者嘗試存取 BigQuery 中的加密資料時,會發生什麼情況。

加密資料檢視者群組的流程。

如要在 BigQuery 中存取資料,請按照下列步驟操作:

  1. 加密資料檢視器會在 BigQuery 上執行下列查詢,以存取機密資料:

    SELECT ssn, pan FROM cc_card_table
    
  2. BigQuery 會依下列方式驗證存取權:

    • 使用有效且未過期的 Google Cloud憑證驗證使用者。
    • 使用者身分和要求來源 IP 位址位於 VPC Service Controls 範圍的存取層級或輸入規則允許清單中。
    • IAM 會驗證使用者是否具備適當角色,並授權存取 BigQuery 資料表中的所選加密資料欄。

BigQuery 會以加密格式傳回機密資料。

Plaintext 讀者群組的存取流程

下圖顯示純文字讀取者群組中的使用者嘗試存取 BigQuery 中的加密資料時,會發生什麼情況。

純文字讀者群組的流程。

如要在 BigQuery 中存取資料,請按照下列步驟操作:

  1. 「Plaintext reader」會在 BigQuery 上執行下列查詢,以存取解密格式的機密資料:

    SELECT decrypt_ssn(ssn) FROM cc_card_table
    
  2. BigQuery 會在查詢中呼叫解密使用者定義函式 (UDF),以存取受保護的資料欄。

  3. 驗證存取權的流程如下:

    • IAM 會驗證使用者是否具備適當角色,並授權存取 BigQuery 的解密 UDF。
    • UDF 會擷取用來保護機密資料欄位的封裝資料加密金鑰 (DEK)。
  4. 解密 UDF 會呼叫 Cloud HSM 中的金鑰加密金鑰 (KEK),以解包 DEK。解密 UDF 會使用 BigQuery AEAD 解密函式解密機密資料欄。

  5. 使用者可存取機密資料欄中的純文字資料。

常見安全控管措施

以下各節說明適用於內部和外部來源的控管措施。

資料擷取控制項

如要建立資料倉儲,您必須從其他Google Cloud 來源 (例如資料湖泊)、您的內部部署環境或其他雲端服務轉移資料。您可以透過下列任一方法,將資料移轉至 BigQuery 的資料倉儲:

  • 使用 Cloud Storage 的批次工作。
  • 使用 Pub/Sub 的串流工作。

如要協助保護擷取期間的資料,可以使用用戶端加密、防火牆規則和存取層級政策。擷取程序有時也稱為擷取、轉換、載入 (ETL) 程序

網路和防火牆規則

虛擬私有雲 (VPC) 防火牆規則可控管資料流入安全 perimeter 的情形。您建立防火牆規則,拒絕所有輸出流量,但來自 restricted.googleapis.com 特殊網域名稱的特定 TCP 通訊埠 443 連線除外。restricted.googleapis.com 網域具有下列優點:

  • 當工作負載與 Google API 和服務通訊時,使用私人 Google 存取權有助於縮減網路攻擊面。
  • 確保您只使用支援 VPC Service Controls 的服務。

詳情請參閱設定私人 Google 存取權

使用 terraform-google-secured-data-warehouse 存放區時,您必須為每項 Dataflow 工作設定個別的子網路。不同的子網路可確保去識別化資料與重新識別化資料適當區隔。

資料管道需要您在防火牆中開啟 TCP 連接埠,如各存放區的 dataflow_firewall.tf 檔案所定義。詳情請參閱設定網際網路存取權和防火牆規則

如要禁止資源使用外部 IP 位址,請將「為 VM 執行個體定義允許的外部 IP 位址 (compute.vmExternalIpAccess)」機構政策設為拒絕所有要求。

perimeter 控制項

架構圖所示,您會將資料倉儲的資源放在不同的邊界中。如要允許不同範圍中的服務共用資料,請建立範圍橋接器

範圍橋接可讓受保護的服務要求存取範圍外的資源。這些橋接器會為 terraform-google-secured-data-warehouse 存放區建立下列連線:

  • 他們會將資料擷取專案連結至管理專案,以便在擷取期間進行去識別化。
  • 這些橋樑會連結非機密資料專案和機密資料專案,以便資料分析師要求時,重新識別機密資料。
  • 他們會將機密專案連結至資料管理專案,以便資料分析師提出要求時,重新識別資料。

這些橋接器會為 terraform-google-secured-data-warehouse-onprem-ingest 存放區建立下列連線:

  • 他們會將「資料擷取」專案連結至「資料」專案,以便將資料擷取至 BigQuery。
  • 他們將「資料」專案連結至「資料治理」專案,以便 Sensitive Data Protection 掃描 BigQuery 中未受保護的機密資料。
  • 這些橋樑會將資料擷取專案連結至資料管理專案,以存取記錄、監控和加密金鑰。

除了範圍橋接以外,您也可以使用輸出規則,允許服務範圍保護的資源存取範圍外的資源。在本解決方案中,您會設定輸出規則,以取得位於外部專案 Cloud Storage 中的外部 Dataflow Flex 範本工作。詳情請參閱「從安全範圍外存取 Google Cloud 資源」。

存取政策

為確保只有特定身分 (使用者或服務) 可以存取資源和資料,請啟用 IAM 群組和角色。

如要確保只有特定來源能夠存取您的專案,請為 Google 機構啟用存取權政策。建議您建立存取權政策,指定允許要求的 IP 位址範圍,並只允許特定使用者或服務帳戶提出要求。詳情請參閱存取層級屬性

服務帳戶和存取權控管

服務帳戶是可供用於代表您執行 API 要求的身分, Google Cloud 服務帳戶可確保使用者身分不會直接存取服務。如要允許職責分離,請為特定用途建立具有不同角色的服務帳戶。這些服務帳戶是在每個架構的 data-ingestion 模組和 confidential-data 模組中定義。

對於 terraform-google-secured-data-warehouse 存放區,服務帳戶如下:

  • Dataflow 管道的 Dataflow 控制者服務帳戶,用於去識別化機密資料。
  • Dataflow 管道的 Dataflow 控制者服務帳戶,用於重新識別機密資料。
  • 用來從批次檔案擷取資料的 Cloud Storage 服務帳戶。
  • Pub/Sub 服務帳戶,用於從串流服務擷取資料。
  • Cloud Scheduler 服務帳戶,用於執行批次 Dataflow 工作,建立 Dataflow 管道。

下表列出指派給各個服務帳戶的角色:

服務帳戶 名稱 專案 角色

Dataflow 控制器

這個帳戶用於去識別化。

sa-dataflow-controller

資料擷取

Dataflow 控制器

這個帳戶用於重新識別。

sa-dataflow-controller-reid

機密資料

Cloud Storage

sa-storage-writer

資料擷取

Pub/Sub

sa-pubsub-writer

資料擷取

Cloud Scheduler

sa-scheduler-controller

資料擷取

對於 terraform-google-secured-data-warehouse-onprem-ingest 存放區,服務帳戶如下:

  • Cloud Storage 服務帳戶會執行自動批次資料上傳程序,將資料上傳至擷取儲存空間值區。
  • Pub/Sub 服務帳戶可將資料串流至 Pub/Sub 服務。
  • Dataflow 管道會使用 Dataflow 控制器服務帳戶,轉換 Pub/Sub 中的資料並寫入 BigQuery。
  • Cloud Run 函式服務帳戶會將後續從 Cloud Storage 上傳的批次資料寫入 BigQuery。
  • Storage 上傳服務帳戶可讓 ETL 管道建立物件。
  • ETL 管道可透過 Pub/Sub 寫入服務帳戶,將資料寫入 Pub/Sub。

下表列出指派給各個服務帳戶的角色:

名稱 角色 指派範圍

Dataflow 控制器服務帳戶

資料擷取專案

資料專案

資料管理

Cloud Run functions 服務帳戶

資料擷取專案

資料專案

Storage Upload 服務帳戶

資料擷取專案

Pub/Sub 寫入服務帳戶

資料擷取專案

組織政策

這個架構包含企業基礎藍圖使用的機構政策限制,並新增其他限制。如要進一步瞭解企業基礎藍圖使用的限制,請參閱「組織政策限制」一文。

下表說明 org_policies 模組中為各存放區定義的其他機構政策限制

政策 限制名稱 建議值

限制資源部署至特定實體位置。如需其他值,請參閱值組搭配說明。

gcp.resourceLocations

下列其中一項:

in:us-locations

in:eu-locations

in:asia-locations

停用服務帳戶建立功能

iam.disableServiceAccountCreation

true

為專案中建立的 VM 啟用 OS 登入功能

compute.requireOsLogin

true

根據 IP 位址,限制新轉送規則只能是內部規則

compute.restrictProtocolForwardingCreationForTypes

INTERNAL

定義 Compute Engine 資源可使用的共用虛擬私有雲子網路組合

compute.restrictSharedVpcSubnetworks

projects//regions//s ubnetworks/

請替換為您要架構使用的私有子網路資源 ID。

停用將序列埠輸出記錄寫入至 Cloud Logging 的功能。

compute.disableSerialPortLogging

true

要求使用 CMEK 保護機制 (僅限 terraform-google-secured-data-warehouse-onprem-ingest)

gcp.restrictNonCmekServices

bigquery.googleapis.com

停用服務帳戶金鑰建立功能 (terraform-google-secured-data-warehouse-onprem-ingest only)

disableServiceAccountKeyCreation

為專案中建立的 VM 啟用 OS 登入 (terraform-google-secured-data-warehouse-onprem-ingest only)

compute.requireOsLogin

停用預設服務帳戶的自動角色授予功能 (terraform-google-secured-data-warehouse-onprem-ingest only)

automaticIamGrantsForDefaultServiceAccounts

允許的輸入設定 (Cloud Run 函式) (terraform-google-secured-data-warehouse-onprem-ingest only)

cloudfunctions.allowedIngressSettings

ALLOW_INTERNAL_AND_GCLB

外部資料來源的安全控制項

以下各節說明從外部來源擷取資料時適用的控制項。

已連上加密的「 Google Cloud」

從外部來源匯入資料時,您可以使用 Cloud VPN 或 Cloud Interconnect,保護 Google Cloud和環境之間的所有資料流量。這個企業架構建議使用專屬互連網路,因為專屬互連網路提供直接連線和高處理量,如果您要串流大量資料,這兩項功能就非常重要。

如要允許從環境存取「 Google Cloud 」,您必須在存取層級政策規則中定義允許的 IP 位址。

用戶端加密

將機密資料移至 Google Cloud前,請先在本機加密資料,確保資料在傳輸和靜態時受到保護。您可以使用 Tink 加密程式庫,也可以使用其他加密程式庫。Tink 加密程式庫與 BigQuery AEAD 加密相容,架構會使用這項功能,在匯入資料後解密資料欄層級的加密資料。

Tink 加密程式庫會使用您在本機或 Cloud HSM 產生的 DEK。如要包裝或保護 DEK,可以使用在 Cloud HSM 中產生的 KEK。KEK 是對稱 CMEK 加密金鑰集,安全地儲存在 Cloud HSM 中,並使用 IAM 角色和權限進行管理。

在擷取期間,經過包裝的 DEK 和資料都會儲存在 BigQuery 中。BigQuery 包含兩個資料表:一個用於資料,另一個用於包裝的 DEK。分析師需要查看機密資料時,BigQuery 可以使用 AEAD 解密,透過 KEK 將 DEK 解除包裝,並解密受保護的資料欄。

此外,使用 Tink 的用戶端加密功能可將 BigQuery 中的機密資料欄加密,進一步保護資料。這項架構使用下列 Cloud HSM 加密金鑰:

  • 用於擷取程序的 CMEK 金鑰,也用於 Pub/Sub、串流的 Dataflow 管道、Cloud Storage 批次上傳,以及後續批次上傳的 Cloud Run 函式構件。
  • 由 Cloud HSM 包裝的加密編譯金鑰,用於加密您網路上使用 Tink 的資料。
  • 資料專案中 BigQuery 倉儲的 CMEK 金鑰。

您指定 CMEK 位置,決定金鑰的儲存位置和可存取位置。請務必確認 CMEK 與資源位於相同位置。根據預設,CMEK 每 30 天會輪替一次。

如果貴機構的法規遵循義務要求您在 Google Cloud外部管理金鑰,可以啟用 Cloud External Key Manager。如果使用外部金鑰,您必須負責金鑰管理活動,包括金鑰輪替。

遮蓋動態資料

如要大規模分享及套用資料存取權政策,您可以設定動態資料遮蓋。動態資料遮蓋功能可讓現有查詢根據下列條件,自動遮蓋資料欄資料:

  • 在查詢執行階段套用至資料欄的遮蓋規則。
  • 指派給執行查詢的使用者的角色。如要存取未遮蓋的資料欄資料,資料分析師必須具備細部讀取者角色。

如要定義 BigQuery 中資料欄的存取權,請建立政策標記。舉例來說,獨立範例中建立的分類會為包含不得公開資料 (例如信用額度) 的資料欄建立 1_Sensitive 政策標記。系統會對這些資料欄套用預設資料遮蓋規則,隱藏資料欄的值。

凡是未標記的內容,凡是有權存取資料倉儲的使用者都能查看。這些存取權控管機制可確保即使資料已寫入 BigQuery,使用者仍須獲得明確授權,才能讀取敏感欄位中的資料。

資料欄層級加密和解密

資料欄層級加密功能可讓您在更精細的層級加密 BigQuery 中的資料。您不必加密整個資料表,只要在 BigQuery 中選取含有機密資料的資料欄,系統就會只加密這些資料欄。BigQuery 使用 AEAD 加密和解密函式建立金鑰組,其中包含加密和解密金鑰。這些金鑰隨後會用於加密及解密資料表中的個別值,以及輪替金鑰組內的金鑰。資料欄層級加密功能可對 BigQuery 中的加密資料提供雙重存取權控管,因為使用者必須同時具備資料表和加密金鑰的權限,才能以明文讀取資料。

透過 Sensitive Data Protection 剖析 BigQuery 資料

資料剖析器可協助您找出 BigQuery 資料表中機密和高風險資料的存放位置。資料剖析器會自動掃描及分析整個機構的所有 BigQuery 資料表和資料欄,包括所有資料夾和專案。資料剖析工具接著會輸出指標,例如預測的 infoTypes、評估得出的資料風險與機密程度,以及資料表的相關中繼資料。您可以根據這些深入分析結果,做出明智決策,妥善保護、共用及使用自有資料。

內部資料來源的安全控管機制

以下各節說明從Google Cloud 來源擷取資料時適用的控制項。

擷取資料時的金鑰管理和加密

無論是透過 Cloud Storage 或 Pub/Sub 擷取資料,系統都會使用 Cloud HSM 管理 CMEK。您可以使用 CMEK 金鑰,在擷取資料時保護資料。Sensitive Data Protection 會使用您設定的偵測器加密機密資料,進一步保護資料。

如要擷取資料,請使用下列加密金鑰:

  • 用於擷取程序的 CMEK 金鑰,也會由 Dataflow 管道和 Pub/Sub 服務使用。
  • Cloud HSM 為資料去識別化程序包裝的加密金鑰,用於 Sensitive Data Protection。
  • 兩個 CMEK 金鑰,一個用於非機密資料專案中的 BigQuery 倉儲,另一個用於機密資料專案中的倉儲。詳情請參閱金鑰管理

您指定 CMEK 位置,決定金鑰的儲存地理位置,以及可供存取的位置。請務必確認 CMEK 與資源位於相同位置。根據預設,CMEK 每 30 天會輪替一次。

如果貴機構的法規遵循義務要求您從 Google Cloud外部管理自己的金鑰,可以啟用 Cloud EKM。如果您使用外部金鑰,則必須負責金鑰管理活動,包括金鑰輪替。

資料去識別化

您可以在擷取階段使用 Sensitive Data Protection 服務,對結構化和非結構化資料進行去識別化。如果是結構化資料,您可以使用以欄位為準的記錄轉換,將資料去識別化。如需這個方法的範例,請參閱 /examples/de_identification_template/ 資料夾。這個範例會檢查結構化資料中是否有任何信用卡號碼和卡片 PIN 碼。對於非結構化資料,您可以使用資訊類型來去識別化資料。

如要將標示為機密的資料去識別化,請使用 Sensitive Data Protection 和 Dataflow 管道將資料權杖化。這個管道會從 Cloud Storage 取得資料、處理資料,然後將資料傳送至 BigQuery 資料倉儲。

如要進一步瞭解資料去識別化程序,請參閱資料治理

資料欄層級存取權控管

為保護機密資料,您可以使用 BigQuery 倉儲中特定資料欄的存取權控制項。如要存取這些資料欄中的資料,資料分析師必須具備精細讀取者角色。

如要定義 BigQuery 中資料欄的存取權,請建立政策標記。舉例來說,bigquery-confidential-data 範例模組中的 taxonomy.tf 檔案會建立下列標記:

  • 包含極度私密資訊 (例如信用卡號碼) 的資料欄 3_Confidential 政策標記。可存取這個標記的使用者,也能存取標記 2_Private1_Sensitive 政策標記的資料欄。
  • 如果資料欄包含個人私密識別資訊 (PII),例如某人的名字,系統會顯示 2_Private 政策標記。有權存取這個代碼的使用者,也能存取標有 1_Sensitive 政策標記的資料欄。使用者無法存取標有 3_Confidential 政策標記的資料欄。
  • 如果資料欄包含不得公開的資料 (例如信用額度),請使用 1_Sensitive 政策標記。可存取這個代碼的使用者,無法存取標記 2_Private3_Confidential 政策標記的資料欄。

凡是有權存取資料倉儲的使用者,都能查看未標記的任何內容。

這些存取權控管機制可確保即使資料重新識別,使用者也必須獲得明確授權才能讀取資料。

注意:您可以使用預設定義執行範例。如需更多最佳做法,請參閱「在 BigQuery 中使用政策標記的最佳做法」。

具備受限角色的服務帳戶

您必須限制機密資料專案的存取權,只允許授權使用者查看機密資料。如要這麼做,請建立服務帳戶,並指派「服務帳戶使用者 (roles/iam.serviceAccountUser)」角色,授權使用者必須模擬該角色。服務帳戶模擬可協助使用者使用服務帳戶,不必下載服務帳戶金鑰,進而提升專案的整體安全性。模擬作業會建立短期權杖,授權使用者只要擁有服務帳戶憑證建立者 (roles/iam.serviceAccountTokenCreator) 角色,即可下載權杖。

儲存空間和重新識別化的金鑰管理與加密

您可以管理機密資料的個別 CMEK 金鑰,以便重新識別資料。您可以使用 Cloud HSM 保護金鑰。如要重新識別資料,請使用下列鍵:

  • Dataflow 管道用於重新識別程序的 CMEK 金鑰。
  • Sensitive Data Protection 用來去識別資料的原始密碼編譯金鑰。
  • 機密資料專案中 BigQuery 倉儲的 CMEK 金鑰。

如「擷取資料的金鑰管理和加密」一文所述,您可以指定 CMEK 位置和輪替週期。如果貴機構有這項需求,您可以使用 Cloud EKM。

作業

您可以啟用記錄功能和 Security Command Center Premium 或 Enterprise 級功能,例如安全狀態分析和 Event Threat Detection。這些控制項可協助您執行下列操作:

  • 監控誰在存取您的資料。
  • 確保已妥善進行稽核。
  • 針對設定錯誤的雲端資源產生調查結果
  • 協助事件管理和作業團隊因應可能發生的問題。

資料存取透明化控管機制

資料存取透明化控管機制會在Google 人員要求存取您的資料時,提供即時通知。只要有人存取內容,系統就會產生資料存取透明化控管機制記錄,且只有具備正當業務理由 (例如支援案件) 的 Google 人員才能取得存取權。

記錄

為協助您符合稽核要求並深入瞭解專案,請使用要追蹤的服務資料記錄設定 Google Cloud Observability。存放區中的 centralized-logging 模組會設定下列最佳做法:

專案中的所有服務記錄都必須包含資料讀取和寫入的相關資訊,以及管理員讀取的內容。如需其他記錄最佳做法,請參閱「偵測性控制」。

警報和監控

部署架構後,您可以設定快訊,在可能發生安全性事件時通知安全營運中心 (SOC)。舉例來說,您可以利用快訊,在 IAM 權限變更時通知安全分析師。如要進一步瞭解如何設定 Security Command Center 快訊,請參閱「設定發現項目通知」。如要取得 Security Command Center 未發布的其他快訊,您可以使用 Cloud Monitoring 設定快訊

其他安全性考量

除了本文所述的安全控管措施,您也應審查及管理與使用這項解決方案重疊及互動的主要領域,以確保安全及降低風險。其中包括:

  • 用於設定、部署及執行 Dataflow 工作和 Cloud Run 函式的程式碼安全性。
  • 您要搭配這項解決方案使用的資料分類分類法。
  • 產生及管理加密金鑰。
  • 您在資料倉儲中儲存及分析的資料集內容、品質和安全性。
  • 部署解決方案的整體環境,包括下列項目:
    • 您連線至這項解決方案的網路設計、區隔和安全性。
    • 貴機構 IAM 控制項的安全性和管理。
    • 您授予基礎架構存取權的參與者,以及可存取該基礎架構中儲存及管理資料的參與者,其驗證和授權設定。

整合所有內容

如要實作本文所述的架構,請按照下列步驟操作:

  1. 決定要使用企業基礎藍圖部署架構,還是自行部署。如果您選擇不部署企業基礎藍圖,請確保環境中已設有類似的安全基準。
  2. 如要從外部來源匯入資料,請設定與網路的專屬互連網路連線
  3. 詳閱 terraform-google-secured-data-warehouseREADMEterraform-google-secured-data-warehouse-onprem-ingestREADME,確認符合所有必要條件。
  4. 確認使用者身分具備貴機構「Development」資料夾的「服務帳戶使用者」(roles/iam.serviceAccountUser) 和「服務帳戶憑證建立者」(roles/iam.serviceAccountTokenCreator) 角色 (如「機構架構」說明所述)。如果您沒有可用於測試的資料夾,請建立資料夾設定相關存取權

  5. 記下帳單帳戶 ID、機構的顯示名稱、測試資料夾或示範資料夾的資料夾 ID,以及下列使用者群組的電子郵件地址:

    • 資料分析師
    • 加密資料檢視器
    • 純文字讀取器
    • 資料工程師
    • 網路管理員
    • 安全性管理員
    • 安全性分析師
  6. 建立專案。如需必須啟用的 API 清單,請參閱 README。

  7. 建立 Terraform 的服務帳戶,並為所有專案指派適當的角色。

  8. 設定存取權控管政策。

  9. 對於使用 terraform-google-secured-data-warehouse 存放區的 Google Cloud 資料來源,請在測試環境中部署逐步操作指南,查看實際運作的解決方案。在測試過程中,請考慮下列事項:

    1. 將自己的範例資料新增至 BigQuery 倉儲。
    2. 與企業中的資料分析師合作,測試他們是否能存取機密資料,以及是否能以預期的方式,透過 BigQuery 與資料互動。
  10. 如果是使用 terraform-google-secured-data-warehouse-onprem-ingest 存放區的外部資料來源,請在測試環境中部署解決方案:

    1. 複製並執行 Terraform 指令碼,在Google Cloud中設定環境。
    2. 在網路上安裝 Tink 加密程式庫

    3. 設定應用程式預設憑證,以便在網路上執行 Tink 程式庫。

    4. 使用 Cloud KMS 建立加密金鑰

    5. 使用 Tink 產生加密鍵集

    6. 使用下列其中一種方法,透過 Tink 加密資料:

    7. 使用串流或批次上傳功能,將加密資料上傳至 BigQuery。

  11. 如果是外部資料來源,請確認授權使用者可以使用 BigQuery AEAD 解密函式,從 BigQuery 讀取未加密的資料。舉例來說,請執行下列建立解密函式的指令:

    執行建立檢視區塊的查詢:

    CREATE OR REPLACE VIEW `{project_id}.{bigquery_dataset}.decryption_view` AS
    
    SELECT
     Card_Type_Code,
     Issuing_Bank,
     Card_Number,
     `bigquery_dataset.decrypt`(Card_Number) AS Card_Number_Decrypted
    FROM `project_id.dataset.table_name`
    

    從檢視區塊執行 SELECT 查詢:

    SELECT
      Card_Type_Code,
      Issuing_Bank,
      Card_Number,
      Card_Number_Decrypted
    FROM
    `{project_id}.{bigquery_dataset}.decrypted_view`
    

    如需其他查詢和使用案例,請參閱「使用 Cloud KMS 進行資料欄層級加密」。

  12. 使用 Security Command Center 掃描新建立的專案,確認是否符合法規遵循規定

  13. 將架構部署到實際工作環境。

後續步驟

  • 請參閱企業基礎藍圖,瞭解如何建立安全環境。
  • 如要查看架構詳細資料,請參閱內部資料來源的 Terraform 設定 README (terraform-google-secured-data-warehouse 存放區),或外部資料來源的 Terraform 設定 README (terraform-google-secured-data-warehouse-onprem-ingest 存放區)。