审计跟踪和实施SOX / HIPAA /等,敏感数据的最佳实践

时间:2008-11-24 19:54:00

标签: database security audit

我认为自己在应用程序设计方面相对精通,但我从未使用敏感数据。我一直想知道审计跟踪的最佳实践是什么以及应该如何实现它们。我现在不必这样做,但如果他们让我为他们做一些工作,那么能够自信地与医疗公司交谈会很高兴。

假设我们有一个“学校”数据库,“老师”,“班级”,“学生”都在多对多“成绩”表中进行了标准化。你会记录什么? “成绩表”上的每次插入/更新?只有更新(比如,一个孩子闯入并想要改变成绩,这应该发送红旗)?这完全取决于一个人想要的偏执吗?有最好的做法吗?

这是应该在数据库中完成的吗? (每个敏感SELECT上的一个触发器,它将一行插入到记录每个查询的'audit'表中?)应该记录什么?是否有自动构建到Oracle / DB2中的功能为您完成?这应该是应用程序端逻辑吗?

如果有人有任何关于如何处理敏感数据的正式文档/书籍(不完全是DoD“可信计算”规范,但有些内容:P),我会很感激。如果这个问题非常含糊,我很抱歉。我意识到这因应用程序而异。我只想听听您处理敏感数据的详细经验。

2 个答案:

答案 0 :(得分:4)

首先要了解的是您选择的DBMS的本机审计功能。这些细节各不相同,但通常提供一种方法来配置审计哪些操作,并为它们生成的审计记录提供安全存储。

接下来要了解的是您要审核的内容。例如,在HIPAA和SOX的情况下,您可能正在查看PII - 个人识别信息。记得关于人们访问奥巴马的电话记录或各种名人医疗记录的大惊小怪,或者......因为系统审核了谁阅读了这些记录而被抓住了,审计分析官(AAO)发现名人记录是由人们访问的谁没有特别授权这样做。因此,这些系统必须记录谁访问每条记录,并发现何时这样做的用户没有真正的商业理由这样做。在这些情况下,似乎用户已经读取了记录的权限,因此如果他们的普通职责要求他们查看记录,他们就可以这样做。但是,当他们不被要求这样做时,他们就会滥用权力并适当地制裁(包括失去工作)。

这意味着您可能不希望跟踪谁访问记录状态代码和全名的状态表(以及有关状态的各种其他信息)。关于该列表没有任何保密 - 谁阅读它并不重要。当然,几乎没有人应该写信给它;状态列表不会经常更改 - 但可以通过撤消每个人对表的更新和删除权限来处理。

OTOH,您可能确实希望记录访问病历(HIPAA)中的记录的人员,或者修改会计系统(SOX)中的数据的人员。您可能会或可能不需要担心谁会读取会计数据;很多可以通过基本权限来处理(会计人员有权限; IT人员没有)。但是,审计总是额外的防线。

请记住,如果从未查看审计记录,则无论如何都无济于事。通常,审计会降低系统速度(因为它在编写审计记录时会做更多工作);在决定实施审计策略之前,了解它的减速程度非常重要。但是,有一些事情比应用程序更重要,其中一个是让自己和其他工作人员不在监狱。可能需要进行审计以确保发生这种情况。

答案 1 :(得分:3)

Oracle有一个名为Oracle Audit Vault的产品 - DB2可能有同等的产品。

您应该从预防开始。系统不应允许无效操作。期。如果系统允许需要监控的“可疑”操作,即“业务逻辑”,那么您可能更好地实现其他业务逻辑。

如果您想在数据库中执行某些操作,可以查看日志传送(术语可能与RDBMS不同,也可能与RDBMS不同)。基本上,任何DML操作都会记录到文件中。您可以将此信息用于备份和时间点恢复,甚至可用于复制/ HA /故障转移/等。如果您将日志发送到“仅附加”的单独的“受信任”系统(即日志传送过程具有创建新日志文件但不修改现有信息的权限)时尚,则您已具有原始审核功能。如果您以安全的方式(即身份验证,不可否认性)进行,您甚至可能非常接近“合规性”:-p

当然,筛选大量的INSERT / UPDATE / DELETE语句并不是最复杂的工作方式。

相关问题