这是一个相当简短的问题:
使用 Microsoft SQL Server(版本 2005 和更新版本)时,是否有任何与安全相关的原因更喜欢 Windows 身份验证而不是 SQL Server 身份验证?
只是指出,我对安全相关的问题感兴趣,而不是管理或两者之间的任何其他差异。
更新:如果任何差异导致(或是)安全问题,那么我肯定会感兴趣。
这是一个相当简短的问题:
使用 Microsoft SQL Server(版本 2005 和更新版本)时,是否有任何与安全相关的原因更喜欢 Windows 身份验证而不是 SQL Server 身份验证?
只是指出,我对安全相关的问题感兴趣,而不是管理或两者之间的任何其他差异。
更新:如果任何差异导致(或是)安全问题,那么我肯定会感兴趣。
一个例子,职责分离
在 Web 服务器上,服务帐户的密码只有一个团队知道。不需要在 web.config 或源代码控制中到处乱逛。
如果您想通过涉及 PCI 或 SoX 的审核,那么您需要有这个
使用 Windows 身份验证,用户名和密码永远不会传输到 SQL Server。仅传递用户 Kerberos 或 NTLM 令牌。
使用 SQL 身份验证时,实际的用户名和密码会被传递,但它们不会以明文形式传递。身份验证过程通过 SSL 使用自签名证书进行加密,以确保用户名和密码不会以明文形式传递。这确实意味着中间人攻击是可能的,因为证书不是由公认的证书颁发机构生成的。现在,如果您的 SQL Server 配置了来自 CA 的证书,那么该证书将用于身份验证 SSL 加密,而不是自签名证书。
无论使用哪种身份验证方法,都应加密应用程序中的连接字符串。
现在关于 Windows 身份验证的好处是 DBA 不需要知道帐户的密码。这一切都由应用程序处理。当然,这没什么大不了的,如果我愿意的话,我可以整天使用 execute as 作为应用程序帐户运行命令。
使用 SQL 帐户,安装软件的管理员可以很容易地设置密码,或更改密码以使 DBA 不知道该密码。
Windows 帐户的另一个好处是您确定密码将符合公司安全策略。SQL 密码可以禁用策略并更改密码,然后重新应用策略,这意味着密码可能不符合所需的策略。