【问题标题】:SQL Server Security Configuration Options for Windows Desktop Client/Server applicationWindows 桌面客户端/服务器应用程序的 SQL Server 安全配置选项
【发布时间】:2009-12-17 14:16:36
【问题描述】:

我正在.NET 中开发一个 Windows 桌面客户端/服务器应用程序,其中客户端应用程序通过 SQL 本机客户端和连接字符串连接到 SQL Server Express 2005。然后,客户端直接通过数据库上的连接执行 SQL(无存储过程)。

如何配置 SQL Server(或 Windows)安全性,使只有我签名的应用程序二进制文件可以连接到数据库,而客户端计算机上没有其他内容? (即不是 SQL Server Management Studio Express、我的二进制文件的黑客版本或其他恶意代码)我需要在我的应用程序中嵌入加密密钥吗?如果是这样,如何保护它们免受反汇编攻击?

客户端或服务器计算机可以放置在公司域中。使用 SQL Server 完整版而不是 SQL Server Express 也是一种选择。我还希望仍然能够在服务器计算机上本地运行 SSMSE 以进行升级和支持工作(服务器将具有物理门锁安全性以防止对其进行访问)。

我的应用程序需要从表中读取数据来计算摘要信息。摘要信息不需要保护,但详细的单个行需要保护。我认为这个要求不包括任何形式的基于表的权限与 windows 帐户或 sql server 用户名和密码相结合。

【问题讨论】:

    标签: .net sql-server windows security desktop-application


    【解决方案1】:

    我会使用某种 windows 帐户用户名和密码组合 :-)

    撇开讽刺不谈,您所说的只是权限。使用您控制的用户帐户将您的应用连接到 SQL 服务器,并且不要向用户提供帐户凭据。问题解决了。嗯,差不多。

    “进入”的唯一其他方式是使用像管理员或 SA 这样的帐户,该帐户具有授予对整个 SQL 服务器的访问权限的服务器角色,因此您必须确保用户无权通过以下方式访问 SQL 服务器那条路。这很简单——限制 SQL Server 中的 Builtin\Administrators 组,例如只给它 Public 而不是 sysadmin,禁用 SA 帐户(如果服务器具有混合模式身份验证),并用您控制的另一个帐户替换为充当系统管理员。小心不要把自己锁在外面:-)。

    【讨论】:

    • 谢谢。我发现了更多信息。 Builtin\Administrators 和 Builtin\Users 组分别与可以作为管理员或用户登录机器的用户相关。这可能包括很多帐户。例如,本地 pc 管理员、域管理员以及在 Builtin\Users 情况下,具有域登录的任何人。因此,我将不得不小心这些。
    【解决方案2】:

    您想研究在 SQL Server 中使用应用程序角色。我不确定这些在 express 上的可用性。

    这里有一些关于Application Roles的信息

    【讨论】:

    • 谢谢,我还没有调查。我确信它很有帮助,但我注意到它是从 2000 年开始的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2021-03-20
    • 2013-08-08
    相关资源
    最近更新 更多