許多機構會部署用於儲存機密資料的資料倉儲,以便用於各種業務用途進行資料分析。本文件適用於使用 BigQuery 部署及保護資料倉儲的資料工程師和安全性管理員。這是藍圖的一部分,藍圖包含下列項目:
- 兩個 GitHub 存放區 (
terraform-google-secured-data-warehouse
和terraform-google-secured-data-warehouse-onprem-ingest
),其中包含 Terraform 設定和指令碼。Terraform 設定會在 Google Cloud 中設定環境,支援儲存機密資料的資料倉儲系統。 - 本藍圖 (本文件) 的架構、設計和安全控制措施指南。
- 部署範例環境的操作說明。
本文將說明以下事項:
- 您可以使用這些架構和 Google Cloud 服務,在實際工作環境中保護資料倉儲。
- 從外部網路 (例如內部部署環境) 將資料匯入 BigQuery 的最佳做法。
在Google Cloud中建立、部署及操作資料倉儲時的資料治理最佳做法,包括:
資料去識別化
機密資料的差異化處理
資料欄層級加密
資料欄層級存取權控管
本文件假設您已按照企業基礎架構藍圖所述,設定一組基礎安全控制措施。這有助於在現有安全控管機制上加層額外控管機制,以保護資料倉儲中的機密資料。
資料倉儲用途
此藍圖支援下列用途:
- 使用
terraform-google-secured-data-warehouse
存放區將資料從 Google Cloud 匯入 BigQuery 資料倉儲 - 使用
terraform-google-secured-data-warehouse-onprem-ingest
存放區,將資料從內部部署環境或其他雲端匯入 BigQuery 資料倉儲
總覽
企業可透過 BigQuery 等資料倉儲分析業務資料,取得洞察資料。分析師可存取儲存在資料倉儲中的業務資料,以便產生洞察資料。如果資料倉儲包含機密資料,您必須採取措施,確保在儲存、傳輸或分析期間,業務資料的安全性、機密性、完整性和可用性。在這個藍圖中,您將執行下列操作:
- 從外部資料來源匯入資料時,請將位於 Google Cloud 以外(例如在內部環境中) 的資料加密,然後匯入 Google Cloud。
- 設定控管機制,協助保護機密資料的存取權。
- 設定有助於保護資料管道的控管機制。
- 為不同角色設定適當的職責分工。
- 從位於 Google Cloud 的其他來源匯入資料時(也稱為內部資料來源),請設定範本來找出並移除機密資料的識別資訊。
- 設定適當的安全控制項和記錄功能,以保護機密資料。
- 使用資料分類、政策標記、動態資料遮罩和資料欄層級加密功能,限制資料倉儲中特定欄的存取權。
架構
如要建立機密資料倉儲,您必須安全地匯入資料,然後將資料儲存在 VPC Service Controls 範圍內。
從 Google Cloud匯入資料時的架構
下圖顯示匯入資料時,系統如何將擷取的資料分類、去識別化及儲存,前提是您使用 terraform-google-secured-data-warehouse
存放區從 Google Cloud 匯入來源資料。並說明如何根據需求重新識別機密資料以供分析。
從外部來源匯入資料時的架構
下圖顯示使用 terraform-google-secured-data-warehouse-onprem-ingest
存放區,將資料從地端部署環境或其他雲端匯入 BigQuery 倉儲時,資料的擷取和儲存方式。
Google Cloud 服務和功能
這些架構會結合使用下列 Google Cloud 服務和功能:
服務或功能 | 說明 |
---|---|
適用於內部和外部資料來源。不過,您可以使用不同的儲存空間選項,如下所示:
BigQuery 會使用各種安全防護機制來保護內容,包括存取權控管、機密資料的資料欄層級安全防護機制,以及資料加密。 |
|
搭配 Cloud HSM 使用 Cloud Key Management Service (Cloud KMS) |
適用於內部和外部來源。不過,外部資料來源還有其他用途。 Cloud HSM 是雲端硬體安全性模組 (HSM) 服務,可用於託管金鑰加密金鑰 (KEK)。從外部來源匯入資料時,您可以使用 Cloud HSM 產生加密金鑰,然後再將網路中的資料加密,再傳送至 Google Cloud。 |
適用於內部和外部來源。 Cloud Logging 會收集所有來自 Google Cloud 服務的記錄,供分析和調查工具儲存及擷取。 |
|
適用於內部和外部來源。 Cloud Monitoring 會收集並儲存有關 Google Cloud 服務的效能資訊和指標。 |
|
僅適用於外部資料來源。 Cloud Run 函式會由 Cloud Storage 觸發,並將 Cloud Storage 上傳至擷取值區的資料寫入 BigQuery。 |
|
適用於內部和外部來源。 Cloud Storage 和 Pub/Sub 會接收以下資料:
|
|
適用於內部和外部來源。 BigQuery 資料剖析器會自動掃描整個機構 (包括所有資料夾和專案) 中的所有 BigQuery 資料表和資料欄,找出機密資料。 |
|
Dataflow 管道 |
適用於內部和外部來源,但有不同的管道。 Dataflow 管道會匯入資料,如下所示:
|
適用於內部和外部來源。 Dataplex Universal Catalog 會在擷取期間,自動使用中繼資料 (也稱為政策標記) 將機密資料分類。Dataplex Universal Catalog 也會使用中繼資料來管理機密資料的存取權。如要控管資料倉儲內的資料存取權,請將政策標記套用至包含機密資料的資料欄。 |
|
僅適用於外部資料來源。 專屬互連網路可讓您在網路和 Google Cloud之間移動資料。您可以使用其他連線選項,詳情請參閱「選擇網路連線產品」一文。 |
|
適用於內部和外部來源。 Identity and Access Management (IAM) 和 Resource Manager 可限制存取權和資源區隔。存取權控管和資源階層會遵循最小權限原則。 |
|
適用於內部和外部來源。 Security Command Center 會在集中位置監控及查看 Google Cloud環境中的安全性發現項目。 |
|
適用於內部和外部來源,但會執行不同的掃描作業。 Sensitive Data Protection 會掃描資料,如下所示:
|
|
適用於內部和外部來源,但有不同的邊界。 VPC Service Controls 會建立安全範圍,藉由設定授權、存取控制和安全資料交換,隔離服務和資源。周邊如下:
這些邊界旨在保護傳入的內容,透過設定額外的存取控制項和監控功能來隔離機密資料,並將倉庫中的實際資料與控管區隔開來。您的治理措施包括金鑰管理、資料目錄管理和記錄。 |
機構架構
您可以將機構的資源分組,以便管理這些資源,並將測試環境與實際工作環境區隔開來。Resource Manager 可讓您按照邏輯將資源依專案、資料夾和機構分組。
下圖顯示資源階層,其中包含代表不同環境的資料夾,例如 Bootstrap、一般、實際工作、非實際工作 (或稱為階段) 和開發。您可以將架構中的大部分專案部署至正式環境資料夾,並將資料管理專案部署至用於管理的共用資料夾。
從 Google Cloud匯入資料時的機構結構
下圖顯示使用 terraform-google-secured-data-warehouse
存放區從Google Cloud 匯入資料時的組織結構。
從外部來源匯入資料時的組織結構
下圖顯示使用 terraform-google-secured-data-warehouse-onprem-ingest
存放區從外部來源匯入資料時的組織結構。
資料夾
您可以使用資料夾,將實際工作環境和管理服務與非實際工作環境和測試環境區隔開來。下表說明這個架構所使用的企業基礎架構藍圖資料夾。
資料夾 | 說明 |
---|---|
啟動 |
包含部署企業基礎架構藍圖所需的資源。 |
常用符號或字元 |
包含組織的集中式服務,例如資料治理專案。 |
生產 |
包含已測試並可供使用的雲端資源專案。在這個架構中,「Production」資料夾包含資料攝入專案和資料相關專案。 |
非正式環境 |
包含含有雲端資源的專案,這些資源正在接受測試,並準備發布。在這個架構中,「非正式環境」資料夾包含資料攝入專案和資料相關專案。 |
開發 |
包含含有正在開發的雲端資源的專案。在這個架構中,開發資料夾包含資料攝入專案和資料相關專案。 |
您可以變更這些資料夾的名稱,以符合貴機構的資料夾結構,但我們建議您維持類似的結構。詳情請參閱企業基礎藍圖。
專案
您可以使用專案隔離環境的某些部分。下表說明機構內需要的專案。您在執行 Terraform 程式碼時會建立這些專案。您可以變更這些專案的名稱,但建議您維持類似的專案結構。
專案 | 說明 |
---|---|
資料擷取 |
內部和外部來源的共同專案。 包含接收資料和去識別機密資料所需的服務。 |
資料管理 |
內部和外部來源的共同專案。 包含提供金鑰管理、記錄和資料目錄功能的服務。 |
非機密資料 |
僅供內部來源專案使用。 包含儲存已去識別化資料所需的服務。 |
機密資料 |
僅供內部來源專案使用。 包含儲存及重新識別機密資料所需的服務。 |
資料 |
僅限外部來源專案。 包含儲存資料所需的服務。 |
除了這些專案之外,環境也必須包含可代管 Dataflow Flex 範本工作專案。串流資料管道需要 Flex 範本工作。
將角色和群組對應至專案
您必須將機密資料倉儲的專案存取權授予貴機構中的不同使用者群組。以下各節將說明您在建立的專案中,針對使用者群組和角色指派的架構建議。您可以自訂群組,以符合貴機構現有的結構,但建議您維持類似的職責分工和角色指派。
資料分析師群組
資料分析師會分析倉儲中的資料。在 terraform-google-secured-data-warehouse-onprem-ingest
存放區中,這個群組可查看資料載入資料倉儲後的資料,並執行與加密資料檢視器群組相同的作業。
下表說明群組在 terraform-google-secured-data-warehouse
存放區的不同專案中扮演的角色 (僅限內部資料來源)。
專案對應 | 角色 |
---|---|
資料擷取 |
需要存取機密資料的資料分析師可使用的其他角色: |
機密資料 |
|
非機密資料 |
下表說明 terraform-google-secured-data-warehouse-onprem-ingest
存放區 (僅限外部資料來源) 的不同專案中,群組的角色。
作業範圍 | 角色 |
---|---|
資料擷取專案 |
|
資料專案 |
|
資料政策層級 |
加密資料檢視者群組 (僅限外部來源)
terraform-google-secured-data-warehouse-onprem-ingest
存放區中的「Encrypted data viewer」群組可透過 Looker Studio 和其他報表工具 (例如 SAP Business Objects) 查看 BigQuery 報表資料表中的加密資料。加密資料檢視器群組無法查看加密資料欄中的明文資料。
這個群組需要資料專案中的 BigQuery 使用者 (roles/bigquery.jobUser
) 角色。這個群組也需要具備資料政策層級的經過遮蓋的讀取者 (roles/bigquerydatapolicy.maskedReader
) 角色。
明文讀取者群組 (僅限外部來源)
terraform-google-secured-data-warehouse-onprem-ingest
存放區中的純文字讀取器群組具有必要的權限,可呼叫解密使用者定義函式 (UDF) 來查看純文字資料,以及讀取未遮罩資料的額外權限。
這個群組需要在資料專案中具備下列角色:
- BigQuery 使用者 (
roles/bigquery.user
) - BigQuery 使用者 (
roles/bigquery.jobUser
) - Cloud KMS Viewer (
roles/cloudkms.viewer
)
此外,這個群組需要在 Dataplex Universal Catalog 層級中具備 精細讀取者 (roles/datacatalog.categoryFineGrainedReader
) 角色。
資料工程師群組
資料工程師會設定及維護資料管道和資料倉儲。
下表說明 terraform-google-secured-data-warehouse
存放區的不同專案中,群組的角色。
作業分數 | 角色 |
---|---|
資料擷取專案 |
|
機密資料專案 |
|
非機密資料專案 |
下表說明群組在 terraform-google-secured-data-warehouse-onprem-ingest
存放區的不同專案中的角色。
網路管理員群組
網路管理員會設定網路。通常是網路團隊的成員。
網路管理員需要在機構層級具備下列角色:
安全性管理員群組
安全性管理員會管理安全性控管機制,例如存取權、金鑰、防火牆規則、VPC Service Controls 和 Security Command Center。
安全性管理員需要在機構層級具備下列角色:
- Access Context Manager 管理員 (
roles/accesscontextmanager.policyAdmin
) - Cloud Asset Viewer (
roles/cloudasset.viewer
) - Cloud KMS 管理員 (
roles/cloudkms.admin
) - Compute Security Admin (
roles/compute.securityAdmin
) - 資料目錄管理員 (
roles/datacatalog.admin
) - 資料遺失防護管理員 (
roles/dlp.admin
) - Logging Admin (
roles/logging.admin
) - 機構管理員 (
roles/orgpolicy.policyAdmin
) - 安全性管理員 (
roles/iam.securityAdmin
)
安全分析師群組
安全分析人員會監控並回應安全事件和機密資料保護發現項目。
安全分析師需要在機構層級擁有下列角色:
- Access Context Manager Reader (
roles/accesscontextmanager.policyReader
) - Compute Network Viewer (
roles/compute.networkViewer
) - 資料目錄檢視器 (
roles/datacatalog.viewer
) - Cloud KMS Viewer (
roles/cloudkms.viewer
) - 記錄檢視器 (
roles/logging.viewer
) - 機構政策檢視器 (
roles/orgpolicy.policyViewer
) - Security Center 管理員檢視器 (
roles/securitycenter.adminViewer
) - Security Center 檢測結果編輯器(
roles/securitycenter.findingsEditor
) - 下列 Security Command Center 角色之一:
外部來源的群組存取流程範例
以下各節說明使用 terraform-google-secured-data-warehouse-onprem-ingest
存放區從外部來源匯入資料時,兩個群組的存取流程。
加密資料檢視者群組的存取流程
下圖顯示當加密資料檢視者群組的使用者嘗試存取 BigQuery 中的加密資料時,會發生什麼情況。
存取 BigQuery 資料的步驟如下:
加密資料檢視器會在 BigQuery 上執行下列查詢,以存取機密資料:
SELECT ssn, pan FROM cc_card_table
BigQuery 會以以下方式驗證存取權:
- 使用者可以使用有效且未過期的 Google Cloud憑證完成驗證。
- 使用者身分和要求來源的 IP 位址,是 VPC Service Controls 範圍內存取層級或輸入規則的許可清單一部分。
- IAM 會驗證使用者是否具備適當角色,以及是否獲授權存取 BigQuery 資料表中所選加密資料欄。
BigQuery 會以加密格式傳回機密資料。
純文字讀者群組的存取流程
下圖顯示當純文字讀取群組的使用者嘗試存取 BigQuery 中的加密資料時,會發生什麼情況。
存取 BigQuery 資料的步驟如下:
純文字讀取器會在 BigQuery 上執行下列查詢,以解密格式存取機密資料:
SELECT decrypt_ssn(ssn) FROM cc_card_table
BigQuery 會在查詢中呼叫解密的使用者定義函式 (UDF),以存取受保護的資料欄。
驗證存取權的方式如下:
- IAM 會驗證使用者是否具備適當的角色,以及是否獲授權存取 BigQuery 上的解密 UDF。
- UDF 會擷取用於保護機密資料欄的已包裝資料加密金鑰 (DEK)。
解密 UDF 會呼叫 Cloud HSM 中的金鑰加密金鑰 (KEK),以解開 DEK。解密 UDF 會使用 BigQuery AEAD 解密函式來解密敏感資料欄。
使用者可存取機密資料欄中的明文資料。
常見的安全防護措施
以下各節將說明適用於內部和外部來源的控管措施。
資料擷取控制項
如要建立資料倉儲,您必須從其他Google Cloud 來源 (例如資料湖泊)、您的內部環境或其他雲端轉移資料。您可以使用下列任一選項,將資料轉移至 BigQuery 上的資料倉儲:
- 使用 Cloud Storage 的批次工作。
- 使用 Pub/Sub 的串流工作。
為在擷取期間保護資料,您可以使用用戶端加密、防火牆規則和存取層級政策。擷取程序有時也稱為擷取、轉換、載入 (ETL) 程序。
網路和防火牆規則
虛擬私有雲 (VPC) 防火牆規則可控管資料流入範圍的情況。您建立的防火牆規則會拒絕所有輸出連線,但 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 位址,請將「Define allowed external IPs for VM instances (compute.vmExternalIpAccess
)」機構政策設為拒絕所有。
周邊控制
如架構圖表所示,您可以將資料倉儲的資源放入不同的範圍。如要讓不同範圍的服務共用資料,您可以建立重疊範圍橋接。
範圍橋接可讓受保護的服務針對範圍外的資源提出要求。這些橋接會為 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 位址範圍,並只允許特定使用者或服務帳戶提出要求。詳情請參閱「存取層級屬性」。
服務帳戶和存取權控管
服務帳戶是可供 Google Cloud 用於代表您執行 API 要求的身分,服務帳戶可確保使用者身分無法直接存取服務。為確保職務分離,您可以建立具有不同角色的服務帳戶,用於特定用途。這些服務帳戶是在 data-ingestion
模組和各架構的 confidential-data
模組中定義。
對於 terraform-google-secured-data-warehouse
存放區,服務帳戶如下:
- 用於 Dataflow 管道 (用於移除機密資料的識別資訊) 的 Dataflow 控管者服務帳戶。
- 針對重新識別機密資料的 Dataflow 管道,所需的 Dataflow 控制器服務帳戶。
- 可從批次檔案擷取資料的 Cloud Storage 服務帳戶。
- 擷取串流服務資料的 Pub/Sub 服務帳戶。
- 用來執行建立 Dataflow 管道的批次 Dataflow 工作的 Cloud Scheduler 服務帳戶。
下表列出指派給每個服務帳戶的角色:
服務帳戶 | 名稱 | 專案 | 角色 |
---|---|---|---|
Dataflow 控制器 這個帳戶用於去識別化。 |
|
資料擷取 |
|
Dataflow 控制器 這個帳戶用於重新識別。 |
|
機密資料 |
|
Cloud Storage |
|
資料擷取 |
|
Pub/Sub |
|
資料擷取 |
|
Cloud Scheduler |
|
資料擷取 |
對於 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 管道建立物件。
- Pub/Sub 寫入服務帳戶可讓 ETL 管道將資料寫入 Pub/Sub。
下表列出指派給每個服務帳戶的角色:
名稱 | 角色 | 指派範圍 |
---|---|---|
Dataflow 控管者服務帳戶 |
|
資料擷取專案 |
資料專案 |
||
資料管理 |
||
Cloud Run functions 服務帳戶 |
資料擷取專案 |
|
資料專案 |
||
Storage 上傳服務帳戶 |
資料擷取專案 |
|
Pub/Sub 寫入服務帳戶 |
資料擷取專案 |
機構政策
這個架構包含企業基礎結構藍圖使用的機構政策限制,並新增其他限制。如要進一步瞭解企業基礎架構藍圖使用的限制,請參閱「組織政策限制」。
下表說明 org_policies
模組針對各個存放區定義的額外組織政策限制:
政策 | 限制名稱 | 建議值 |
---|---|---|
|
下列任一項目:
|
|
|
|
|
|
|
|
限制新轉送規則僅限於內部,並依據 IP 位址。 |
|
|
|
請將這段程式碼替換為您要讓架構使用的私人子網路資源 ID。 |
|
|
|
|
要求使用 CMEK 保護 (僅限 |
|
|
停用服務帳戶金鑰建立功能 ( |
|
是 |
為在專案中建立的 VM 啟用 OS 登入功能 ( |
|
是 |
停用預設服務帳戶的自動角色授予功能 ( |
|
是 |
允許的輸入設定 (Cloud Run 函式)
( |
|
|
外部資料來源的安全性控制項
以下各節將說明從外部來源擷取資料時適用的控制項。
已連上加密的 Google Cloud
從外部來源匯入資料時,您可以使用 Cloud VPN 或 Cloud Interconnect,保護在 Google Cloud與環境之間傳輸的所有資料。這個企業架構建議使用專屬互連網路,因為它提供直接連線和高處理量,這對串流大量資料來說非常重要。
如要允許從環境存取 Google Cloud ,您必須在存取層級政策規則中定義許可清單 IP 位址。
用戶端加密
將機密資料移至 Google Cloud之前,請先在本機加密資料,以便保護靜態資料和傳輸中的資料。您可以使用 Tink 加密程式庫,也可以使用其他加密程式庫。Tink 加密程式庫與 BigQuery AEAD 加密功能相容,後者會在匯入資料後,使用此架構解密資料欄層級的加密資料。
Tink 加密程式庫會使用 DEK,您可以在本機或 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 中的加密資料提供雙重存取權控管機制,因為使用者必須同時具備資料表和加密金鑰的權限,才能讀取明文資料。
適用於 BigQuery 的資料剖析器 (含機密資料保護功能)
資料剖析器可協助您找出 BigQuery 資料表中機密和高風險資料的位置。資料剖析器會自動掃描並分析整個機構的所有 BigQuery 資料表和資料欄,包括所有資料夾和專案。資料剖析器接著會輸出指標,例如預測的 infoTypes、評估的資料風險與機密程度,以及資料表相關中繼資料。您可以運用這些洞察資料,妥善保護、共用及使用自有資料。
內部資料來源的安全控管機制
以下各節說明從Google Cloud 來源擷取資料時適用的控制項。
擷取資料時的金鑰管理和加密
兩種擷取選項 (Cloud Storage 或 Pub/Sub) 都會使用 Cloud HSM 管理 CMEK。您可以使用 CMEK 金鑰,在擷取資料期間保護資料。Sensitive Data Protection 會使用您設定的偵測器加密機密資料,進一步保護您的資料。
如要擷取資料,請使用下列加密金鑰:
- 擷取程序的 CMEK 金鑰,Dataflow 管道和 Pub/Sub 服務也會使用這個金鑰。
- 使用 Sensitive Data Protection 進行資料去識別程序時,由 Cloud HSM 包裝的加密編譯金鑰。
- 兩個 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_Private
或1_Sensitive
政策標記的資料欄。2_Private
政策標記:適用於含有個人識別資訊 (PII) 資訊 (例如姓名) 的資料欄。可存取此標記的使用者,也能存取標有1_Sensitive
政策標記的資料欄。使用者無法存取標有3_Confidential
政策標記的資料欄。1_Sensitive
政策標記:適用於包含無法公開的資料 (例如信用額度) 的資料欄。有權存取此標記的使用者無法存取標有2_Private
或3_Confidential
政策標記的資料欄。
凡是未標記的項目,所有有權存取資料倉儲的使用者都能存取。
這些存取權控管機制可確保即使資料已重新識別,仍須明確授予使用者存取權,才能讀取資料。
注意:您可以使用預設定義來執行範例。如需更多最佳做法,請參閱「在 BigQuery 中使用政策標記的最佳做法」。
角色受限的服務帳戶
您必須限制機密資料專案的存取權,以便只有授權使用者才能查看機密資料。如要這樣做,請建立一個服務帳戶,並為其指派「服務帳戶使用者」角色 (roles/iam.serviceAccountUser
),授權使用者必須模擬該角色。服務帳戶模擬可讓使用者不必下載服務帳戶金鑰,即可使用服務帳戶,進而提升專案的整體安全性。模擬會建立短期權杖,而具備服務帳戶憑證建立者 (roles/iam.serviceAccountTokenCreator
) 角色的授權使用者可下載這類權杖。
儲存空間和重新識別功能的金鑰管理和加密
您可以為機密資料管理個別的 CMEK 金鑰,以便重新識別資料。您可以使用 Cloud HSM 保護金鑰。如要重新識別資料,請使用下列鍵:
- Dataflow 管道用於重新識別程序的 CMEK 金鑰。
- 機密資料保護功能用來去識別資料的原始密碼編譯金鑰。
- 機密資料專案中 BigQuery 倉儲的 CMEK 金鑰。
如擷取資料的金鑰管理和加密一文所述,您可以指定 CMEK 位置和輪替週期。如果貴機構有需要,您可以使用 Cloud EKM。
作業
您可以啟用記錄功能和 Security Command Center Premium 或 Enterprise 級功能,例如安全狀態分析和事件威脅偵測。這些控制項可協助您執行下列操作:
- 監控哪些人可以存取您的資料。
- 確保已實施適當的稽核機制。
- 產生雲端資源設定錯誤的檢測結果
- 支援事件管理和作業團隊因應可能發生的問題。
資料存取透明化控管機制
當 Google 人員需要存取您的資料時,資料存取透明化控管機制會即時通知您。每當有人存取內容,系統就會產生資料存取透明化控管機制記錄,且只有具備有效業務理由 (例如支援案件) 的 Google 人員才能取得存取權。
記錄
為協助您滿足稽核要求並深入瞭解專案,您可以使用要追蹤的服務資料記錄,設定 Google Cloud 可觀測性。存放區中的 centralized-logging
模組會設定下列最佳做法:
- 在所有專案中建立匯總記錄接收器。
- 將記錄檔儲存在適當的區域中。
- 將 CMEK 金鑰新增至記錄匯出端。
對於專案中的所有服務,您的記錄必須包含資料讀取和寫入的資訊,以及管理員讀取的資訊。如需其他記錄最佳做法,請參閱「偵測性控制」。
警報和監控
部署架構後,您可以設定快訊,通知安全作業中心 (SOC) 可能發生安全事件。舉例來說,您可以使用快訊通知安全分析師,當 IAM 權限發生變更時。如要進一步瞭解如何設定 Security Command Center 快訊,請參閱「設定發現通知」。如要設定 Security Command Center 未發布的其他快訊,您可以使用 Cloud Monitoring 設定快訊。
其他安全性考量
除了本文所述的安全控制項之外,您還應檢查並管理與使用此解決方案重疊且互動的關鍵領域安全性和風險。其中包括:
- 用於設定、部署及執行 Dataflow 工作和 Cloud Run 函式的程式碼安全性。
- 您在本解決方案中使用的資料分類分類法。
- 產生及管理加密金鑰。
- 您在資料倉儲中儲存及分析的資料集內容、品質和安全性。
- 部署解決方案的整體環境,包括:
- 連線至此解決方案的網路設計、區隔和安全性。
- 貴機構的 IAM 控制項安全性和治理。
- 針對您授予存取此解決方案基礎架構的對象,以及可存取在該基礎架構中儲存及管理的資料的對象,設定驗證和授權。
整合所有資訊
如要實作本文件所述的架構,請按照下列步驟操作:
- 決定是否要使用企業基礎結構藍圖或單獨部署架構。如果您選擇不部署企業基礎架構藍圖,請務必在環境中建立類似的安全基準。
- 如要匯入外部來源的資料,請設定網路的專屬互連網路連線。
- 請詳閱
terraform-google-secured-data-warehouse
README 或terraform-google-secured-data-warehouse-onprem-ingest
README,確認您符合所有先決條件。 確認使用者身分具備貴機構「Development」資料夾的 服務帳戶使用者 (
roles/iam.serviceAccountUser
) 和服務帳戶憑證建立者 服務帳戶憑證建立者 (roles/iam.serviceAccountTokenCreator
) 角色 (如「機構架構」所述)。如果您沒有用於測試的資料夾,請建立資料夾並設定存取權。記下帳單帳戶 ID、機構的顯示名稱、測試資料夾或示範資料夾的資料夾 ID,以及下列使用者群組的電子郵件地址:
- 資料分析師
- 加密資料檢視器
- 純文字讀取器
- 資料工程師
- 網路管理員
- 安全性管理員
- 安全性分析師
建立專案。如需必須啟用的 API 清單,請參閱 README。
建立 Terraform 的服務帳戶,並為所有專案指派適當的角色。
設定存取權控管政策。
如果是 Google Cloud 使用
terraform-google-secured-data-warehouse
存放區的資料來源,請在測試環境中部署操作說明,瞭解解決方案的運作方式。在測試程序中,請考慮下列事項:- 將您自己的範例資料新增至 BigQuery 倉儲。
- 請與貴企業的資料分析師合作,測試他們是否可以存取機密資料,以及是否能按照預期的方式與 BigQuery 的資料互動。
針對使用
terraform-google-secured-data-warehouse-onprem-ingest
存放區的外部資料來源,請在測試環境中部署解決方案:- 複製並執行 Terraform 指令碼,在Google Cloud中設定環境。
在網路上安裝 Tink 加密程式庫。
設定應用程式預設憑證,以便在網路上執行 Tink 程式庫。
使用 Cloud KMS 建立加密金鑰。
使用 Tink 產生加密的 Keyset。
請使用下列任一方法,透過 Tink 加密資料:
- 使用確定性加密。
- 使用含有範例資料的輔助指令碼。
使用串流或批次上傳功能,將已加密的資料上傳至 BigQuery。
針對外部資料來源,請確認授權使用者可以使用 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 Card_Type_Code, Issuing_Bank, Card_Number, Card_Number_Decrypted FROM `{project_id}.{bigquery_dataset}.decrypted_view`
如需其他查詢和用途,請參閱「使用 Cloud KMS 進行資料欄加密」。
使用 Security Command Center 掃描新建立的專案,以符合法規遵循要求。
將架構部署至實際工作環境。
後續步驟
- 詳閱企業基礎藍圖,瞭解如何建立基準安全環境。
- 如要查看架構的詳細資料,請參閱內部資料來源 (
terraform-google-secured-data-warehouse
存放區) 的 Terraform 設定 README,或參閱外部資料來源 (terraform-google-secured-data-warehouse-onprem-ingest
存放區) 的 Terraform 設定 README。