我们有 4 台服务器,都是同一个域的成员:
1. SQL 2012 on Windows Server 2016
2. SQL 2012 on Windows Server 2012
3. SQL 2017 on Windows Server 2016
4. SQL 2017 on Windows Server 2016
我注意到在前两台服务器上,域用户仅使用 NTLM 进行连接(sys.dm_exec_connections DMV,auth_scheme 列)
研究如何将 auth_scheme 更改为 Kerberos,了解到必须将“写入 ServicePrincipalName”权限授予 Active Directory 服务接口中的 SQL Server 服务帐户(ADSI 编辑)
Right now privilege "Write ServicePrincipalName" is NOT granted to the service account
在授予 SQL 服务帐户该权限之前,我决定检查第 3 台和第 4 台服务器上的 auth_scheme,并发现域用户实际上是使用 Kerberos auth_scheme 连接到这些服务器
问题是 - 当 SQL 服务帐户的“Write ServicePrincipalName”权限被关闭时,域用户如何使用 Kerberos 身份验证连接到服务器 3 和 4,并同时作为 NTLM 连接到服务器 1 和 2?
某处是否有一些设置,这使得服务器 1,2 和 3,4 以及用户如何连接到它们之间有所不同?
Kerberos 工作不需要该权限,它仅允许服务帐户注册自己的服务主体名称 (SPN)。
请参阅为 Kerberos 连接注册服务主体名称
我至少可以想到两种可以解释这一点的方法。
Kerberos 身份验证要求您为服务帐户运行的服务注册服务主体名称,以执行 Kerberos 身份验证工作所需的交换。
您可以使用 Microsoft 的Kerberos 配置管理器轻松验证您的 SPN 。一旦您验证并修复了任何 SPN 差异,请确认您的用户是否在双跳方案中进行连接。如果不是,那么 NTLM 可能是正确的机制。查看此博客文章以确定您的用户是否应该使用 NTLM 或 Kerberos。