使用 Sensitive Data Protection 对大规模数据集中的个人身份信息进行去标识化和重标识处理

Last reviewed 2022-08-11 UTC

本文档讨论了如何使用 Sensitive Data Protection 创建自动化数据转换流水线,以对个人身份信息 (PII) 等敏感数据进行去标识化处理。诸如令牌化(假名化)之类的去标识化技术可让您保留数据的实用性以进行联接或分析,同时通过对原始的敏感标识符进行模糊处理来降低数据处理的风险。如需最大限度地降低处理大量敏感数据的风险,您可以使用自动数据转换流水线来创建已经过去标识化处理的副本。敏感数据保护Sensitive Data Protection 支持转换,例如隐去、遮盖、令牌化、分桶以及其他去标识化方法。如果数据集尚未进行特征化处理,则Sensitive Data Protection 还可以使用 100 多个内置分类器检查数据中的敏感信息。

本文档适用于负责数据安全、数据处理或数据分析的技术受众。本指南假设您熟悉数据处理和数据隐私(无需成为专家)。

参考架构

下图显示了一个参考架构,该架构使用 Google Cloud 产品通过去标识化技术为敏感数据集增加一道安全屏障。

去标识化流水线、配置管理和重标识流水线的架构。

该架构包含以下内容:

  • 数据去标识化流式处理流水线:使用 Dataflow 对文本中的敏感数据进行去标识化处理。您可以将该流水线重复用于多个转换和用例。

  • 配置(敏感数据保护模板和密钥)管理:只有一小部分人(例如安全管理员)可以访问(以避免泄露去标识化方法和加密密钥)的托管式去标识化配置。

  • 数据验证和重标识流水线:验证去标识化的数据的副本,并使用 Dataflow 流水线对数据进行大规模重标识处理。

帮助保护敏感数据安全

任何企业的关键任务之一就是帮助确保用户和员工数据的安全。Google Cloud 提供了内置的安全措施来确保数据安全,这些措施包括存储数据加密和传输中的数据加密。

静态加密:Cloud Storage

对大多数组织而言,确保数据安全至关重要。在未经授权的情况下,即使是访问具有一般性敏感程度的数据,也可能会损害客户对贵组织的信任、贵组织与客户之间的关系以及贵组织的声誉。默认情况下,Google 会对静态存储的数据进行加密。默认情况下,上传到 Cloud Storage 存储桶的任何对象都使用 Google 拥有且由 Google 管理的密钥进行加密。如果您的数据集使用了现有的加密方法并且要求在上传之前使用非默认的加密选项,则您可以使用 Cloud Storage 提供的其他加密选项。如需了解详情,请参阅数据加密选项

传输加密:Dataflow

如果您的数据正在进行传输,则不适合进行静态加密。 传输中的数据受安全网络协议(称为传输加密)的保护。默认情况下,Dataflow 会使用 Google 拥有且由 Google 管理的密钥。 与本文档相关联的教程使用自动化流水线,该流水线使用默认的 Google 拥有且由 Google 管理的密钥。

Sensitive Data Protection 数据转换

Sensitive Data Protection 主要执行两种类型的转换:

recordTransformationsinfoTypeTransformations 方法都可以对数据中的敏感信息进行去标识化和加密处理。例如,您可以将 US_SOCIAL_SECURITY_NUMBER 列中的值转换为无法识别的值,或者使用令牌化技术对其进行模糊处理,同时保留参照完整性。

借助 infoTypeTransformations 方法,您可以检查敏感数据并转换找到的敏感数据。例如,如果您有一些非结构化数据或自由文本数据,则 infoTypeTransformations 方法可以帮助您识别句子中的社会保障号 (SSN) 并对其值进行加密,同时将文本的其他部分保持不变。您还可以定义自定义 infoTypes 方法。

借助 recordTransformations 方法,您可以在使用结构化数据或表格数据时按字段应用转换配置。借助 recordTransformations 方法,您可以对该字段中的每个值应用相同的转换,例如,对 SSN 列作为字段或标题名称的某一列中的每个值进行哈希或令牌化处理。

借助 recordTransformations 方法,您还可以混合使用仅应用于指定字段值的 infoTypeTransformations 方法。例如,您可以在 recordTransformations 方法中对名为 comments 的字段使用 infoTypeTransformations 方法,以隐去系统在该字段的文本中找到的 US_SOCIAL_SECURITY_NUMBER 的任何发现结果。

去标识化过程如下(按复杂程度递增顺序排列):

  • 隐去:移除敏感内容,不替换内容。
  • 遮盖:将敏感内容替换为固定字符。
  • 加密:将敏感内容替换为加密字符串,并且可以解密。

处理分隔的数据

数据通常由记录组成,这些记录由选定的字符分隔,并且每列都具有固定类型,就像 CSV 文件一样。对于这种类别的数据,您可以直接应用去标识化转换 (recordTransformations)(不检查数据)。例如,您可以认为标记为 SSN 的列仅包含社会保障号 (SSN) 数据。您无需检查数据即可知道 infoType 检测器为 US_SOCIAL_SECURITY_NUMBER。不过,标记为 Additional Details 的自由格式列可能包含敏感信息,但 infoType 类事先是未知的。对于自由格式列,您需要先检查 infoTypes 检测器 (infoTypeTransformations),然后再应用去标识化转换。Sensitive Data Protection 允许这两种转换类型共存于一个去标识化模板中。Sensitive Data Protection 包含 100 多个内置的 infoTypes 检测器。您还可以创建自定义类型或修改内置的 infoTypes 检测器,以查找特定于您组织的敏感数据。

