哪个服务帐户适合?

时间:2012-01-19 13:50:02

标签: windows security service privileges

我开发了一个.NET Windows服务(在VS2010中),需要:

  • 访问本地网络上的计算机上的共享文件夹(读/写)
  • 写入注册管理机构的HKLM / SOFTWARE部分
  • 在本地文件系统的所有部分中编写文件并创建文件夹(例如,在C:的根目录中)
  • 从网上下载文件(使用http)

从Windows XP SP3开始,我的服务必须适用于所有Windows(PC)操作系统。

问题:我应该为我的服务选择哪个服务帐户?

通常情况下,我会使用“ LocalService ”或“ NetworkService ”,但这些都不会自行授予所有必需的权限。

我应该使用“ LocalSystem ”帐户吗?或者,我是否应该仅为我的服务使用创建一个完整的单独帐户(这应该在安装期间自动完成)?

现在我使用“ NetworkService ”帐户,只是在安装过程中将其添加到adimistrators组,工作正常。但我认为这种方法破坏了有限服务帐户的整体想法,从而带来了安全风险 - 你不同意吗?

2 个答案:

答案 0 :(得分:1)

您不应该使用LOCALSYSTEM。这有太多的力量,所有最佳实践都告诉你不要使用它。

在我看来,您应该创建一个具有适当权限的本地用户作为安装的一部分。这是服务器/数据库产品的一种常见做法。

答案 1 :(得分:0)

听起来你需要分开你的要求。

您提到需要访问其他计算机上的共享,但您还提到将安装此服务的计算机不一定是该域的一部分。

让服务在授予您适当LOCAL权限的用户帐户下执行。然后使用某种类型的替代用户帐户访问您的服务所知道的相应共享,并在需要时进行模拟。

现在,关于在ROOT中编写和创建文件,这将是有趣的。如果启用了UAC,您的服务将需要完全管理权限才能在Windows 7机器上执行此操作。其中,假设在您不直接控制的机器上可能是安全的。要么消除这个要求,要么你必须承认你的服务存在安全风险。