我有一个域用户帐户(假设在 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 跳身份验证,对吗?
答案1
通常,您需要注册 FQDN SPN 和 Netbios 名称 SPN:MSSQLSvc/svra.mydomain.com:1433 和 MSSQLSvc/svra:1433
对于辅助实例 (inst2),您需要该实例的 TCP 端口 MSSQLSvc/svra:1500 的 SPN(例如)
此外,如果 SQL Server 服务进程在域帐户下运行,您也需要指定这一点,例如
MSSQLSvc/svra.mydomain.com:1433
请注意,如果您以 LOCALSYSTEM 身份运行 SQL Server 服务进程,则这些 SPN 会自动创建。
最后,您需要在域中的 IIS 服务器的计算机帐户上设置“信任委派”标志。
答案2
这不包括委派部分,但涵盖设置身份验证和正确获取 SPN:
答案3
每个实例都需要一个 SPN,SPN 末尾的端口指定多实例计算机上的实例。在某些环境中,您可能需要为 netbios 和 FQDN 都设置一个 SPN。SPN 必须属于当前服务帐户,而不是任何其他帐户。请参阅 KB 811889 如何解决“无法生成 SSPI 上下文”错误消息
此外,使用同一个帐户进行多项服务也违反了最佳安全做法。