Windows桌面客户端/服务器应用程序的SQL Server安全配置选项

时间:2009-12-17 14:16:36

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

我正在.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用户名和密码相结合的任何形式的基于表的权限。

2 个答案:

答案 0 :(得分:0)

您希望在SQL Server中使用应用程序角色。我不确定这些是否可用于快递。

以下是Application Roles

的一些信息

答案 1 :(得分:0)

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

抛开讽刺,你所说的只是权限。使用您控制的用户帐户将您的应用程序连接到SQL服务器,为用户提供帐户凭据。问题解决了。好吧,差不多。

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