在什么情况下*本地*用户帐户可以通过受信任的连接访问远程 SQL Server?

在什么情况下*本地*用户帐户可以通过受信任的连接访问远程 SQL Server?

我们的一个客户有以下配置:

  • 在域控制器上,有一个 SQL Server。
  • 在他的个人电脑(WinXP)上,他使用 登录LocalPC\LocalUser
  • 在 Windows 资源管理器中,他打开DomainController\SomeShare并以 身份进行验证Domain\Administrator
  • 他启动了我们的应用程序,该应用程序打开了与 SQL Server 的受信任连接(Windows 身份验证)。它起作用了。在 SSMS 中,该连接与用户一起显示Domain\Administrator

首先,我很惊讶这竟然有效。(我的第一个怀疑是域中有一个具有相同名称和密码的用户,但LocalUser域中没有用户。)

然后我们尝试在他的新电脑上重现同样的行为,但是失败了:

  • 在他的新电脑(Win7)上,他使用 登录OtherLocalPC\OtherLocalUser
  • 在 Windows 资源管理器中,他打开DomainController\SomeShare并以 身份进行验证Domain\Administrator
  • 他启动了我们的应用程序,该应用程序打开了与 SQL Server 的受信任连接(Windows 身份验证)。它失败并显示错误消息Login failed for user ''. The user is not associated with a trusted SQL Server connection.

因此我的问题是:在什么条件下非域用户可以使用具有不同凭据的 Windows 身份验证访问远程 SQL Server?显然,这是可能的(它可以在他的旧电脑上运行),但为什么呢?我该如何重现它?

答案1

正如 Bernie White 提到的,这可能是由于 kerberos 配置的差异造成的。 KerbTray可以在 WinXP 上运行,klist内置于 W7 及更高版本。

除此之外,如果您尝试解决的问题是能够使用 Windows 身份验证的 SQL 服务器,那么您可以通过运行来实现runas /netonly /user:DOMAIN\Administrator application.exe

我使用的另一种方法是让用户通过 VPN 拨入,即使他们位于内部网络上。这样做会导致网络凭据用于所有打开的应用程序,并且具有允许 Outlook、SQL Server、LDAP 和他们可以访问的任何其他应用程序进行 SSO 的好处。

相关内容