关于服务登录帐户

基于 Win32 的服务启动时,它会登录到本地计算机。 它可以以以下身份登录:

  • 本地或域用户帐户。
  • LocalSystem 帐户。

登录帐户确定运行时服务的安全标识,即服务的主要安全上下文。 安全上下文决定了服务访问本地和网络资源的能力。 例如,在本地用户帐户的安全上下文中运行的服务无法访问网络资源。 相反,在 Windows 2000 域控制器(DC)上 LocalSystem 帐户的安全上下文中运行的服务将不受限制地访问 DC。 有关详细信息,以及用户帐户和 LocalSystem 之间的权益和限制的讨论,请参阅安全上下文和Active Directory 域服务

最终,安装服务的系统上的管理员可以控制服务的登录帐户。 出于安全原因,某些管理员可能不允许在 LocalSystem 帐户下安装服务。 服务必须能够在域用户帐户下运行。 作为程序员,你可以对服务的登录帐户进行一些控制。 服务安装程序在调用 CreateService 函数以在主机计算机上安装服务时指定服务的登录帐户。 安装程序可以建议默认登录帐户,但它应允许管理员指定实际帐户。

安装程序还可以执行与服务登录帐户相关的以下任务:

  • 安装。 如果安装服务以在用户帐户下运行,则必须在调用 CreateService 之前存在该帐户。 可以使用现有帐户或创建一个作为主计算机安装程序的一部分。 有关详细信息,请参阅 设置服务的用户帐户
  • 身份验证。 如果希望客户端使用 Kerberos 相互身份验证,请向服务的登录帐户注册 SPN。 如果服务在 LocalSystem 帐户下运行,则服务的登录帐户是主计算机的计算机帐户。 有关详细信息,请参阅 Service Principal Names(服务主体名称)。
  • 授予访问权限。 确保运行时服务具有执行其任务所需的访问权限和特权。 这可能需要在各种资源的安全描述符(即目录对象、文件共享等)中设置访问控制条目(ACE),以允许对用户或计算机帐户具有必要的访问权限。 有关详细信息,请参阅 向服务登录帐户授予访问权限。
  • 设置权限。 将特权分配给指定的登录帐户,例如有权以服务身份登录到主计算机。 有关详细信息,请参阅 在主计算机上授予登录即服务权限。

安装服务后,存在与服务登录帐户相关的维护任务。 有关详细信息,请参阅 登录帐户维护任务

  • 密码维护。 对于在用户帐户下运行的服务,必须定期更改密码,并使密码与一个或多个本地服务控制管理器用来启动服务的密码保持同步。
  • SPN 维护。 如果服务登录帐户发生更改,请删除在旧帐户上注册的 SPN,并在新帐户上注册它们。 请注意,安装服务时,域管理员可以更改运行服务的帐户;使用 Win32 函数或计算机管理工具的用户界面。
  • ACE 维护。 如果服务登录帐户发生更改,则需要更新 ACE 和组成员身份,以确保该服务仍可以访问所需的资源。