![作为网络服务运行的 Windows 服务 - 它如何进行身份验证?W2K8 中发生了重大变化?](https://linux22.com/image/516244/%E4%BD%9C%E4%B8%BA%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1%E8%BF%90%E8%A1%8C%E7%9A%84%20Windows%20%E6%9C%8D%E5%8A%A1%20-%20%E5%AE%83%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%EF%BC%9FW2K8%20%E4%B8%AD%E5%8F%91%E7%94%9F%E4%BA%86%E9%87%8D%E5%A4%A7%E5%8F%98%E5%8C%96%EF%BC%9F.png)
作为“网络服务”运行的 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 服务帐户会将新帐户添加到该组。