NT AUTHORITY \ SYSTEM VS DOMAIN \ Machine $

时间:2014-08-12 19:26:46

标签: sql-server iis-7

发生了什么事。我在Windows Server 2008 R2上运行Web应用程序。它使用的应用程序池在LocalSystem帐户下运行。该应用程序抱怨“NT Authority \ SYSTEM”无法访问我的数据库,因此我将该用户添加到数据库中。直到昨天,当应用程序开始抱怨“Development \ MyMachineName $”无法访问我的数据库时,一切正常。应用程序池仍在“LocalSystem”帐户下运行。我很困惑为什么它现在改变了身份。

在玩游戏时我最终从sql server安全性中删除了我的用户名。我的sql server 2012实例在Windows身份验证模式下运行。现在我无法连接到sql实例。为了解决这个问题,有人建议使用“psexec -i -s sms”在“NT Authority \ System”帐户下启动管理工作室。当我尝试这个时,管理工作室也尝试使用“Development \ MyMachineName $”登录。我现在想知道“NT Authority \ SYSTEM”身份发生了什么。

预先感谢即将到来的帮助:)

编辑: 我的SQL Server实例与Web应用程序位于同一台计算机上。即它是一台开发机器,其中有iis和sql server运行以进行开发。

2 个答案:

答案 0 :(得分:2)

这里有很多东西,所以希望这会为你澄清一些事情。

  

我在Windows Server 2008 R2上运行Web应用程序。应用程序池它   使用LocalSystem帐户下的运行。该申请被抱怨   “NT Authority \ SYSTEM”无法访问我的数据库,所以我补充说   那个用户到数据库。

如果数据库服务器是IIS服务器的本地服务器,那很好(尽管我仍然会使用域帐户来运行应用程序池)。如果数据库服务器远离IIS服务器,则“本地系统”池尝试验证将转换为使用计算机帐户Domain \ Computer $的网络资源(与网络服务一样)。

  

直到昨天应用程序启动时,一切正常   抱怨“开发\ MyMachineName $”无法访问我的   数据库。应用程序池仍在“LocalSystem”帐户下运行。

我无法从您的问题中判断出这些服务器是否相同,需要进一步澄清。

  

在玩游戏时我最终从sql server中删除了我的用户名   安全。我的sql server 2012实例在windows中运行   验证模式。现在我无法连接到sql实例。修理   这发现有人建议使用“psexec -i -s ssms”来启动   管理工作室在“NT Authority \ System”帐户下。当我试着   这个管理工作室试图登录   “开发\ MyMachineName $”也是如此。我现在想知道发生了什么   以“NT Authority \ SYSTEM”身份。

NT Authority \ System是一种特殊的内置标识,并且不会遍历网络资源,如果需要将其作为计算机帐户Domain \ Computer $进行身份验证。我不知道您的文本中的整个设置,但是要使psexec工作,它必须在数据库服务器上启动ssms,否则它将继续使用计算机帐户。如果您需要访问权限,请成为服务器管理员窗口组的成员并以单用户模式启动SQL Server - 使用Windows身份验证(本地)连接并重新登录。

我们需要一个基础架构图来进一步了解它,但基础是:

  1. 内置身份和帐户无法在网络上进行身份验证,除非他们使用计算机对象。
  2. 内置身份和帐户仅适用于他们所在的服务器和本地服务器。
  3. 向可以访问该计算机的任何人(通过计算机对象)授予权限是非常过度配置权限。
  4. 如果您正在运行某个应用程序,那么您的身份就可以了,因此您可以在整个测试过程中使用您的帐户进行身份验证。虽然单个线程可以具有不同的身份,但大多数应用程序都会继承产生该流程的身份,在这种情况下很可能是您的身份。

答案 1 :(得分:1)

我想我明白了。原因是当连接字符串使用计算机名称时,它会转发" MACHINE $"作为身份,但当它使用localhost时,它转发" SYSTEM"作为身份。