繁体   English   中英

如何使用sql server 2008安全销毁某些数据? (使用DoD安全擦拭或类似方法)

[英]How can I securely destroy some data using sql server 2008 ? (using DoD secure wipe or an equivalent)

我的一位客户希望我对他的一些旧数据进行定期的“真实”销毁,而我正在评估实现这一目标的最佳方法。

数据在表中,我想销毁其中包含的某些行。

我可以通过删除/导出另一台计算机上的数据库/对硬盘驱动器进行解毒/重新导入保存的数据来手动完成此操作,但是我需要一个自动解决方案。

是否有与delete(如foo中的delete *)相同的命令,该命令将执行数据的安全销毁(使用DoD安全擦除或类似方法?)

您是否看到其他方式执行此自动删除?

顺便说一句,我知道有人使用sql delete命令检索我已销毁的某些数据的几率很小,但是我的某些客户端需要它。 因此,请不要将此问题变成关于数据处理程序的全球性辩论!

编辑 :我要解决的问题不是“我应该如何销毁数据以使其无法恢复”,而是“我如何使我的客户相信他们的数据无法恢复”。

使用某种形式的加密将数据字段存储在表中。

当您决定“删除”时,请使用新密钥重新加密将继续使用的数据。 丢弃旧密钥,并删除使用旧密钥加密的行。 收缩。

即使有人恢复了行,并且没有旧密钥,也没有人能够恢复数据。 只需确保旧密钥确实已被丢弃-您只能将其放在单个USB记忆棒上,然后销毁该记忆棒等。

在线书籍

从表中删除操作或导致行移动的更新操作可以通过删除对行的引用来立即释放页面上的空间。 但是,在某些情况下,该行实际上可以作为幻像记录保留在数据页上。 鬼记录会由后台进程定期删除。 响应查询,数据库引擎不会返回这些剩余数据。 但是,在数据或备份文件的物理安全性受到威胁的环境中,可以使用sp_clean_db_free_space清除这些sp_clean_db_free_space记录。

这应该将您的“免费”数据页面清零。 如果使用即时初始化,也可以使用它,但是您决定将页面归零。

为了回答您更新的问题“我如何使我的客户相信他们的数据无法恢复”,BOL条目清楚地指出,“后台进程会定期删除Ghost记录。”

基本上没有 标准操作不会执行此操作,并且如果执行了此操作,仍然可以从事务日志等中重建数据。可能最接近的操作是从外部进行操作,将数据库复制并清除到另一台设备,然后执行质量清除旧设备上的删除内容,但是作为安全人员,我不确定我什至想说那是一个固定的delette。

安全删除是一个难题。 使用Radia Perlman的“ ephemerizer”之类的密码方法可能会做得更好。

我不确定这是否满足DOD的要求,但是至少我将经历以下内容。

  1. 删除记录的标准方法
  2. 进行数据库的新备份(以备将来使用)
  3. 使用符合标准的标准文件删除过程删除所有现有备份(因为它们具有数据)
  4. 收缩数据库以从删除的记录中释放未使用的空间。

我认为这将使您更加接近,但是关键是收缩操作的管理,我不确定100%如何清除/处理数据。 其次,如果您认为我的风险点很大,那么删除旧备份将是“最大的风险”。

实际上,检索用DELETE销毁的数据的机会非常大,接近100% :)

删除的数据保留在事务日志中,这是事务工作方式的一部分。 在其他情况下,您要么无法ROLLBACK事务,要么COMMIT会花很长时间(例如在旧版本的PostgreSQL )。

在不弄乱数据文件的情况下,您能做的最好的事情是:

  1. 删除您的数据。
    • 在表上执行多个UPDATE以销毁旧数据。
    • 执行几个大事务, 并提交它们以使事务日志被截断。 确切多少取决于您的日志大小。
    • 磁盘上由旧事务日志占用的CleanSweep空间。

删除数据。 做一个简单的备份,然后在新的硬盘驱动器上还原并刻录旧的驱动器。

销毁对象是使人们确信“事物”确实消失的唯一方法。

好吧,我只是在这里玩,但是您尝试一下,它将是相当安全的。

不要使用典型的备份。

如果没有,请脚本出架构。

编写所有数据的脚本,以便可以使用包含许多INSERT语句的脚本插入所有当前数据。 显然,已删除的数据不会显示在此文件中。 当然,您将需要使用“批量插入”以及所有这些操作来将数据返回到那里。

现在使用sdelete删除与数据库关联的所有数据文件和日志。 现在,从插入脚本还原。 :)

顺便说一句,您的问题和所做的编辑,说您不想要一个解决方案,而是不与您的整个问题相矛盾的原因。 无论如何,一个不这样做的好理由是没人在做。 如果您想在计算中做某事(而不是创建某种全新的应用程序之类的东西),而没有其他人在做,那可能是个坏主意。 据我所知,目前还没有学术论文或国防部的论文描述这样做的方法。

更大的问题是什么信息将从您删除的记录中“泄漏”到未删除的记录中。 注意,在这里我指的是信息流中的“泄漏”。

虽然,老实说,我上面概述的方法基本上可以实现您的目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM