日期是一种非常常见的数据类型。如果日期可被视为敏感数据或个人身份信息 (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
对象,您可以按随机天数偏移日期。