没有网络访问权限的虚拟服务帐户,如 NT AUTHORITY\LocalService
Virtual Service Account without Network Access, like NT AUTHORITY\LocalService
背景:我正在编写一项服务,并希望尽可能少地授予它所需的权限。
虚拟帐户(有时 "Virtual Service Accounts")是 sparsely documented Windows 7/2008R2 的新增功能,它们是自动管理的帐户,适用于需要最低权限但可通过计算机访问网络的服务域环境中的身份。
我的服务不需要网络访问,所以我使用的是 LocalService,但我不喜欢这样的事实:如果我授予对 file/etc 的访问权,我就授予了对所有服务的访问权 运行 作为该帐户。
我可以使用最低权限的帐户吗?
您不需要更改服务 运行 下的帐户; LocalService
可以。
相反,将服务配置为具有 non-zero SID type, i.e., specify either SERVICE_SID_TYPE_UNRESTRICTED
or SERVICE_SID_TYPE_RESTRICTED
. You can do this using the ChangeServiceConfig2() 功能和 SERVICE_CONFIG_SERVICE_SID_INFO
选项。
然后您可以使用名称为 NT SERVICE\myservice
而不是 LocalService
的服务 SID 授予对文件和其他受保护资源的访问权限。这将仅授予对您的服务的访问权限。 (嗯,和任何其他服务共享相同的进程,但大多数第三方服务 运行 在他们自己的进程中。)
对于最低权限,请使用 SERVICE_SID_TYPE_RESTRICTED
。这意味着该服务只能访问明确授予对 Everyone
、服务 SID、登录会话 SID 或 WRITE_RESTRICTED
访问权限的受保护对象。您还应该使用 SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO
选项来减少授予服务的权限;许多服务根本不需要任何特权。 (在那种情况下,您可能会发现需要指定 SE_CHANGE_NOTIFY_NAME
而不是空列表,尽管我可能记错了。)
背景:我正在编写一项服务,并希望尽可能少地授予它所需的权限。
虚拟帐户(有时 "Virtual Service Accounts")是 sparsely documented Windows 7/2008R2 的新增功能,它们是自动管理的帐户,适用于需要最低权限但可通过计算机访问网络的服务域环境中的身份。
我的服务不需要网络访问,所以我使用的是 LocalService,但我不喜欢这样的事实:如果我授予对 file/etc 的访问权,我就授予了对所有服务的访问权 运行 作为该帐户。
我可以使用最低权限的帐户吗?
您不需要更改服务 运行 下的帐户; LocalService
可以。
相反,将服务配置为具有 non-zero SID type, i.e., specify either SERVICE_SID_TYPE_UNRESTRICTED
or SERVICE_SID_TYPE_RESTRICTED
. You can do this using the ChangeServiceConfig2() 功能和 SERVICE_CONFIG_SERVICE_SID_INFO
选项。
然后您可以使用名称为 NT SERVICE\myservice
而不是 LocalService
的服务 SID 授予对文件和其他受保护资源的访问权限。这将仅授予对您的服务的访问权限。 (嗯,和任何其他服务共享相同的进程,但大多数第三方服务 运行 在他们自己的进程中。)
对于最低权限,请使用 SERVICE_SID_TYPE_RESTRICTED
。这意味着该服务只能访问明确授予对 Everyone
、服务 SID、登录会话 SID 或 WRITE_RESTRICTED
访问权限的受保护对象。您还应该使用 SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO
选项来减少授予服务的权限;许多服务根本不需要任何特权。 (在那种情况下,您可能会发现需要指定 SE_CHANGE_NOTIFY_NAME
而不是空列表,尽管我可能记错了。)