作为“网络服务”运行的 Windows 服务使用 Windows 身份验证与其他计算机上的服务(此处为 SQL Server 和 Analysis Services)进行通信。为了进行身份验证,我们必须向服务的计算机帐户授予权限。例如,如果服务在域 MYDOMAIN 中的服务器 MYSERVER 上运行,它将以“MYDOMAIN\MYSERVER$”的身份进行身份验证。- 到目前为止,我的说法正确吗?
现在我的问题来了:当与同一台机器上的服务通信时,这是否仍然适用?或者,当连接到本地服务时,它会使用“NT AUTHORITY\Network Service”之类的东西进行身份验证吗?
并且:这有可能是从 Windows 2003 到 Windows 2008 的重大变化吗?我们的系统确实存在一个问题,在 W2K3 中,帐户能够连接到本地服务,而只有计算机帐户具有权限。在 W2K8 中,这似乎不再起作用:对本地服务的身份验证现在失败,但对远程计算机仍然有效。
答案1
本地网络服务将验证为NT AUTHORITY\Network Service
如果你希望 SQL 接触本地资源(文件、应用程序、注册表等),请这样做不是授予服务帐户权限。而是将其授予 SQL Server 服务帐户本地团体,它是在安装过程中自动创建的,请参阅 SQL Server 服务帐户: SQLServerMSSQLUser$<hostname>$<instancename>
,其中<hostname>
是运行 SQL Server 的主机的计算机名称,<instancename>
是 SQL Server 实例名称(默认实例名称为 MSSQLSERVER)。
这样,当您更改服务帐户时,您不必更改任何 ACL,因为更改 SQL 服务帐户会将新帐户添加到该组。