【问题标题】:Ever ok to remove referential integrity on database design for 'right to be forgotten' deletion of user records?是否可以删除数据库设计中的引用完整性以删除用户记录的“被遗忘权”?
【发布时间】:2017-05-06 01:35:10
【问题描述】:

我目前正在审查一个数据库设计,为了处理删除用户记录,为了处理 DPA 和 EU GDPR 被遗忘权等要求,建议不要在用户之间强制执行参照完整性记录和“相关”表,例如事务、通信事件等,以便在请求时可以删除用户记录,但相关表中的记录(使用非识别键/序列号)将保持不变。

因此,在我对此进行反驳并展开随后的“讨论”之前,我想知道是否有人认为在这种情况下删除或不删除参照完整性是可以接受的,或者应该采用其他方法可以使用 - 例如屏蔽用户详细信息,或将用户记录更改为占位符记录以显示交易与编辑用户相关。

欢迎所有想法...

【问题讨论】:

    标签: sql referential-integrity


    【解决方案1】:

    这是一个超出参照完整性约束的复杂主题。

    我对欧盟隐私限制的理解(我强调我不是律师)是它们与个人身份信息有关,而不是与业务相关的“匿名”关系有关。例如,我认为您仍然可以将已删除的用户视为活跃期间的“活跃”用户;你只是不知道他们是谁。

    我的方法是将所有 PII 数据放入单个表/数据库中。当用户希望被遗忘时,我会更新记录以删除 PII。然后所有的外键关系都很好。您只是缺少姓名、地址、电子邮件地址以及其他任何被视为 PII 的信息。

    仅仅识别 PII 是非常棘手的,因为电子邮件地址和用户名等可以嵌入最不寻常的地方(URL 是一个显而易见的地方,但可能还有其他地方)。

    我不建议实际从所有数据库中删除此人的所有痕迹。然后,您将处于您的报告不再平衡的情况。 . .哦,我们的报告说我们当时有1,000,000个客户,但我们只能找到其中的999,900个。让我们浪费一堆人的精力来弄清楚发生了什么。

    我的建议:小心。这是一个漫长的过程,并相应地在您的组织中设定期望。

    【讨论】:

    • 我不熟悉该法律,但如果可能的话,我想在用户表中使用一个表示“忘记此用户”的标志。这样,用户不会出现在正常处理中,但仍然可以用于某些内部处理,例如,哦,遵守传票等。
    • @TommCatt 。 . .不幸的是,这对于欧盟法律来说绝对是不够的。
    【解决方案2】:

    请查看您所在行业的保留法律。人们有权被遗忘,但企业也有法律义务将某些记录保留一段时间。

    在这一点上,我不清楚哪条法规会否决另一条法规,因此我的建议是您请一位能够解决此问题的法律专家。

    从技术角度来看,您的应用程序可能需要与私有数据相关的业务数据,因此一个好的方法是将记录标记为被遗忘并用生成的数据替换私有数据。这样一来,您的应用程序将保持相同的行为方式,但私有信息已消失。

    这是一种简单的方法,可以应用于许多遗留应用程序,甚至可以作为一个流程自动化。

    您唯一需要注意的是备份,因为如果必须从备份中恢复数据,您的更改可能会被还原。保留一个单独的表,其中包含指向需要忘记的记录的键,因此如果备份覆盖了最新更改,您可以再次使用自动化脚本删除那些想要被忘记的内容。

    【讨论】:

      猜你喜欢
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      相关资源
      最近更新 更多