是否可以从服务器的管理员密码保护SQL Server数据库?

时间:2010-12-29 07:50:28

标签: sql database sql-server-2005 security

我想在一些小公司的本地网络中安装一个应用程序(ASP.Net + SQL server 2005 express),用于演示它一段时间,但我也希望没有人甚至sysadmin 没有对此数据库的权限,任何权限授予都需要我拥有的安全通行证。 我只想隐藏表格结构和关系及功能,加密数据没有优势

我需要花更多时间在这篇文章Database Encryption in SQL Server 2008 Enterprise Edition上,我从这个答案中找到is-it-possible-to-password-protect-an-sql-server-database

1.我希望确定并更清楚,因为此页面中的other answer说:

  

是。你可以保护它免受每个人的伤害   除了的管理员   服务器

2.如果可能,db必须是企业版吗?

3.还有其他可能的解决方案和解决方法吗?

4.如果我使用自己的sa密码安装新实例,我可以限制其他实例管理员将mdf附加到自己的密码吗?

提前致谢

5 个答案:

答案 0 :(得分:2)

无论您做什么,这些人都可以访问您的服务器或SQL Server实例

  • 任何有物理访问权限的人
  • 网络的域管理员
  • 任何拥有sa密码的人
  • 具有本地管理员和/或sa权限的Windows组(这意味着组策略等)

如果您不希望任何人登录,您必须在异地托管您的服务器。

简单

答案 1 :(得分:1)

在SQL Server中,您不能“密码保护”数据库 - 您可以做的是限制给定用户或角色在数据库中的权限。

您可以DENY任何人访问您的数据库 - 但这有点奇怪,因为没有人能够使用它....

您可以对数据库表和登录执行各种操作 - 但系统管理员始终可以绕过这些内容并访问数据库。只要系统管理员可以在服务器上实际操作,我认为没有办法完全关闭它们。

如果你甚至不信任你的系统管理员,你就会遇到更大的问题......

答案 2 :(得分:1)

有几种不同的方法可以解决这个问题。

  1. 将其托管在异地 - 我认为最简单的解决方案就是将其托管在异地。那里有很多廉价的共享主机你可以使用。

  2. 从该服务器锁定系统管理员。假设您具有root访问权限,并且只有您使用/需要该服务器,则可以更改服务器上的root密码和任何其他密码。

  3. 执行您当前正在执行的操作,并尝试确保安全,即使不应该访问的人具有对服务器的root访问权限。这种方式即使充其量也听起来很棘手且不安全。

答案 3 :(得分:1)

我为(3)做出了贡献:

我猜测(我可能错了)你的数据库中实际上没有敏感信息,你只是想让本地网络中的某个人无法使用你的任何东西。

如果是这种情况,您可以通过加密数据库中的数据并让您的(已编译的)代码在使用之前对其进行解密,从而使他们更难以读取您的数据。

这样,任何只是对数据感到好奇或想要将他的核心更改为13371337的系统管理员都不会想要解决代码和/或破解加密的麻烦(在演示期间)和你的(假定的)问题将得到解决。

我不知道这对你有什么帮助,我想我只想说你可能想再看一下你的问题。由于你不能让系统管理员远离你的东西,你可能想采取一种不同的方法,比如使它对它们不那么有用。

答案 4 :(得分:1)

正如其他各种海报所讨论的那样,你不能{system =}拒绝权限 - 系统管理员。尚未讨论的一种替代方案是在笔记本电脑上托管它。由于这是一个演示,您可以在笔记本电脑上托管数据库和ASP.Net站点并将其连接到他们的网络 - 当然是在Sysadmin许可之后 - 让客户端从您的笔记本电脑上测试应用程序。

这将允许您保护数据库免受系统管理员的攻击,并提供额外的好处,如果您想让他们看到数据库,您可以让他们使用您的笔记本电脑,您将在那里观察他们对您的数据库的操作。最后一个好处是您无法轻松使用托管解决方案。

以上答案指出3.对于第2点,您需要SQL Server企业版才能根据comparison link on MSDN利用透明数据加密(TDE)。如果单击顶部的Enterprise Security链接,它将显示一个表格,说明不同SQL Server版本的不同安全功能,并显示TDE仅适用于Enterprise Edition。