防止审计表篡改

buh*_*tla 5 c# sql-server audit tampering

我们的数据库中有审计表.使用触发器完成对此表的记录.

目前,没有什么能阻止用户登录数据库服务器,从管理工作室打开表并更改审计表中的数据.

哪些可能的机制可以阻止(或至少检测)审计数据篡改的情况?

我正在考虑在审计表中添加一列,其中应包含根据在该行中输入的值计算的一些哈希值.但是,由于审计是使用触发器完成的,因此恶意用户可以打开任何触发器并查看计算此哈希的逻辑.

编辑:

我不太清楚.应用程序用户无权访问数据库.我指的是像DB管理员这样的用户,对数据库有适当的权限.尽管如此,如果这个数据库管理员登录并有权使用审计表进行调节,我希望至少有一些机制来检测这种篡改.

Pat*_*ick 7

没有什么能阻止有人通过SQL管理器访问您的数据库来更改内容.你可以让它明显篡改.

基本上你需要使用键控哈希的HMAC.不幸的是,这导致您需要密钥管理以确保密钥保持秘密,这在触发器中可能是不可能的.我们使用加密服务来提供密钥管理,但可以从代码中访问.

您还需要考虑用户删除记录而不是更改其内容的能力.我们最终得到了两个HMAC,一个是使用记录的内容计算的(用于更改记录的明显),第二个使用当前记录HMAC和前一行的HMAC来使任何行删除篡改明显.

然后,您需要担心删除第一个或最后一个x记录.为此,我们使用一个始终具有相同内容的预告片和标题记录,如果这些内容不存在则表格的顶部或底部已被删除.标题的组合HMAC使用之后的记录而不是之前的记录(因为之前没有记录).

当然,如果您要删除旧记录来管理存储的数据量,您需要一种机制来在删除后添加新的标题记录.


Dav*_*ras 1

您可以启用更改跟踪,这样您就可以进行“审计表上的审计”。

如果您的基础设施管理得当,我猜用户没有 sa 权限,他们使用 Management Studio 查看使用其 Windows 帐户登录的数据库,在这种情况下,您可以在该审核表上设置安全性,只有 sa 和其他管理帐户会被访问。能够更改内容,但不能更改普通用户/开发人员帐户。

希望这可以帮助。