当前位置: 首页 > 面试题库 >

SQL Server数据库针对聪明的管理员的保护?

司寇祖鹤
2023-03-14
问题内容

我想保护存储在一个表中的事件,该表与其他表有关系。事件是通过Windows服务插入的,该服务正在连接到硬件并从硬件读取信息。

在事件表中是PK,日期和时间以及3个不同的值。

问题是每个管理员都可以登录并在此表中插入/更新/删除数据,例如使用sql management
studio。我创建触发器以防止更新和删除,因此,如果管理员不知道触发器,他将无法更改数据,但是如果他知道触发器,则可以轻松禁用触发器并执行他想做的任何事情。

因此,经过长思后,我有一个主意,要向表中添加新列(字段)并在此字段中存储类似校验和的内容,该校验和将基于其他值进行计算。该校验和将在插入/更新语句中生成。如果有人手动插入/更新某些内容,我会知道的,因为如果我用校验和检查数据,就会出现不匹配的情况。

我的问题是,如果您有类似的问题,该如何解决?校验和使用什么算法?如何防止删除语句(我知道PK中的空数字,但这还不够)?

我正在使用SQL Server 2005。


问题答案:

您在服务器级别执行的任何操作,管理员都可以撤消。这就是其作用的定义,您无能为力。

在SQL 2008中,您可以请求对带有X事件的SQL Server进行审核,请参阅http://msdn.microsoft.com/zh-
cn/library/cc280386.aspx
。这是违反CC的解决方案,很明显。这意味着管理员可以停止审核并执行其恶作剧的行为,但是会记录停止审核的情况。

在SQL 2005中,推荐的审核解决方案是使用探查器基础结构。如果正确部署,则可以使篡改显而易见。您将使用触发器和约束来防止数据更改,并防止DDL更改。如果管理员更改了触发器,则这在审核中可见。如果管理员停止审核,这也将在审核中可见。

您是否打算将其作为针对流氓管理员的一次性操作或作为要添加到产品中的功能进行计划?在应用程序周期中,使用数字签名对所有应用程序数据进行签名可能会非常昂贵。您还必须设计一种安全方案以显示未删除的记录,包括最后的记录(即,标识列中不是简单的空白)。例如。您可以通过BINARY_CHECKSUM(*)计算CHECSUM_AGG,将结果签名到应用中,并在每次更新后为每个表存储签名值。针刺地说,这将减慢您的应用程序的速度,因为基本上您序列化了每个操作。对于单行校验和/散列,您将必须计算应用程序中的整个签名,这可能需要您的应用程序可能没有的值(即,标识列值)
分配给您的插入)。您想走多远?如果管理员掌握了您的应用并以什么顺序监视您的哈希值(实现起来很简单),则可以破坏简单的哈希值。然后,他可以重新计算相同的哈希值。HMAC要求您在应用程序中存储一个秘密,这对于确定的黑客基本上是不可能的。这些问题似乎矫枉过正,但如果这是一个应用程序,你卖的实例,然后只需要为
一个 黑客破坏你的散列序列或HMAC秘密。Google会确保其他所有人最终找到答案。

我的观点是,如果您试图通过技术阻止 管理员 ,那么您将面临一场艰难的战斗。该 管理员 是你一个人 相信
,如果这是你打破的情况下,这个问题是信任,而不是技术。



 类似资料:
  • 本文向大家介绍SQLServer数据库的各种管理方法,包括了SQLServer数据库的各种管理方法的使用技巧和注意事项,需要的朋友参考一下 本文适用范围:全面阐述SQLServer数据库的各种操作,分虚拟主机和服务器两种情况。 这篇文章比较长,请使用下面的提纲访问。 提纲 一、虚拟主机 1.安装在线企业管理器     2.注册远程企业管理器(SQL2000)     3.注册远程企业管理器(SQL

  • 我是wordpress的新手,在管理数据库方面有困难。我已经安装了“管理员”插件来管理数据库。我已经创建了一个名为“usersupp_admin”的新表。现在我还创建了一个自定义模板,该模板将使用PDO语句连接到此数据库,现在的问题是在哪里可以获取主机、数据库名、用户和密码?以下是代码: 任何帮助都将不胜感激。

  • 我需要将adminer与oracle连接,但在官方映像中不支持它。是否有用于oracle连接的管理员映像?或者如果有人可以指导我如何在当前映像中安装oci8扩展。

  • 我想要一份有团队成员的团队名单 (我正在用java编写示例代码,但解决方案不必使用java。) 像这样: 如果我想访问一个团队的所有成员,那将是非常直接的<但是如果我想看看一个成员是哪个团队的成员呢<我不想每次都对所有团队成员进行循环。 我可以在成员的班级里拯救每个成员的团队,但这不是有点愚蠢吗?

  • 我最近移动主机,我不能得到管理员4.3.1,今天下载看到多个数据库。为什么它选择了那个我不知道。主机公司从原始主机上复制了我的所有数据。数据库是MySQL。 我运行管理员从一个目录,通过授权用户使用目录保护,工作正常。 AM仅显示6个数据库中的一个。对于所选的数据库,任何函数似乎都没有问题。所有数据库都有不同的密码。 phpMyAdmin通过cPanel查看所有数据库是否正常。 我确实按照某人的建

  • 问题内容: 我正在实现一个JAX-WS Web服务,它将由外部Java和PHP客户端使用。 客户端必须使用每个客户端存储在数据库中的用户名和密码进行身份验证。 最好使用哪种身份验证机制来确保杂项客户端可以使用它? 问题答案: 基本WS- Security可以与插入JAAS的Java和PHP客户端(以及其他客户端)一起使用,以提供数据库后端。如何实现这种依赖于您的容器。使用@RolesAllowed