我使用的是面向Internet的基于ASP.NET的产品,该产品使用SQL Server 2005.大多数客户使用传统方法部署我们的软件,其中应用服务器(IIS)位于DMZ中,而SQL Server则位于辅助服务器之后防火墙。
我们想选择一种SQL Server身份验证。从安全角度和/或客户角度来看,什么是集成或SQL Server身份验证首选?
我已阅读相关帖子,如果重要,我们的应用程序直接使用SQL,以及存储过程。我们的应用程序实现了一个安全模型,因此我们不需要能够区分SQL Server中的用户。
谢谢, 斯科特
答案 0 :(得分:3)
要么会这样做。我被告知集成身份验证更安全,因为它不会通过网络传递sql登录信息。身份验证的类型不如访问数据库的帐户的权限那么重要。
如果您要将此内容提供给客户端进行安装,我可能会使用sql身份验证,因为这不需要其他系统来验证用户(如活动目录)。
Mithcel提出了让客户配置它的好处。我已经看到过明确禁止SQL身份验证的地方,以及使用Active Directory帐户的其他地方(比如我现在工作的地方)是不可能的。
答案 1 :(得分:1)
在向用户提供产品的环境中工作时,我会根据他们配置连接的方式向他们说明。集成安全性和授予ASP.NET工作进程通常称为更安全的路由,但是,某些环境对不允许它的委派有限制。
通常我会看到人们使用具有强密码的SQL Server帐户。
答案 2 :(得分:1)
我主要使用非集成的SQL服务器帐户,难以猜测的帐户名称和非常强的密码 - 然后只授予该帐户的最低权限。
答案 3 :(得分:1)
Windows Auth比SQL Auth更安全,但是如果Web服务器在DMZ中,那么它可能不是Windows域的一部分,并且将需要SQL Auth。
作为已安装供应商软件包的人,我总是建议让客户决定如何进行身份验证。这应该包括将用户名和密码设置为他们想要的东西,这样如果有需要保留的标准则不是问题。
答案 4 :(得分:0)
您可能希望在sql server后端中创建一个用户/登录,该后端具有一组有限权限,例如“WebUser”,用于web配置中的connectionstring。确保您不向该用户授予DDL权限(除非您的应用需要)。
但是,如果您100%确定所有用户都是Windows用户(Windows域的一部分),则将SQL Server身份验证设置为“Windows身份验证”是最安全的方法,因为该身份验证模式将继承域及其用户的策略(priveledges,角色等)。