链接服务器在同一服务器上时双跳,差异服务器上的客户端?

Posted

技术标签:

【中文标题】链接服务器在同一服务器上时双跳,差异服务器上的客户端?【英文标题】:Double Hop when Linked Servers are on Same Server, Client on Diff Server? 【发布时间】:2018-04-05 14:47:13 【问题描述】:

我正在尝试解开一个谜。我们有两个 SQL Server 实例驻留在同一台服务器上。 SQL 实例 A 链接到 SQL 实例 B。使用传递身份验证进行连接。调用服务位于不同的服务器上。没有为 Kerberos 委派、没有 SPN、没有信任委派等设置任何设置。但是,通过链接服务器连接运行分布式查询时,我们没有遇到身份验证失败。这对我来说毫无意义,除非在单个服务器上拥有两个实例会导致单跳场景(从调用客户端服务到两个实例所在的服务器)。底层 Kerberos 配置现已到位,因此 Kerberos 已成功使用,我只是想了解在进行必要更改之前连接是如何工作的。有没有人对此有任何见解?谢谢。

【问题讨论】:

实例是否在同一个用户帐户下运行? 是的,两个实例的 SQL Server 服务帐户都配置为使用相同的 AD 帐户。但是,从客户端传递的凭据与 SQL Server 服务帐户凭据不同。 是的,我知道,但我的工作假设(我不是 Kerberos 专家,所以我肯定是错的 :-))是用户的本地缓存票证(他们已经两个实例都可以访问登录到服务器 A),因为它们在同一台机器上使用相同的凭据,并且 LSASS 不是按进程区分,而是按用户令牌(这对两个服务器都是相同的)进行区分。因此,它根本不会被视为一个跃点,因为第二个实例不需要去域进行验证。不过,我懒得显式设置这个配置来测试它。 你提出了一个有趣且合理的理论,Jeroen。感谢您花时间考虑这个问题。 【参考方案1】:

“跃点”的数量由所涉及的不同“本地安全机构”的数量给出。当您在同一台机器上有两个 SQL Server 实例时,只涉及一个 LSA,因此不需要委派。

【讨论】:

以上是关于链接服务器在同一服务器上时双跳,差异服务器上的客户端?的主要内容,如果未能解决你的问题,请参考以下文章

当客户端和服务器在同一台机器上时,Kerberos 身份验证未运行

使用双跳 Windows 身份验证连接到 Microsoft Analysis Services 多维数据集

Oracle:同一服务器上的数据库之间的性能差异 300 倍

NT AUTHORITY\ANONYMOUS LOGON 错误(双跳)

如何在同一本地/src 地址上创建多个 UDP 数据报通道/流

ASP.NET 4 中的双跳模拟、协议转换和约束委派