大家好,
我觉得很奇怪,在我对用户进行匿名化处理后,在 admin/logs/staff_action_logs 中仍然能看到旧的用户名和电子邮件,它们与新生成的“匿名化”随机用户名关联。在我看来,这并非真正的匿名化,而且将此类数据在日志中永久保存可能违反欧盟 GDPR 法规。
此外,我认为保留此类操作的日志意义不大。请问如何永久删除这些日志?是否也可以定期清理 Discourse 日志,并适当调整日志记录策略?
提前感谢!
大家好,
我觉得很奇怪,在我对用户进行匿名化处理后,在 admin/logs/staff_action_logs 中仍然能看到旧的用户名和电子邮件,它们与新生成的“匿名化”随机用户名关联。在我看来,这并非真正的匿名化,而且将此类数据在日志中永久保存可能违反欧盟 GDPR 法规。
此外,我认为保留此类操作的日志意义不大。请问如何永久删除这些日志?是否也可以定期清理 Discourse 日志,并适当调整日志记录策略?
提前感谢!
您好,
您需要取消勾选“记录匿名化详细信息”这一设置,以避免此类情况再次发生。在遵守 GDPR 时,必须关闭此选项。
不过,我不确定是否应该将其从日志中完全移除。
你好,Ondrej,感谢你的快速回复。
好的,我已禁用该选项,但已记录的操作仍然可见。如何删除这些日志?
在启用上述设置后,若要清除旧行,请先通过 Rails 控制台检查相关的用户历史记录行:
UserHistory.where(action: 24)
确认上述查询已涵盖所有您希望确保不再在日志中包含任何用户数据的行后,在 Rails 控制台中运行以下命令:
UserHistory.where(action: 24).update_all(details: nil, email: nil)
(“details”和“email”字段包含个人数据,上述命令将清除这些数据。删除这些行并非 GDPR 合规所必需,但如果您需要这样做,请使用 delete_all。)
请自行承担风险,并在大规模执行数据库命令前做好备份。
运行上述命令后,您可能还需要在 PostgreSQL 上触发 VACUUM 操作,以确保仍包含这些值的死元组被真正删除。
感谢 Hooksmith,您的解决方案有效。不过,我看不出有什么理由不偶尔运行一下:
UserHistory.delete_all
也许我会写一个脚本来每周执行一次。
保重
当晚些时候或许是更好的选择,因为有时我不得不因某位工作人员判断失误而撤销匿名操作。这并非完美无缺,但作为管理员,我确实找到了一种恢复并重新匿名化用户的方法。
该表提供了用于填充站点工作人员操作日志的数据。保留站点工作人员的历史记录很有用。至少,它有助于调试与工作人员更改设置相关的站点问题。