确定转换类型

确定何时使用 recordTransformationsinfoTypeTransformations 方法取决于您的用例。由于使用 infoTypeTransformations 方法需要更多资源,从而产生更高的费用,因此我们建议您仅在数据类型未知的情况下使用此方法。您可以使用 Google Cloud 价格计算器来评估运行 Sensitive Data Protection 的费用。

如需查看转换示例,本文档引用了包含具有固定列的 CSV 文件的数据集,如下表所示。

列名 检查 infoType(自定义或内置) Sensitive Data Protection 转换类型
Card Number 不适用 确定性加密 (DE)
Card Holder's Name 不适用 确定性加密 (DE)
Card PIN 不适用 加密哈希技术
SSN (Social Security Number) 不适用 遮盖
Age 不适用 分桶
Job Title 不适用 分桶
Additional Details 内置:
IBAN_CODEEMAIL_ADDRESSPHONE_NUMBER
自定义:
ONLINE_USER_ID
替换

此表格列出了各列的名称,并描述了每列所需的转换类型。例如,Card Number 列包含需要加密的信用卡号;不过,由于数据类型 (infoType) 是已知的,因此不需要对这些信用卡号进行检查。

我们建议您进行检查转换的唯一列是 Additional Details 列。此列采用自由形式,可能包含个人身份信息;在此示例中,应检测个人身份信息并对其进行去标识化处理。

此表格中的示例展示了五种不同的去标识化转换:

  • 双向令牌化:将原始数据替换为确定性的令牌,并保留参照完整性。 您可以使用该令牌联接数据,也可以在聚合分析中使用该令牌。您可以使用创建该令牌所用的相同密钥对数据进行反向或去令牌化处理。双向令牌化有两种方法:

    • 确定性加密 (DE):将原始数据替换为 base64 编码的加密值,不保留原始字符集或长度。
    • 使用 FFX 的保留格式加密 (FPE-FFX):将原始数据替换为使用 FFX 模式的保留格式加密生成的令牌。根据设计,FPE-FFX 会保留输入文本的长度和字符集。它缺少身份验证和初始化矢量,这可能会导致输出令牌的长度扩展。其他方法(例如 DE)可以提供更强大的安全保证,建议用于令牌化使用场景(除非严格要求保留长度和字符集,例如与旧版数据系统的向后兼容性就严格要求保留长度和字符集)。
  • 使用加密哈希技术的单向令牌化:将原始值替换为哈希值,并保留参照完整性。 不过,与双向令牌化不同,单向方法是不可逆的。哈希值是通过对输入值使用基于 SHA-256 的消息身份验证代码 (HMAC-SHA-256) 生成的。

  • 遮盖:将原始数据的一部分或全部替换为指定的字符。

  • 分桶:将比较容易识别的值替换为不太容易识别的值。

  • 替换:将原始数据替换为令牌或 infoType 的名称(如果检测到)。

方法选择

选择最佳的去标识化方法可能会因您的使用场景而异。例如,如果旧版应用正在处理去标识化的记录,则保留格式可能很重要。 如果您正在处理格式设置严格的 10 位数字,则 FPE 会保留输入的长度(10 位)和字符集(数字),以便支持旧版系统。

不过,如果不需要严格设置格式以实现旧版兼容性(就像对待 Card Holder's Name 列中的值那样),则首选 DE,因为它具有更强大的身份验证方法。FPE 和 DE 都可以对令牌进行反向或去令牌化处理。如果您不需要进行去令牌化处理,则可以使用加密哈希技术,该技术提供了完整性,但无法对令牌进行反向处理。

遮盖、分桶日期偏移和替换等其他方法适用于不需要保留完整性的值。例如,如果将年龄值(例如 27)分桶到年龄段 (20-30),则会降低可能导致识别个人的唯一性,而您仍然可以对年龄进行分析。

令牌加密密钥

对于加密去标识化转换,需要使用加密密钥(也称为“令牌加密密钥”)。用于去标识化加密的令牌加密密钥也会用于重标识原始值。令牌加密密钥的安全创建和管理不在本文档的介绍范围内。不过,您需要注意一些重要的原则,这些原则将在后续的关联教程中用到:

  • 避免在模板中使用明文密钥。请改用 Cloud KMS 来创建封装密钥
  • 对每个数据元素使用单独的令牌加密密钥,以降低泄露密钥的风险。
  • 轮替令牌加密密钥。虽然您可以轮替封装密钥,但轮替令牌加密密钥会破坏令牌化的完整性。密钥轮替后,您需要对整个数据集重新进行令牌化处理。

Sensitive Data Protection 模板

对于大规模部署,请使用 Sensitive Data Protection 模板来完成以下操作:

  • 使用 Identity and Access Management (IAM) 实现安全控制。
  • 将配置信息以及如何对该信息进行去标识化处理与请求的实现分离。
  • 重复使用一组转换。您可以对多个数据集使用去标识化和重标识模板。

BigQuery

参考架构的最后一个组成部分是查看并处理 BigQuery 中的去标识化数据。 BigQuery 是 Google 的数据仓库工具,其中包括无服务器基础架构、BigQuery ML 以及将 Sensitive Data Protection 作为原生工具运行的功能。在示例参考架构中,BigQuery 用作去标识化数据的数据仓库,以及可通过 Pub/Sub 共享数据的自动重标识数据流水线的后端。

后续步骤