选择身份验证模式

适用范围:SQL Server

在安装过程中,必须为数据库引擎选择身份验证模式。 可供选择的模式有两种:Windows 身份验证模式和混合模式。 Windows 身份验证模式会启用 Windows 身份验证并禁用 SQL Server 身份验证。 混合模式会同时启用 Windows 身份验证和 SQL Server 身份验证。 Windows 身份验证始终可用,并且无法禁用。

配置身份验证模式

如果在安装过程中选择混合模式身份验证(SQL Server 和 Windows 身份验证模式),则必须为名为 sa 的内置 SQL Server 系统管理员帐户提供一个强密码并确认该密码。 sa 帐户通过使用 SQL Server 身份验证进行连接。

如果在安装过程中选择 Windows 身份验证,则安装程序会为 SQL Server 身份验证创建 sa 帐户,但会禁用该帐户。 如果稍后更改为混合模式身份验证并要使用 sa 帐户,则必须启用该帐户。 可以将任何 Windows 或 SQL Server 帐户配置为系统管理员。 由于 sa 帐户广为人知且经常成为恶意用户的攻击目标,因此除非应用程序需要使用 sa 帐户,否则请勿启用。 切勿为 sa 帐户设置空密码或弱密码。 若要从 Windows 身份验证模式更改为混合模式身份验证并使用 SQL Server 身份验证,请参阅更改服务器身份验证模式

通过 Windows 身份验证进行连接

当用户通过 Windows 用户帐户连接时,SQL Server 使用操作系统中的 Windows 主体令牌来验证帐户名和密码。 也就是说,用户身份由 Windows 进行确认。 SQL Server 不要求提供密码,也不执行身份验证。 Windows 身份验证是默认的身份验证模式,而且比 SQL Server 身份验证更安全。 Windows 身份验证使用新技术 LAN 管理器 (NTLM) 或 Kerberos 安全协议,提供有关强密码复杂性验证的密码策略强制措施,还提供帐户锁定支持,并且支持密码过期。 通过 Windows 身份验证创建的连接有时也称为可信连接,这是因为 SQL Server 信任由 Windows 提供的凭据。

有关配置 Kerberos 的详细信息,请参阅为 Kerberos 连接注册服务主体名称

通过使用 Windows 身份验证,可以在域级别创建 Windows 组,并且可以在 SQL Server 中为整个组创建登录名。 在域级别管理访问可以简化帐户管理。

重要

请尽可能使用 Windows 身份验证。

通过 SQL Server 身份验证进行连接

使用 SQL Server 身份验证时,登录名是在不基于 Windows 用户帐户的 SQL Server 中创建的。 用户名和密码是使用 SQL Server 创建的,存储在 SQL Server 中。 使用 SQL Server 身份验证进行连接的用户每次连接时都必须提供其凭据(登录名和密码)。 当使用 SQL Server 身份验证时,必须为所有 SQL Server 帐户设置强密码。 有关强密码的指南,请参阅 Strong Passwords

可供 SQL Server 登录名选择使用的密码策略有三种。

  • 用户在下次登录时必须更改密码

    要求用户在下次连接时更改密码。 更改密码的功能由 SQL Server Management Studio 提供。 如果使用此选项,则其他公司软件开发人员应提供此功能。

  • 强制密码过期

    对 SQL Server 登录名强制实施计算机的密码最长使用期限策略。

  • 强制实施密码策略

    对 SQL Server 登录名强制实施计算机的 Windows 密码策略。 这包括密码长度和密码复杂性。 此功能需要通过 NetValidatePasswordPolicy API 实现,该 API 只在 Windows Server 2003 和更高版本中提供。

确定本地计算机的密码策略

  1. 在“开始”菜单上,选择“运行”。

  2. 在“运行”对话框中,键入 secpol.msc,然后选择“确定”

  3. 在“本地安全设置”应用程序中,依次展开“安全设置”、“帐户策略”,然后选择“密码策略”

    密码策略将如结果窗格中所示。

SQL Server 身份验证的缺点

  • 如果用户是拥有 Windows 登录名和密码的 Windows 域用户,则还必须提供另一个(SQL Server) 登录名和密码才能连接。 记住多个登录名和密码对于许多用户而言都较为困难。 用户每次连接到数据库时都必须提供 SQL Server 凭据也十分烦人。

  • SQL Server 身份验证无法使用 Kerberos 安全协议。

  • SQL Server 登录名不能使用 Windows 提供的其他密码策略。

  • 必须在连接时通过网络传递已加密的 SQL Server 身份验证登录密码。 一些自动连接的应用程序将密码存储在客户端。 这可能产生其他攻击点。

SQL Server 身份验证的优点

  • 允许 SQL Server 支持旧式应用程序,以及第三方提供的、需要 SQL Server 身份验证的应用程序。

  • 允许 SQL Server 支持具有混合操作系统的环境,在这种环境中并不是所有用户均由 Windows 域进行验证。

  • 可让用户从未知或不受信任的域进行连接。 例如,在某个应用程序中,指定的客户可以使用分配的 SQL Server 登录名建立连接,以接收其订单的状态。

  • 允许 SQL Server 支持基于 Web 的应用程序(用户可在其中创建自己的标识)。

  • 可让软件开发人员基于已知的预设 SQL Server 登录名使用复杂的权限层次结构来分发应用程序。

    注意

    使用 SQL Server 身份验证不会限制安装 SQL Server 的计算机上的本地管理员权限。