Kerberos 身份验证与 SQL Server

Kerberos 是一种网络身份验证协议,它提供了一种用于对网络上的客户端和服务器实体(安全主体)进行身份验证的极为安全的方法。这些安全主体使用基于主密钥和加密票证的身份验证。

Kerberos 协议模式中,每个客户端/服务器连接开始时都会进行身份验证。客户端和服务器轮流依次执行一系列操作,这些操作用于向连接每一端的一方确认另一端的一方是真实的。如果身份验证成功,则会话设置完成,从而建立了一个安全的客户端/服务器会话。

下面列出了 Kerberos 身份验证的其中一些主要优点:

  • 相互验证身份。客户端可以验证服务器主体的身份,服务器也可以验证客户端。尽管可以在两个服务器之间建立安全的网络连接,但本文档自始至终都将这两个实体称为“客户端”和“服务器”。

  • 安全的身份验证票证。仅使用加密票证,且密码绝不会包含在票证中。

  • 集成的身份验证。用户登录后,只要客户端票证未过期,该用户就无需再次登录便可访问支持 Kerberos 身份验证的任何服务。每个票证都具有一个生存期,此生存期由生成此票证的 Kerberos 领域的策略决定。

Kerberos 提供了一种先在实体之间相互验证身份再建立安全网络连接的机制。Kerberos 利用密钥发行中心 (KDC) 这个可信的第三方来帮助生成和安全分发身份验证票证和对称会话密钥。KDC 以服务的形式运行在安全的服务器上,并为其领域中所有的安全主体维护一个数据库。对 Kerberos 而言,领域相当于一个 Windows 域。

注意注意

主密钥的安全由客户端和服务器负责,KDC 仅提供票证授予服务。

在 Windows 环境中,对 KDC 的操作由域控制器进行,并且操作时通常会用到 Active Directory。所有 Windows 域用户实际上都是 Kerberos 主体,因而都可以使用 Kerberos 身份验证。

Kerberos 与 SQL Server

当 SQL Server 使用的是 Windows 身份验证时,SQL Server 可通过 Windows 安全支持提供程序接口 (SSPI) 间接地支持 Kerberos。SSPI 允许应用程序使用计算机或网络中可用的各种安全模式,而无需更改与安全系统的接口。

SQL Server 允许 SSPI 协商要使用的身份验证协议;如果无法使用 Kerberos,Windows 将回退到 Windows NT 质询/响应 (NTLM) 身份验证。

SQL Server 2008 支持通过以下协议进行 Kerberos 身份验证:

  • TCP/IP

  • Named pipes

  • Shared memory

有关上述协议的详细信息,请参阅网络协议和 TDS 端点

建议您在建立与 SQL Server 实例的连接时尽可能使用 Kerberos 身份验证,这是最佳的做法。