任务安全强化

使用任务安全强化功能,任务所有者可以使用所需的最低权限运行其任务。 请注意,此功能默认启用,任务所有者可以使用任务进程令牌安全标识符类型和任务所需的特权数组进行进一步调整。

任务进程令牌 SID 类型和任务所需的特权数组

在任务定义级别指定 ProcessTokenSidType 允许任务所有者请求使用“none”SID 类型或“unrestricted”SID 类型运行的任务进程。 如果域存在于任务定义中,则验证可确保任务 UserId 包含其中一个操作系统内置服务帐户的名称或相应的 SID 字符串:“NETWORK SERVICE”或“LOCAL SERVICE”。

SID 类型“none”表示任务在不包含进程令牌 SID 的进程中运行, (不会对进程令牌组列表) 进行更改。 在这种情况下,任务主体帐户 SID (LocalService/NetworkService) 对进程令牌具有完全访问权限。

“不受限制”SID 类型意味着任务 SID 将从完整任务路径派生,并将添加到进程令牌组列表。 例如,在本地服务帐户中运行的 \Microsoft\Windows\RAC\RACTask,任务 SID 派生自名称 Microsoft-Windows-RAC-RACTask,其中“-”替换为“\”,因为“\”是无效的用户名字符。 任务 SID 的已知组名称将是“NT TASK\<modified full task path>” (domainname\username format) 。 进程令牌默认自由访问控制列表 (DACL) 也将修改,以便仅对任务 SID 和本地系统 SID 进行完全控制,并读取对任务主体帐户 SID 的读取控制。 “schtasks.exe /showid /tn <完整任务路径>”将显示与任务相对应的任务 SID。

当非 COM 任务操作启动时,计划引擎会登录到任务主体帐户,获取进程令牌并查询令牌具有的权限列表,然后将该权限与 RequiredPrivileges 中指定的特权列表进行比较。 如果未在后者中指定特权,则会将其标记为SE_PRIVILEGE_REMOVED。 然后,将使用 CreateProcessAsUser API 启动生成的令牌句柄。

当 COM 任务操作启动时,它必须由taskhost.exe进程激活。 计划引擎使用与启动任务相同的帐户查询每个正在运行的taskhost.exe的上下文块。 如果发现主机进程是使用启动任务所需的特权集启动的,则该任务将托管在该进程中。 如果找不到此类进程,它将任务主体帐户下任务主体帐户下运行的所有任务的强化信息与指定的 RequiredPrivileges 掩码相结合,然后启动taskhost.exe的新实例。

如果任务定义中不存在 RequiredPrivileges,则不带 SeImpersonatePrivilege 的任务主体帐户的默认特权将用于任务进程。 如果任务定义中不存在 ProcessTokenSidType ,则“不受限制”将用作默认值。

任务注册信息

关于任务计划程序

任务的安全上下文