我有一个域用户帐户(比如说在 mydomain.com 中),它被设置为多台机器上众多 SQL Server 2005 实例的登录帐户。我想让这个域帐户(而不是机器帐户)受信任以进行委派,主要是通过链接服务器在 SQL 服务器之间进行 2 跳身份验证。链接服务器安全性将被配置为使用现有连接的上下文,并且所有 SQL Server 实例都在所述域帐户的上下文下运行。
为了参数起见,这将是 SQL 实例的实例名称: svra(默认 sql 实例) svra\inst2(命名 sql 实例) svrb(默认 sql 实例)
那么,我想,我想在 Active Directory 中注册的 SPN 将是 MSSQLSvc/svra.mydomain.com:1433 MSSQLSvc/svrb.mydomain.com:1433
对于 svra 上的命名实例,我不需要第三个,对吗?
有人可以确认这是 SPN 的正确格式吗?此外,这将允许在同一域帐户下运行的 IIS 对 SQL 实例进行 2 跳身份验证,对吗?
通常您需要同时注册 FQDN SPN 和 Netbios 名称 SPN:MSSQLSvc/svra.mydomain.com:1433 AND MSSQLSvc/svra:1433
对于辅助实例 (inst2),您需要该实例的 TCP 端口 MSSQLSvc/svra:1500 的 SPN(例如)
此外,如果 SQL Server 服务进程在域帐户下运行,您还需要指定它,例如
MSSQLSvc/svra.mydomain.com:1433
请注意,如果您以 LOCALSYSTEM 身份运行 SQL Server 服务进程,则会自动创建这些 SPN。
最后,您需要在域中 IIS 服务器的计算机帐户上设置“受信任的委派”标志。
这不包括委托部分,但它包括设置身份验证和正确获取 SPN:
配置 Kerberos 身份验证
每个实例都需要一个 SPN,SPN 末尾的端口指定多实例计算机上的实例。在某些环境中,您可能需要为 netbios 和 FQDN 提供 SPN。SPN 必须属于当前服务帐户,而不是任何其他帐户。请参阅 KB 811889 如何解决“无法生成 SSPI 上下文”错误消息
此外,将同一帐户用于一项以上的服务也违反了安全最佳实践。