没有networking访问的虚拟服务帐户,如NT AUTHORITY \ LocalService

背景:我正在编写一项服务,并且希望根据需要提供尽可能less的权限。

虚拟帐户(有时候称为“虚拟服务帐户”)是Windows 7 / 2008R2新增function的一个稀疏loggingfunction,它们是自动pipe理的帐户,用于需要最低权限的服务,但在域环境中使用计算机标识访问networking。

我的服务不需要networking访问,所以我使用LocalService,但我不喜欢这样的事实,如果我授予访问文件/ etc我授予访问所有服务运行的帐户。

我可以使用最less的特权帐户吗?

Solutions Collecting From Web of "没有networking访问的虚拟服务帐户,如NT AUTHORITY \ LocalService"

您不需要更改该服务运行的帐户; LocalService

而是将该服务配置为具有非零SID类型 ,即指定SERVICE_SID_TYPE_UNRESTRICTEDSERVICE_SID_TYPE_RESTRICTED 。 您可以使用ChangeServiceConfig2()函数和SERVICE_CONFIG_SERVICE_SID_INFO选项来执行此操作。

然后,您可以使用名称为NT SERVICE\myservice的服务SID而不是LocalService来授予对文件和其他受保护资源的访问权限。 这将只允许访问您的服务。 (那么,和其他服务共享相同的过程,但大多数第三方服务运行在自己的过程。)

为了最小权限,请使用SERVICE_SID_TYPE_RESTRICTED 。 这意味着该服务只能访问明确授予对Everyone ,服务SID,登录会话SID或WRITE_RESTRICTED访问权限的受保护对象。 您还应该使用SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO选项来减少授予该服务的权限; 许多服务根本不需要任何特权。 (在这种情况下,你可能会发现你需要指定SE_CHANGE_NOTIFY_NAME而不是空的列表,尽管我可能会误解。