“本地系统”帐户和“网络服务”帐户之间的区别?

Posted

技术标签:

【中文标题】“本地系统”帐户和“网络服务”帐户之间的区别?【英文标题】:The difference between the 'Local System' account and the 'Network Service' account? 【发布时间】:2010-10-05 08:11:15 【问题描述】:

我编写了一个 Windows 服务,它产生一个单独的进程。此过程创建一个 COM 对象。如果服务在“本地系统”帐户下运行,一切正常,但如果服务在“网络服务”帐户下运行,则外部进程启动但无法创建 COM 对象。 COM 对象创建返回的错误不是标准的 COM 错误(我认为它特定于正在创建的 COM 对象)。

那么,我如何确定“本地系统”和“网络服务”这两个帐户有何不同?这些内置帐户看起来很神秘,似乎没有人知道太多。

【问题讨论】:

【参考方案1】:

由于标准服务帐户的功能存在很多混乱,我将尝试快速了解一下。

首先是实际账户:

LocalService account(首选)

一个与网络服务非常相似的受限服务帐户,旨在运行标准的最低特权服务。然而,与网络服务不同的是,它以匿名用户的身份访问网络。

姓名:NT AUTHORITY\LocalService 帐户没有密码(您提供的任何密码信息都会被忽略) HKCU 代表 LocalService 用户帐户 在本地计算机上具有最低权限 在网络上提供匿名凭据 SID:S-1-5-19 在 HKEY_USERS 注册表项 (HKEY_USERS\S-1-5-19) 下有自己的配置文件

 

NetworkService account

旨在运行标准特权服务的有限服务帐户。此帐户比本地系统(甚至管理员)受限得多,但仍然有权作为机器访问网络(请参阅上面的警告)。

NT AUTHORITY\NetworkService 帐户没有密码(您提供的任何密码信息都会被忽略) HKCU 代表 NetworkService 用户帐户 在本地计算机上具有最低权限 将计算机的凭据(例如MANGO$)提供给远程服务器 SID:S-1-5-20 在 HKEY_USERS 注册表项 (HKEY_USERS\S-1-5-20) 下有自己的配置文件 如果尝试使用它来安排任务,请在选择用户或组对话框中输入NETWORK SERVICE

 

LocalSystem account(危险,不要使用!)

完全受信任的帐户,比管理员帐户更重要。单机上没有什么是这个账号不能做的,它有权作为机器访问网络(这需要Active Directory并授予机器账号对某事的权限)

姓名:.\LocalSystem(也可以使用LocalSystemComputerName\LocalSystem) 帐户没有密码(您提供的任何密码信息都会被忽略) SID:S-1-5-18 没有任何自己的个人资料(HKCU 代表默认用户) 在本地计算机上具有广泛权限 将计算机的凭据(例如MANGO$)提供给远程服务器

 

上面谈到访问网络时,仅指SPNEGO(协商)、NTLM 和 Kerberos,而不是任何其他身份验证机制。例如,以LocalService 运行的处理仍然可以访问互联网。

作为开箱即用的标准帐户运行的一般问题是,如果您修改任何默认权限,您将扩展以该帐户运行的所有内容的集合。因此,如果您将 DBO 授予数据库,则不仅您作为本地服务或网络服务运行的服务可以访问该数据库,而且以这些帐户运行的所有其他内容也可以访问。如果每个开发人员都这样做,计算机将拥有一个服务帐户,该帐户有权执行几乎任何操作(更具体地说,是授予该帐户的所有不同附加权限的超集)。

从安全角度来看,最好始终以您自己的服务帐户运行,该服务帐户具有执行您的服务所需的权限,而不是其他任何事情。但是,这种方法的成本是设置您的服务帐户和管理密码。这是每个应用程序都需要管理的平衡行为。

在您的具体情况下,您可能看到的问题是 DCOM 或 COM+ 激活仅限于给定的一组帐户。在 Windows XP SP2、Windows Server 2003 及更高版本中,激活权限受到很大限制。您应该使用组件服务 MMC 管理单元来检查您的特定 COM 对象并查看激活权限。如果您没有作为机器帐户访问网络上的任何内容,您应该认真考虑使用本地服务(不是本地系统,它基本上是操作系统)。


在 Windows Server 2003 中 you cannot run a scheduled task 为

NT_AUTHORITY\LocalService(又名本地服务帐户),或 NT AUTHORITY\NetworkService(又名网络服务帐户)。

该功能仅通过任务Scheduler 2.0 添加,该任务仅存在于 Windows Vista/Windows Server 2008 及更高版本中。

NetworkService 运行的服务在网络上提供机器凭据。这意味着如果你的计算机被称为mango, it would present as the machine account MANGO$:

【讨论】:

我认为Managed Service Accounts 消除了设置帐户和管理密码(或者将其传递给域管理员或委托人)的一些痛苦。 您好,感谢您的解释。我有一个问题 - 使用本地系统/网络服务帐户是否可以向活动目录中的容器添加/删除条目(前提是活动目录中的容器已授予运行这些 Windows 服务的计算机的完全权限)。请注意,当我作为域用户之一运行该服务时,一切正常,但不是作为本地系统/网络服务(详情***.com/questions/20943436/…)问候 是的,应该。我会直接回答你的问题,因为这个问题比较抽象,是具体的实现。 请注意,“匿名”用户不仅不是“经过身份验证的用户”的成员,也不是 Windows 上“所有人”的成员。在 Windows 网络上,“匿名”只能访问已明确授予“匿名”的资源 - 默认情况下,没有任何权限。 @HakamFostok 我没有很多参考资料。如果我没记错的话,Dan Brown 在他的《Programming Windows Security》一书中介绍了其中的一些内容。 Windows 帮助和 MSDN 文档中有很多内容,但我没有具体的参考。 Jeff Richter 关于编程窗口的书籍,以及 Soloman & Russinovich 的 Inside Windows(第 3 版或第 4 版)也有一些。

以上是关于“本地系统”帐户和“网络服务”帐户之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

Windows 7无法启动Diagnostic Policy Service 怎么办?

如何在 Powershell 中为“网络服务”帐户创建 Windows 服务?

如何使用通过网络服务帐户从Windows服务程序调用的证书?

Azure 中的新存储帐户和经典存储帐户之间的区别

由作为本地系统运行的服务启动的应用程序权限

在域帐户下运行的 WCF 服务