【问题标题】:Hiding tables from database users [closed]隐藏数据库用户的表[关闭]
【发布时间】:2012-01-12 20:34:16
【问题描述】:

我有一个使用 SQL Server 2008 数据库的 Web 应用程序。我是该项目的开发人员,该项目已在其他地方托管。

我已将项目交付给管理员。现在管理员能够连接到 SQL Server,但我不希望管理员能够看到数据库表。

有什么办法吗?

【问题讨论】:

标签: sql sql-server security sql-server-2008 encryption


【解决方案1】:

我以前见过 ACT 的制造商这样做过。他们的产品安装了一个新的 SQL Server Express 实例,并且作为该过程的一部分,他们加密了该实例的 sa 密码。这使得其他人“不可能”使用他们的产品和附加工具以外的任何东西连接到数据库。 我不确切知道他们是如何做到的,但也许你可以搜索加密 sa 密码或类似的东西并找出如何做到这一点。 不好意思安装您自己的 SQL Server 实例,我不确定您将如何处理。 请记住,您的应用程序将需要提供备份、调整、修改等数据库的能力,因为 DBA 将无法访问 SQL Server 实例。

顺便说一句,我们在看到这一点后就把 ACT 扔掉了——我没有,现在仍然没有,就像在我们的一台服务器上运行黑匣子的想法一样。

最后,您可能会发现(为您,而不是客户)增加的保护层根本不值得恶化。虽然您可能拥有数据库模式形式的专有信息,但客户对您的应用程序进行逆向工程然后制作自己的应用程序的可能性很小。即使他们做到了,也很难制作出好的软件——他们可能无论如何都不会“正确”。

我的建议,不要担心这一点,专注于让您的软件变得更好,这样他们就没有理由自行开发或寻找其他地方。

【讨论】:

    【解决方案2】:

    简单:不,他是 DBA。如果没有使用数据库的能力,他就无法完成他的工作。克服你的反对意见。

    【讨论】:

    • 它说他是管理员而不是数据库管理员 - 据我们所知,他可能是网络管理员和活动目录中域管理员组策略的一部分。
    【解决方案3】:

    您不能限制服务器上管理员的权限。

    管理员还可以访问几乎所有存储您的加密密钥的表,因此 TDE 不起作用。

    如果他是安全管理员或其他角色之一,这可能会解决问题,因为默认情况下此类角色对您的数据没有权限。

    SQL 管理员通常具有这些角色来保护您的数据。他们需要它。 如果数据非常敏感,您需要使用替代方法来保护它,例如在保存敏感值之前应用您自己的加密。 (AES 等)

    【讨论】:

    • SQL Heroes,不是真的,dbdefence 限制了 DBA 角色并隐藏架构对任何使用未记录的 SQL Server 功能的人。
    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2010-12-10
    • 1970-01-01
    • 2016-01-04
    • 2016-10-12
    相关资源
    最近更新 更多