【问题标题】:SQL Server: protect database from being changed directlySQL Server:保护数据库不被直接更改
【发布时间】:2011-03-13 20:27:05
【问题描述】:

我们的程序附带 SQL Server 2005 数据库和 SQL Server 2005 Express。通常它会在客户端的计算机上安装自己的 SQL Server 2005 实例。

现在我必须添加一些表格,其内容只能在程序内更新。我需要防止这些表被直接更改,例如使用 Management Studio。

我怎样才能做到这一点?我应该设置用户权限吗?我可以使用加密吗?我想设置我自己的“sa”密码来访问 SQL Server 实例并仅在程序内使用它,但这不会使其通过 Windows 身份验证的访问无效。

[编辑] 对我正在尝试做的一些澄清。该计划是一个考勤计划。员工的打卡从打卡中收集并保存在数据库中;一旦收集,这些时钟将无法删除,它们的日期和时间值也无法更改。所以我需要一种方法来防止用户直接在数据库中弄乱这些值。

请记住,我们的大多数客户没有任何 SQL 经验,因此我需要在程序安装时设置这些权限。

[编辑 2] 感谢您的回答,我想再提两个与此主题相关的问题:

1 - 我可以只向那些通过 Windows 身份验证访问数据库的人授予 SELECT 权限吗?

2 - 通过哈希系统保护表免受更改是否可能/可行?就像添加一个哈希列并为每一行计算一个哈希,然后将行数据与哈希进行比较以检查变化?

【问题讨论】:

  • 你能解释一下这件事的背景吗?例如你是卖给企业还是个人?想要特别保护这些表的原因是什么?

标签: sql-server sql-server-2005 security database-permissions


【解决方案1】:

您可以在行级别向您的数据添加哈希检查,这样如果它被修改,每晚运行的篡改检查可以检测到它并发出警报。

【讨论】:

  • 是的,我想到了,我的问题是:如何检测何时删除了整行?
  • @djeidot - 有另一行存储表格和相关的行数,其中还有防篡改哈希......
【解决方案2】:

您可以使用SQL Server Compact Edition 代替 Express 吗? 它嵌入到应用程序中,专为此类场景而设计。

【讨论】:

    【解决方案3】:

    您不能阻止本地管理员组的成员对您的数据库进行他们喜欢的任何操作。任何相反的说法都是蛇油。在这个时代,一个勇敢的用户只需找到一种方法来更改数据(例如,添加自己的时钟时间),从那时起,Google 将确保每个 感兴趣的用户会找到破解方法。

    绝大多数用户是他们使用的机器上的管理员组的成员。即使在最严格和最严格的公司强制执行组策略环境中,当涉及到该用户的薪水时,人们也不会梦想将敏感数据留在用户计算机上。

    在用户计算机上设置防篡改数据存储,以防用户有篡改数据的动机,只是自找麻烦。集中存储数据,使用网络服务收集数据。

    【讨论】:

      【解决方案4】:

      如果有人拥有 sa 级别的访问权限,您将无法阻止。但是普通用户不应该有 sa 访问权限。

      您可以通过赠款帮助将其与普通用户隔离,例如仅授予您的应用程序用户对 INSERT、UPDATE、DELETE(或 EXECUTE,如果您使用的是存储过程而不是直接 SQL)的访问权限,并且仅授予其他用户 SELECT(或不)访问权限。

      您可以做一些其他事情来分散临时用户的注意力,也许可以通过对插入/更新/删除的触发器检查来强制这些操作仅由您的应用程序用户执行。我不会推荐它,但你可以做到。

      【讨论】:

      • 虽然数据库实例位于他们的机器上,但普通用户将拥有 sa 访问权限。
      • @Martin Smith:在公司领域,也许不是。本地管理员通常受到控制。但是为什么要安装 express 呢?
      • @gbn - 我假设(可能是错误的)这是他们销售的产品,因此无法控制。
      • @Martin,你是对的,我们出售程序和数据库成为客户的责任。另外,客户端可以使用现有的 SQL Server 实例,而不是安装 Express(或者可以,直到现在)。
      • @djeidot:如果可以移交给现有的 SQL 服务器,则无法保证。在我的域中,您不允许使用 Express...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      相关资源
      最近更新 更多