日期是一种非常常见的数据类型。如果日期可被视为敏感数据或个人身份信息 (PII),您可能需要对其进行泛化、模糊化或隐去处理。
执行此操作的一种方法是泛化或分桶。 但是,分桶可能会消除日期的效用,具体取决于用例和配置。例如,如果将所有日期泛化为仅有某一年份,则可能会丢失该年份内各种事件的发生顺序。如需解决此问题,除了对日期进行模糊处理之外,您还可以使用另一种方法,即“日期偏移”。
日期偏移技术会随机偏移一组日期,但保留一段时间内的顺序和持续时间。通常在个人或实体的上下文中完成偏移日期。也就是说,对于每个个人而言,日期的偏移时间量是唯一的。
日期偏移示例
请思考以下数据:
user_id | 日期 | 行动 |
---|---|---|
1 | 2009-06-09 | 跑步 |
1 | 2009-06-03 | 散步 |
1 | 2009-05-23 | 自由泳 |
2 | 2010-11-03 | 自由泳 |
2 | 2010-11-22 | 散步 |
... | … | … |
如果将这些日期泛化为年份,会得到以下内容:
user_id | date_year | 行动 |
---|---|---|
1 | 2009 | 跑步 |
1 | 2009 | 散步 |
1 | 2009 | 自由泳 |
2 | 2010 | 自由泳 |
2 | 2010 | 散步 |
... | … | … |
但现在,您已经对每个用户的顺序失去了概念。
请改为尝试日期偏移这种方法:
user_id | 日期 | 行动 |
---|---|---|
1 | 2009-07-17 | 跑步 |
1 | 2009-07-11 | 散步 |
1 | 2009-06-30 | 自由泳 |
2 | 2011-01-26 | 自由泳 |
2 | 2011-02-14 | 散步 |
... | … | … |
请注意日期是不同的,但保留了顺序和持续时间。
在 user_id
1 和 2 之间,日期偏移的幅度是不同的。
Sensitive Data Protection 中的日期转换
以下是用于针对敏感数据保护的 content.deidentify
方法配置日期偏移的 JSON 对象:
deidentify_config {
record_transformations {
field_transformations {
fields {
name: "date"
}
primitive_transformation {
date_shift_config {
upper_bound_days: 100
lower_bound_days: -100
entity_field_id {
name: "user_id"
}
crypto_key {
unwrapped {
key: "123456789012345678901234567890ab"
}
}
}
}
}
}
}
偏移的上限和下限分别由 upper_bound_days
和 lower_bound_days
值指定。将应用该偏移的上下文或范围基于 entity_id_field
值,在本例中为 "user_id"
。
此外,请注意 crypto_key
的使用。这与其在假名化中的使用方式类似。借助该密钥,可在多个请求或数据运行中保证这些日期偏移的完整性。
资源
如需详细了解如何在敏感数据保护中使用日期偏移和其他方法对数据进行去标识化,请参阅:
如需了解 Sensitive Data Protection 中初始转换的 API 参考文档信息,请参阅:
DeidentifyConfig
对象:用于配置去标识化选项的对象。PrimitiveTransformations
对象:日期偏移是 Sensitive Data Protection 中的“初始转换”。DateShiftConfig
对象:用于配置PrimitiveTransformations
对象的对象。通过指定DateShiftConfig
对象,您可以按随机天数偏移日期。