1
数据库原理与应用技术
1.11.1.1 10.1.1 身份验证
10.1.1 身份验证

作为网络操作系统上的应用服务,SQL Server的安全性可以借助操作系统的安全机制。SQL Server完全集成了Windows中的安全系统,允许用户使用单一的用户名和口令访问SQL Server和Windows。

SQL Server支持三种登录验证模式:SQL Server验证、Windows验证和SQL Server验证与Windows验证的混合验证模式。

用SQL Server验证时,系统管理员为每个用户创建一个登录账号和口令。只有提供登录账号和口令,用户才可以连接到SQL Server上。

用Windows 验证时,被授权连接SQL Server服务器的Windows 账号或组在连接SQL Server时不必提供登录账号和口令,认为Windows已经对用户进行了身份验证。但是SQL Server系统管理员必须将Windows账号或组映射成SQL Server的登录账号。该验证模式将用户账号的管理交给了Windows去完成,这减轻了数据库管理员的工作量。

注意:使用该验证模式,要在客户端和服务器间建立连接。使用该验证模式时,应该满足以下两个条件之一。

(1) 客户端的用户必须有合法的服务器上的Windows账户,服务器能够在自己的域中或信任域中验证该用户。

(2) 服务器启动了Guest账户。因为该方法会带来安全隐患,故不是一个好方法。

除了有SQL Server或Windows验证外,还可以采用混合验证模式,让用户使用Windows验证或SQL Server验证与SQL Server实例连接。混合验证模式将区分用户账号在Windows操作系统下是否可信,对于可信连接用户,系统将直接采用Windows验证机制,否则SQL Server 会通过账户的存在性和密码的匹配性自行进行验证。例如,允许某些非可信的Windows用户(Internet客户)连接到SQL Server,通过检查是否已设置SQL Server登录账户及输入的密码是否与设置的密码相符来进行身份验证。如果SQL Server未设置登录账户,则身份验证失败,而且用户会收到错误信息。

使用哪种验证模式取决于在最初的通信过程中使用的网络库。如果用户使用的是 TCP/IP Sockets进行登录验证,则使用SQL Server验证模式;如果用户使用命名管道,则登录时将使用Windows验证模式,这种模式能更好地适应用户的各种环境。

混合验证模式具有以下优点。

(1) 创建了Windows之上的另外一个安全层次。

(2) 支持更大范围的用户,如Unix/Linux用户等。

(3) 一个应用程序可以使用单个的SQL Server登录账户和口令。

由此可以看出:验证模式的选择通常与网络验证的模型和客户端与服务器间的通信协议有关。如果网络处于Windows,则用户登录到Windows时已经得到了确认,因此,使用Windows验证模式可以减轻系统的工作负担;但是,对于连接到Windows Server客户端以外的其他客户端,必须使用SQL Server验证模式。