传统观点认为,使用Windows用户登录到SQL Server比使用SQL Server用户登录更安全。但是身份验证是否几乎完全相同?
当您以数据库用户身份登录到SQL Server时,将使用加密的密码创建一个登录数据包。证书将附加到数据包并发送到数据库。证书通过身份验证后,哈希密码将与存储在数据库中的哈希密码匹配。如果它们匹配,则您已登录。
当您使用Windows用户登录SQL Server时,MSGINA将创建一个登录数据包,但是我不确定是否或如何对其进行加密。附加了证书,并将数据包发送到LSA。证书通过身份验证后,如何验证凭据?
为了使这个问题公平,假定证书服务以及创建密码哈希的方法相同。在这种情况下,这两种方法似乎同样容易受到中间人攻击来拦截登录数据包的攻击。
取决于您如何定义“安全”。除了身份验证机制的加密细节之外,安全性还不止于此。例如:
使用SQL Server身份验证,帐户/密码在DBA的控制之下。使用Windows身份验证(到域),它们受域管理员的控制。
使用域身份验证时,安全策略(例如,密码强度,密码时效,密码长度,允许的登录位置/时间,禁用帐户)易于管理(例如,通过组策略)并进行审核。
域身份验证可以使用多种因素(例如安全令牌),而SQL Server身份验证(AFAIK)不能。
AD身份验证(通常更广泛地说是Kerberos)中的MITM漏洞将是个大新闻。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句