将SQL Server锁定到Web服务器上的特定应用程序

时间:2008-11-17 15:15:41

标签: sql-server security web-applications

我很好奇,有没有办法告诉SQL Server特定组只能从一个位置/应用程序访问数据库。我有一个SQL Server和一个Web服务器。我们的应用程序使用存储过程,每个存储过程的访问权限基于允许访问它的角色。然后根据用户组执行的功能为用户组分配角色。作为一个额外的安全层,我想指定这些用户可以从中访问数据库的Web应用程序。

我认为这太过分了。存储过程名称始终对用户隐藏(所有错误都被隐藏,向用户显示通用的“抱歉这不起作用”)。用户只能访问允许执行的存储过程。它只是一个很好的额外安全保护,所以如果一个表意外地授予每个人完全访问权限,数据库只允许从一个位置完全访问。

3 个答案:

答案 0 :(得分:0)

我建议将应用程序/应用程序池作为服务帐户运行,该帐户对程序有权限,但不向用户自己授予任何权限。这不需要在数据库级别实现用户安全性,而是在应用级别实现..

答案 1 :(得分:0)

在连接字符串中,您可以设置Application Name=MyAppName - 这不是真正的安全性,但您可以在SP(sysprocesses - program_name列中)和{ {1}}。

您无法对表格做任何事情 - 这就是为什么我建议无人处于任何角色,允许访问表格(sp_whoSELECTINSERTUPDATE)。

您可以使用一些自动化的T-SQL定期对此进行审核,以确保没有人做过任何愚蠢的事情。

我不是以任何方式提倡这个,但你可以为视图做这样的事情(比较当前进程的SPID和program_name):

DELETE

答案 2 :(得分:0)

最简单的方法是将其锁定在用户级别。您可以在具有所需权限的特定安全上下文中运行您的win / Web应用程序。

这样可以强制用户运行您的应用程序以与SQL交互,而不仅仅是打开企业管理器或其他任何内容。