这里的想法是执行双跃点并将[email protected]
已发送到SQL2.example.org
服务器的客户端 ( ) 的凭据委托给 SQL3.example.org (诚然,这是一个 SMB 文件共享,而不是SQL Server
)
我的信念是我需要委托凭据才能访问文件共享,因为我在尝试访问 SQL2 服务器上的VIEW时收到的错误消息是使用指向 SMB的VFPOLEDB 提供程序从链接服务器中提取的在没有 SPN 设置的情况下使用KERBEROS auth_scheme与客户端连接时在 SQL3 上共享:
OLE DB provider "VFPOLEDB" for linked server "LINKEDSERVERNAME" returned message "Invalid path or file name.".
Msg 7303, Level 16, State 1, Procedure hatsum, Line 5
Cannot initialize the data source object of OLE DB provider "VFPOLEDB" for linked server "LINKEDSERVERNAME".
因此,这使我相信正确端口上的 SQL2 和 SQL3 计算机上的 SPN 会将客户端凭据委派给 SMB 共享。(当然使用约束委派...)
知道我需要什么样的 SPN / AD 计算机委派设置才能实现吗?
请注意,当使用任何其他类型的 auth_scheme 进行连接时,无论是 NTLM 还是 SQL,我都可以毫无问题地查询链接服务器;但是当使用KERBEROS auth_scheme时,它会产生上面的错误消息。
我也知道我可以列出已经使用设置的 SPNsetspn -l <server-name>
SQL Server 只需要一种服务主体名称。
通常需要执行两次,一次用于短名称,一次用于长名称。例如,如果 SQL Server 名为“SQLServer1.somedomain.com”并且在端口 1433 上运行,那么您需要:
Active Directory 中的计算机帐户
SQLServer1.somedomain.com
应被授予委派安全性的能力。一旦正常工作,您可以通过查看以下内容来确认 Kerberos 身份验证是否正常工作:如果这显示
Kerberos
在auth_scheme
列中,则 Kerberos 身份验证正在运行。如果链接服务器的另一端有第二个 SQL Server,则可以在链接服务器上运行该查询:该错误消息让我认为您看到文件共享权限存在问题 - 使用 Kerberos SQL Server 时会在访问 SMB 共享时模拟您 - 因此您的帐户需要访问它。