k-图与 k-匿名性非常相似,不同的只是,前者假设攻击者很可能不知道数据集中的人员。如果数据集相对较小,或者泛化属性所涉及的工作量太大,请使用 k-图。
就像 k-匿名性一样,k-图要求您确定数据库的哪些列是准标识符。这样做是为了说明攻击者最有可能使用哪些数据来重标识主体。此外,计算 k-图值需要重标识化数据集:一个较大的表,用于与原始数据集中的行进行比较。
本主题演示了如何使用 Sensitive Data Protection 计算数据集的 k-map 值。如需从整体上详细了解 k-图或风险分析,请参阅风险分析概念主题,然后再继续。
准备工作
在继续操作之前,请确保您已完成以下步骤:
- 登录您的 Google 账号。
- 在 Google Cloud 控制台的项目选择器页面上,选择或创建 Google Cloud 项目。 转到项目选择器
- 确保您的 Google Cloud 项目已启用结算功能。 了解如何确认您的项目已启用结算功能。
- 启用敏感数据保护。 启用 Sensitive Data Protection
- 选择要分析的 BigQuery 数据集。Sensitive Data Protection 通过扫描 BigQuery 表来计算 k-图指标。
- 确定您要用于攻击数据集建模的数据集类型。如需了解详情,请参阅
KMapEstimationConfig对象的参考页面以及风险分析术语和技术。
计算 k-图估算值
您可以使用 Sensitive Data Protection 估算 k-map 值,后者使用统计模型来估算重标识数据集。这与其他明确知道攻击数据集的风险分析方法不同。根据数据类型,敏感数据保护功能会使用公开提供的数据集(例如美国人口普查数据集)或自定义统计模型(例如,您指定的一个或多个 BigQuery 表格),或者根据输入数据集中值的分布进行推断。如需了解详情,请参阅 KMapEstimationConfig 对象的参考页面。
如需使用 Sensitive Data Protection 计算 k-图估算值,请先配置风险作业。请向 projects.dlpJobs 资源发送一个请求,其中 PROJECT_ID 表示项目标识符:
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs
该请求包含一个由以下项组成的 RiskAnalysisJobConfig 对象:
PrivacyMetric对象。您可以在此处指定包含以下内容的KMapEstimationConfig对象以表明您要计算 k-图:quasiIds[]:必填。被视为要扫描的准标识符的字段(TaggedField对象),用于计算 k-图。任何两列的标记都不能相同。这些标记可为下列任一项:- 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 表格中。PublishToPubSub对象:向 Pub/Sub 主题发布通知。
PublishSummaryToCscc对象:将结果摘要保存到 Security Command Center。PublishFindingsToCloudDataCatalog对象:将结果保存到 Data Catalog。JobNotificationEmails对象:向您发送电子邮件,其中包含结果。PublishToStackdriver对象:将结果保存到 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-图作业结果
如需使用 REST API 检索 k-图风险分析作业,请将以下 GET 请求发送到 projects.dlpJobs 资源。将 PROJECT_ID 替换为您的项目 ID,并将 JOB_ID 替换为您要获取其结果的作业的标识符。作业 ID 在启动作业时返回,也可通过列出所有作业来检索。
GET https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs/JOB_ID
该请求会返回包含作业实例的 JSON 对象。分析的结果位于 AnalyzeDataSourceRiskDetails 对象的 "riskDetails" 键中。如需了解详情,请参阅 DlpJob 资源的 API 参考文档。