K-map 跟 k-anonymity 極為相似,但這個技術是假設攻擊者很可能不知道誰在資料集中。如果您的資料集非常小,或將屬性一般化所需工程過於浩大時,您可以使用 k-map。
跟 k-anonymity 一樣,k-map 也會要求您判定資料庫中的哪些資料欄是準識別項。這樣,您就可以指出攻擊者最有可能使用哪些資料來重新識別當事人。此外,計算 k-map 值需要重新識別資料集:一個較大的資料表,用於比較原始資料集中的資料列。
本主題將示範如何使用 Sensitive Data Protection,計算資料集的 k-map 值。如要進一步瞭解 k-map 或一般風險分析,請先參閱風險分析概念主題,然後再繼續閱讀本文。
事前準備
繼續操作前,請務必先完成下列事項:
- 登入您的 Google 帳戶。
- 在 Google Cloud 控制台的專案選擇器頁面中,選取或建立 Google Cloud 專案。 前往專案選取器
- 請確認您已為 Google Cloud 專案啟用計費功能。瞭解如何確認專案已啟用計費功能。
- 啟用 Sensitive Data Protection。 啟用 Sensitive Data Protection
- 選取要分析的 BigQuery 資料集。資訊保護服務會掃描 BigQuery 資料表,估算 k 對應指標。
- 判斷要用來模擬攻擊資料集的資料集類型。詳情請參閱
KMapEstimationConfig物件的參考頁面,以及「風險分析術語與技術」。
計算 k-map 預估值
您可以使用 Sensitive Data Protection 估算 k-map 值,運用統計模型來估算重新識別資料集。這與其他風險分析方法剛好相反,那些方法中有明確已知的攻擊資料集。Sensitive Data Protection 會根據資料類型使用可公開取得的資料集 (例如美國人口普查),或使用自訂統計模型 (例如您指定的一或多個 BigQuery 表格),或從輸入資料集中值的分佈情況進行推論。詳情請參閱 KMapEstimationConfig 物件的參考頁面。
如要使用 Sensitive Data Protection 計算 k-map 估計值,請先設定風險工作。對 projects.dlpJobs 資源編寫要求,其中 PROJECT_ID 表示您的專案 ID:
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs
要求會包含由以下項目組成的 RiskAnalysisJobConfig 物件:
A
PrivacyMetric物件。您可以在這裡指定要計算 k-map,方法是指定包含下列項目的KMapEstimationConfig物件:quasiIds[]:必填。系統會將這些欄位 (TaggedField物件) 視為準識別項,並掃描及用於計算 k-map。任何兩個資料欄均不得有相同的標記。標記可以是以下任何一種:- infoType:這會導致 Sensitive Data Protection 使用相關公開資料集,做為人口數的統計模型,包括美國郵遞區號、地區代碼、年齡和性別。
- 自訂 infoType:自訂標記,您可在其中指出包含這個資料欄可能值相關統計資訊的輔助資料表 (
AuxiliaryTable物件)。 inferred標記:如果沒有指出語意標記,請指定inferred。Sensitive Data Protection 會從輸入資料中值的分佈情況推測出統計模型。
regionCode:可供 Sensitive Data Protection 在統計模型中使用的 ISO 3166-1 alpha-2 地區代碼。如果沒有資料欄標記為地區特定 infoType (例如美國郵遞區號) 或地區代碼,則這個值為必要。auxiliaryTables[]:要在分析中使用的輔助資料表 (AuxiliaryTable物件)。用來標記準識別項資料欄 (來自quasiIds[]) 的每個自訂標記,都必須確切地顯示在一個輔助資料表的一個資料欄中。
BigQueryTable物件。包含以下所有項目以指定要掃描的 BigQuery 表格:projectId:包含表格的專案 ID。datasetId:資料表的資料集 ID。tableId:資料表名稱。
一或多個
Action物件的組合,代表完成工作時要按照指定順序執行的動作。每個Action物件都可包含以下其中一個動作:SaveFindings物件:將風險分析掃描的結果儲存至 BigQuery 表格。PublishToPubSubobject: 將通知發布至 Pub/Sub 主題。
PublishSummaryToCsccobject:將結果摘要儲存至 Security Command Center。PublishFindingsToCloudDataCatalogobject:將結果儲存至 Data Catalog。JobNotificationEmails物件:傳送內含結果的電子郵件給你。PublishToStackdriverobject:將結果儲存至 Google Cloud Observability。
程式碼範例
以下是幾種不同程式語言的範例程式碼,示範如何使用 Sensitive Data Protection 計算 k-map 值。
Go
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Java
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
PHP
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
C#
如要瞭解如何安裝及使用 Sensitive Data Protection 的用戶端程式庫,請參閱「Sensitive Data Protection 用戶端程式庫」。
如要向 Sensitive Data Protection 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
查看 k-map 工作結果
如要使用 REST API 擷取 k-map 風險分析作業的結果,請將下列 GET 要求傳送至 projects.dlpJobs 資源。將 PROJECT_ID 替換為專案 ID,並將 JOB_ID 替換為要取得結果的工作 ID。工作 ID 會在您啟動工作時傳回,您也可以列出所有工作來擷取 ID。
GET https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs/JOB_ID
要求會傳回包含工作例項的 JSON 物件。分析結果位於 "riskDetails" 鍵中,以 AnalyzeDataSourceRiskDetails 物件的形式呈現。詳情請參閱 DlpJob 資源的 API 參考資料。
後續步驟
- 瞭解如何計算資料集的 k-anonymity 值。
- 瞭解如何計算資料集的 l-diversity 值。
- 瞭解如何計算資料集的 δ-presence 值。