将 Kerberos 身份验证用于 SQL Server

若要将 Kerberos 身份验证用于 SQL Server,则以下两个条件都必须得到满足:

  • 客户端计算机和服务器计算机必须属于同一 Windows 域或在可信域中。

  • 服务主体名称 (SPN) 必须在 Active Directory 中进行注册,后者在 Windows 域中起到密钥分发中心的作用。SPN 在注册后会映射到启动 SQL Server 实例服务的 Windows 帐户。如果未进行 SPN 注册或注册失败,则 Windows 安全层无法确定与 SPN 关联的帐户,因而无法使用 Kerberos 身份验证。

    注意注意

    如果服务器无法自动注册 SPN,则必须手动注册 SPN。

可以通过查询 sys.dm_exec_connections 动态管理视图来验证连接使用的是否为 Kerberos。请运行下面的查询并检查 auth_scheme 列的值,如果 Kerberos 已启用,该值应为“KERBEROS”。

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid ;

SPN 在身份验证过程中所起的作用

当应用程序打开一个连接并使用 Windows 身份验证时,SQL Server Native Client 会传递 SQL Server 服务器名、实例名和 SPN(可选)。如果该连接传递了 SPN,则使用它时不对它做任何更改。

如果该连接未传递 SPN,则将根据所使用的协议、服务器名和实例名构造一个默认的 SPN。

在上面这两种情况下,都会将 SPN 发送到密钥分发中心以获取用于对连接进行身份验证的安全标记。如果无法获取安全标记,则身份验证采用 NTLM。