在 SQL Server 2005 / 2008 上设置安全性时,哪个选项更安全?
- 仅限 Windows 身份验证模式
- 混合身份验证
如果服务器将被许多桌面客户端(胖客户端)访问或只有少数 Web 服务器访问,这是否重要?
编辑
为什么它更安全?使用 Windows 身份验证确实意味着我们可以避免将连接字符串放在配置文件中,这是一个优点。
Windows 身份验证还允许我们根据 NT 凭据控制谁可以获得访问权限,我认为当您的客户端直接连接到服务器时这是理想的选择。
然而,我一直想知道的一件事是,当所有客户端都通过代理(例如 Web 服务)时,NT 身份验证有多大用处。
答案1
Windows 身份验证被认为更安全。原因如下:
- 您可以使用 Kerberos 身份验证。Kerberos 协议具有时间戳,可防止重放攻击。它还允许客户端使用受信任的第三方(在 Active Directory 的实现中,这是 DC)验证服务器的身份。
- 它允许单一安全源:Active Directory。因此,一旦您关闭 Active Directory 中的帐户,该帐户在所有地方都将被禁用。
- 在 SQL Server 2005 之前的 SQL Server 版本中,登录数据包不会自动加密。由于我们讨论的是高位和低位翻转和 XOR 运算,因此密码在网络上传递的方式很容易被解密。
- 事实上,您不必将密码放入连接字符串中,但还有其他方法可以解决这个问题。例如,加密用户名/密码并将其存储在注册表中,然后在运行时构建连接字符串。
- 如果启用了此类审核设置(应该启用),则登录 SQL Server 的信息将与其他 Windows 登录信息一起被记录在安全事件日志中。这意味着,如果您的服务器有日志解析/聚合软件,则您不必解析应用程序事件日志或 SQL Server 日志文件。
就您从 Web 服务获得单个帐户而言,您仍然拥有我上面列出的所有相同优势。
答案2
Windows 身份验证更安全,主要是因为用户名和密码不会在连接字符串中传递。Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
与数据源 = myServerAddress;初始目录 = myDataBase;用户 ID = myUsername;密码 = myPassword 相反;
答案3
更安全的是 Windows 身份验证模式,仅假设您总体上具有良好的网络安全性。
您能否详细介绍一下您当前的设置和需求?
答案4
基本上,Windows 身份验证是推荐的身份验证。理论上它是安全的,前提是你已经拥有良好的网络安全。