首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止审计表被篡改

问防止审计表被篡改
EN

Stack Overflow用户
提问于 2011-01-21 18:12:40
回答 5查看 2.5K关注 0票数 6

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

目前,没有任何阻止用户登录数据库服务器、从management studio打开表以及更改审计表中数据的情况。

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

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

编辑:

我说得不够清楚。应用程序用户没有访问数据库的权限。我指的是一些用户,如数据库管理员,对数据库有适当的权限。尽管如此,如果这个数据库管理员登录,并有权调和审计表,我希望有一些机制,以检测这种篡改至少。

EN

回答 5

Stack Overflow用户

发布于 2011-01-21 18:26:37

没有什么可以阻止通过SQL管理器访问您的数据库的人更改内容。不过,您可以将其设置为明显篡改。

基本上,您需要使用HMACs,它是键控散列。不幸的是,这导致您需要密钥管理来确保密钥保密,这在触发器中可能是不可能的。我们使用加密服务来提供密钥管理,但这是通过代码访问的。

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

然后,您需要担心删除第一个或最后一个x个记录。为此,我们使用尾部和标题记录,它们总是具有相同的内容,如果它们不存在,则表格的顶部或底部已被删除。报头的组合HMAC使用它后面的记录,而不是之前的记录(因为之前没有记录)。

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

票数 9
EN

Stack Overflow用户

发布于 2011-01-21 18:55:39

以下是一些可能性:

  • 您无法阻止或检测具有sysadmin (sa)权限的用户进行的篡改。如果您不信任系统管理员,则可能遇到比此更严重的问题。
  • 很难防止或检测域或本地管理员的篡改。这样的用户可以在单用户模式下重新启动SQL Server,并使用SQL作为系统管理员获得访问权限。
  • 若要检测数据库owner (dbo)的篡改,您可以在SQL Server2008中使用Server Audit,或者在SQL Server的早期版本中使用服务器端SQL Trace。
  • 您可以通过限制其他用户对相关触发器和审核表的权限来防止其篡改。
票数 2
EN

Stack Overflow用户

发布于 2011-01-21 18:16:25

您可以启用更改跟踪,这样您就有了一种“对审计表的审计”。

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

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4757554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档