Усиление безопасности задач

Использование функции усиления безопасности задач позволит владельцам задач выполнять свои задачи с минимальными необходимыми привилегиями. Обратите внимание, что эта функция включена по умолчанию, и владельцы задач могут вносить дополнительные изменения, используя тип идентификатора безопасности маркера процесса задачи и массив необходимых привилегий задачи.

Тип идентификатора безопасности маркера процесса задачи и массив необходимых привилегий задачи

Указание ProcessTokenSidType на уровне определения задачи позволяет владельцам задач запрашивать выполнение процесса задачи с типом "none" SID или "неограниченным" sid type. Если поле присутствует в определении задачи, проверка гарантирует, что userId задачи содержит имя или соответствующую строку идентификатора безопасности для одной из этих встроенных учетных записей служб операционной системы: NETWORK SERVICE или LOCAL SERVICE.

Тип sid "none" означает, что задача выполняется в процессе, который не содержит идентификатор безопасности маркера процесса (в списке групп маркеров процесса изменения не будет). Идентификатор безопасности учетной записи субъекта-задачи (LocalService/NetworkService) в этом случае имеет полный доступ к маркеру процесса.

Тип неограниченного идентификатора безопасности означает, что идентификатор безопасности задачи будет получен из полного пути к задаче и будет добавлен в список групп маркеров процесса. Например, \Microsoft\Windows\RAC\RACTask, который выполняется в учетной записи локальной службы, идентификатор безопасности задачи является производным от имени Microsoft-Windows-RAC-RACTask, где "-" заменяется на "\", так как "\" является недопустимым символом имени пользователя. Хорошо известное имя группы для идентификатора безопасности задачи будет "NT TASK\<modified full task path>" (domainname\username format). Список управления доступом для маркера процесса по умолчанию (DACL) также будет изменен, чтобы разрешить полный контроль над ИД безопасности задачи и только локальной системной безопасности, а также управление чтением для учетной записи субъекта задачи. "schtasks.exe /showid /tn <полный путь> к задаче" отображает идентификатор безопасности задачи, соответствующий задаче.

При запуске действия задачи, отличной от COM, подсистема планирования регистрируется в учетной записи субъекта задачи, получает маркер процесса и запрашивает список привилегий, имеющихся у маркера, а затем сравнивает его со списком привилегий, указанным в параметре RequiredPrivileges. Если привилегия не указана в последнем, она помечается как SE_PRIVILEGE_REMOVED. Затем исполняемое действие будет запущено с результирующей дескриптором маркера с помощью API CreateProcessAsUser.

При запуске действия задачи COM оно должно быть активировано процессом taskhost.exe. Подсистема планирования запрашивает блок контекста каждой выполняемой taskhost.exe с той же учетной записью, что и начальная задача. Если обнаруживается, что хост-процесс был запущен с надмножеством привилегий, необходимых начальной задаче, эта задача будет размещена в этом процессе. Если такой процесс не обнаруживается, он объединяет сведения о усиление защиты всех задач, выполняемых в узлах задач под учетной записью субъекта-задачи, с указанной маской RequiredPrivileges, а затем запускает новый экземпляр taskhost.exe.

Если Параметр RequiredPrivileges отсутствует в определении задачи, для процесса задачи будут использоваться привилегии по умолчанию для учетной записи субъекта задачи без SeImpersonatePrivilege. Если ProcessTokenSidType отсутствует в определении задачи, по умолчанию используется параметр "неограниченный".

Сведения о регистрации задачи

Сведения о планировщике задач

Контексты безопасности для задач